使用KeepAlived来实现高可用的DR模型

准备四个节点,如上图,Node01 ~ Node04, 本文默认你会在VMWare上安装Linux并配置相关信息,如果这块内容不清楚,可以参考Linux学习笔记

实验效果

我们会在Node01和Node02上配置LVS,且Node01和Node02是主备关系,Node01是主,Node02是备,Node01挂了,Node02可以自动顶上。Node01和Node02是接收请求的入口,接下来,会将请求以负载均衡的方式请求后端的Node04和Node05服务。

示例图

image

操作步骤 准备Node03和Node04的服务

在Node03和Node04上分别执行如下命令:

yum install -y httpd

安装好httpd以后,在Node03上的如下位置

/var/www/html

新建一个名为index.html页面,并且在index.html中输入如下内容:

<h>from node03</h>

在Node04同样的位置,也建立一个index.html文件,且文件内容为:

<h>from node04</h>

可以通过如下方式快速将Node03的index.html复制到Node04, 在Node03的

var/www/html

目录下,执行

scp index.html root@192.168.98.139:`pwd`

其中

root@192.168.98.139

是对应你的node03的信息,然后就可以把node03的index.html复制到node04的对应位置了。

然后改一下Node04的index.html信息即可。

准备好index.html页面后,因为httpd服务的默认端口是80,所以我们需要打开Node03和Node04上的80端口的访问权限,在Node03和Node04上分别执行如下的两条命令:

firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload

我们可以启动Node04和Node03上的httpd服务,在Node03和Node04上分别执行:

systemctl start httpd

验证是否启动成功

image

配置Node03和Node04内核参数

arp_ignore和arp_announce两个内核参数的配置说明如下:

arp_ignore

定义接收到ARP请求时的响应级别

0:只要本地配置的有相应地址,就给予响应;

1:仅在请求的目标(MAC)地址配置请求到达的接口上的时候,才给予响应;

arp_announce

定义将自己地址向外通告时的通告级别

0:将本地任何接口上的任何地址向外通告;

1:试图仅向目标网络通告与其网络匹配的地址;

2:仅向与本地接口上地址匹配的网络进行通告;

由于,Node03和Node04上要实现对IP的对外隐藏和对内可见,所以我们需要在Node03和Node04上配置如下参数:

echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

PS:CentOS8的默认网卡名称是 ens33

可以通过ifconfig命令查看到

image

配置Node03和Node04的环路接口

要实现IP的对内可见,对外隐藏,还需要在Node03和Node04上配置环路接口, 在Node04和Node03上分别执行

ifconfig lo:3 192.168.98.100 netmask 255.255.255.255

然后在Node03和Node04分别执行

ifconfig

查看是否添加成功

image

自此,Node03和Node04上的所有东西都配置好了。

接下来开始配置Node01和Node02。

安装ipvsadm

在Node01和Node02上执行如下命令

yum install -y ipvsadm 安装keepalived

在CentOS8下,我尝试用yum安装keepalived,配置完毕后,启动了keepalived,但是客户端始终无法请求过来。

无奈,尝试编译安装keepalived,问题解决。

步骤如下,在Node01和Node02上分别执行, 安装一些前置工具

yum install curl gcc openssl-devel libnl3-devel net-snmp-devel make tar ipvsadm -y

然后下载最新的keepalived源码

curl --progress https://www.keepalived.org/software/keepalived-2.2.2.tar.gz | tar xz cd keepalived-2.2.2 ./configure --prefix=http://www.likecs.com/usr/local/keepalived-2.2.2 make make install 修改keepalived配置

在Node01上,先备份默认的keepalived配置,执行如下命令

cd /usr/local/keepalived-2.2.2/etc/keepalived cp keepalived.conf keepalived.conf.bak

然后开始编辑keepalived.conf文件, 将其配置成如下信息

Node01上:

! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.98.100/24 dev ens33 label ens33:3 } } virtual_server 192.168.98.100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 0 protocol TCP real_server 192.168.98.138 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.98.139 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 retry 3 delay_before_retry 3 } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgjd.html