返回列表 发帖

CentOS8_Keepalived双机热备+Apache

Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断调度服务器、节点服务器的可用性,及时隔离故障主机并替换为新的服务器,当故障主机恢复后将其重新加入群集。

Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备份功能。
VRRP是针对调度器的一种备份解决方案——由多台调度器组成一个热备组,通过共用的虚拟IP 地址对外提供服务;
每个热备组内同一时刻只有一台调度器提供服务,其他调度器则处于冗余状态,若当前的调度器失效了,其他调度器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。

热备组内的每台调度器都可能成为主调度器,虚拟IP地址可以在热备组内的路由器之间进行转移,所以也称之为漂移IP地址。

图片1.png


主调度器master:192.168.168.154/24
备用调度器 slave::192.168.168.155/24

实验中,设置了一个(VIP)虚拟IP地址:(可以有多个的)
VIP:192.168.168.180



master

[root@centos8 ~]# yum -y install keepalived
[root@centos8 ~]# yum -y install net-tools


[root@centos8 ~]# keepalived -v
Keepalived v2.0.10 (11/12,2018)


修改master的keepalived的配置文件:
cat >/etc/keepalived/keepalived.conf<< EOF
! Configuration File for keepalived
global_defs {
        router_id Master  ## 每个参与热备的调度器都要指定不同的名字
}
vrrp_instance VI_1 {
        state MASTER  ## 热备状态,MASTER表示主调度器
        interface ens160  ## 承载VIP地址的物理接口
        virtual_router_id 1  ## 虚拟路由器的ID,每个热备组保持一致
        priority 100  ## 优先级,数值越大,优先级越高
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 888   ## 自定义密码,密码要一致
                        }
        virtual_ipaddress {
                        192.168.168.180   ## 指定漂移IP地址
                        }
                }
EOF


[root@centos8 ~]# systemctl start keepalived
[root@centos8 ~]# systemctl enable keepalived


验证:
[root@centos8 ~]# ip addr show dev ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:46:79:df brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.154/24 brd 192.168.168.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.168.180/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::fa3a:4c71:c52e:a740/64 scope link noprefixroute
       valid_lft forever preferred_lft forever











slave

[root@python ~]# dnf -y install keepalived net-tools

[root@python ~]# keepalived -v
Keepalived v2.0.10 (11/12,2018)


修改slave的keepalived的配置文件:
cat >/etc/keepalived/keepalived.conf<< EOF
! Configuration File for keepalived
global_defs {
                router_id Slave1  ## 每个参与热备的调度器都要指定不同的名字
}

vrrp_instance VI_1 {
        state SLAVE  ## 热备状态,SLAVE表示备用调度器
        interface ens160  ## 承载VIP地址的物理接口
        virtual_router_id 1  ## 虚拟路由器的ID,每个热备组保持一致
        priority 99  ## 优先级,要低于主调度器
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 888   ## 自定义密码,密码要一致
                        }
        virtual_ipaddress {
                        192.168.168.180   ## 指定漂移IP地址
                        }
                }
EOF


[root@python ~]# systemctl start keepalived
[root@python ~]# systemctl enable keepalived


验证:
[root@python ~]# ip addr show dev ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:e4:fe:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.155/24 brd 192.168.168.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.168.180/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::5b05:3e25:3423:f5d6/64 scope link noprefixroute
       valid_lft forever preferred_lft forever



笺注:
master、slave都再重启一次keepalived服务:
systemctl restart keepalived





客户端远程测试调度服务器的双机热备切换功能:
图片2.png

实验证明,无论是master关闭了网卡,还是slave关闭了网卡,客户端都可以与虚拟IP地址通讯;在切换时,可能有几秒钟的不通,但会自己恢复正常。

当客户端访问虚拟IP地址时,所有的请求(包括TCP端口的请求)都会去到活跃状态的调度服务器上;当活跃状态的调度服务器的keepalived服务不能提供服务时,客户端的访问请求才会被切换到备用的调度服务器上。








笺注:Keepalived和Nginx、Apache是可以安装在一台服务器上的,从而实现Nginx、Apache的双机热备。

Keepalived+Apache
图片3.png
注释:当客户端访问虚拟IP的Web网站时,相当于访问处于活跃状态的调度服务器的Web网站。



修改master的Apache的默认首页内容:
[root@centos8 ~]# echo 'master' > /var/www/html/index.html

修改slave的Apache的默认首页内容:
[root@python ~]# echo 'slave' > /var/www/html/index.html

两台服务器的防火墙配置(firewalld):
systemctl restart firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload



可以看到客户端访问虚拟IP的TCP 80端口时,默认是去到master
图片4.png


master关闭Apache服务:
[root@centos8 ~]# systemctl stop httpd


master关闭Apache服务,其实并不能触发keepalived的切换:
图片5.png


master关闭keepalived服务:
[root@centos8 ~]# systemctl stop keepalived


可以看到master关闭keepalived服务后,才会触发keepalived的切换
图片6.png




相关文章:
CentOS8_Keepalived双机热备+MariaDB
CentOS8_Keepalived+LVS

Keepalived双机热备+Nginx

返回列表