CentOS7 部署Keepalived双机热备+LVS负载均衡群集

    科技2022-07-17  103

    部署 Keepalived 双机热备+LVS 负载均衡群集

    一、Keepalived 概述1.Keepalived 的热备方式 二、部署 Keepalived 双机热备1.配置调度服务器1)安装支持软件2)安装 httpd 服务3)编辑 Keepalived 主配置文件4)启用服务 2.验证1)客户机 ping 漂移 IP 进行测试2)客户机访问 http 进行验证 三、部署 Keepalived 双机热备+LVS 负载均衡群集1.配置调度服务器1)在调度器上删除 httpd 服务2)修改 Keepalived 主配置文件3)加载系统内核的服务模块4)查看系统模块运行状态5)开机启动时加载 ip_vs 模块 2.配置 LVS-DR 群集策略1)调整 /proc 内核参数2)配置 LVS-DR 群集策略 3.Web 服务器池配置1)Web1 服务器,Web2 服务器同样配置2)添加路由3)调整 /proc 内核参数,关闭 ARP 响应4)安装 httpd 服务 4.测试 LVS+Keepalived 高可用集群1)验证 LVS 负载均衡是否正常2)验证 Keepalived 双机热备是否正常

    一、Keepalived 概述

    Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能——判断 LVS 负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。Keepalived 的官方网站位于:http://www.keepalived.org/,在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用。

    1.Keepalived 的热备方式

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

    二、部署 Keepalived 双机热备

    准备工作:

    主机名操作系统IP地址担任角色masterCentOS7192.168.1.1主调度器backupCentOS7192.168.1.2辅调度器

    1.配置调度服务器

    主调度器与辅调度器操作一致

    1)安装支持软件

    挂光盘,并配置yum源

    [root@master ~]# yum -y install keepalived ipvsadm [root@master ~]# systemctl enable keepalived

    2)安装 httpd 服务

    [root@master ~]# yum -y install httpd 为主调度器设置网页: [root@master ~]# echo "<h1>This is master</h1>" > /var/www/html/index.html 为辅调度器设置网页: [root@backup ~]# echo "<h1>This is backup</h1>" > /var/www/html/index.html

    3)编辑 Keepalived 主配置文件

    主调度器上操作:

    [root@master ~]# vim /etc/keepalived/keepalived.conf 将原有数据删除,写入以下数据: global_defs { router_id 1 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 1 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.188 } } 辅调度器上要稍作修改: router_id 1 改为 router_id 2 state MASTER 改为 state BACKUP priority 100 改为 priority 99 其他一致即可

    4)启用服务

    [root@master ~]# systemctl start keepalived [root@master ~]# systemctl start httpd

    查看 VIP 是否在此服务器

    [root@master ~]# ip a

    主调度器: 辅调度器:

    因辅调度器优先级低于主调度器,所以虚拟 IP 没在辅调度器,但当主调度器出现故障时,虚拟 IP 就会漂移到备辅调度器上来供外界访问

    2.验证

    此期间反复断开、连接主服务器网卡进行查看

    1)客户机 ping 漂移 IP 进行测试

    如果有中断很短时间即恢复。说明双机热备生效

    2)客户机访问 http 进行验证

    如果显示不同的内容说明生效 开启主调度器网卡再次访问:

    三、部署 Keepalived 双机热备+LVS 负载均衡群集

    可使用实验一环境进行微调: 加两台Centos7机器

    主机名操作系统IP地址web-1CentOS7192.168.1.3web-2CentOS7192.168.1.4

    1.配置调度服务器

    主调度器和辅调度器一致:

    1)在调度器上删除 httpd 服务

    [root@master ~]# systemctl stop httpd [root@master ~]# yum -y remove httpd

    2)修改 Keepalived 主配置文件

    [root@master ~]# vim /etc/keepalived/keepalived.conf 在后一行添加: virtual_server 192.168.1.188 80 { delay_loop 15 lb_algo rr lb_kind DR protocol TCP real_server 192.168.1.3 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } real_server 192.168.1.4 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 4 } } }

    3)加载系统内核的服务模块

    [root@master ~]# modprobe ip_vs

    4)查看系统模块运行状态

    [root@master ~]# lsmod | grep ip_vs

    5)开机启动时加载 ip_vs 模块

    [root@master ~]# echo "modprobe ip_vs" >> /etc/rc.local [root@master ~]# systemctl restart keepalived

    2.配置 LVS-DR 群集策略

    因为 Keepalived 也是采用虚接口方式,为了避免地址冲突,就不做绑定了

    主调度器与辅调度器都要做

    1)调整 /proc 内核参数

    [root@master ~]# cat <<END >> /etc/sysctl.conf net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 END [root@master ~]# sysctl -p

    2)配置 LVS-DR 群集策略

    [root@master ~]# ipvsadm -A -t 192.168.1.188:80 -s rr [root@master ~]# ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.3 -g -w 1 [root@master ~]# ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.4 -g -w 1 [root@master ~]# ipvsadm-save [root@master ~]# systemctl enable ipvsadm [root@master ~]# ipvsadm -ln

    3.Web 服务器池配置

    挂光盘,并配置yum源

    1)Web1 服务器,Web2 服务器同样配置

    [root@web-1 ~]# cat <<END >> /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.1.188 NETMASK=255.255.255.255 ONBOOT=yes END [root@web-1 ~]# systemctl restart network [root@web-1 ~]# ip a

    2)添加路由

    [root@web-1 ~]# yum -y install net-tools #安装路由工具 [root@web-1 ~]# echo "route add -host 192.168.1.188 dev lo:0" >> /etc/rc.local #添加到开机自运行 [root@web-1 ~]# route add -host 192.168.1.188 dev lo:0 #临时添加 [root@web-2 ~]# route -n

    3)调整 /proc 内核参数,关闭 ARP 响应

    [root@web-1 ~]# cat <<END >> /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 END [root@web-1 ~]# sysctl -p

    4)安装 httpd 服务

    Web1 Web2操作步骤一致

    [root@web-1 ~]# yum -y install httpd Web1测试页面: [root@web-1 ~]# echo "This is web1" > /var/www/html/index.html Web2测试页面: [root@web-2 ~]# echo "This is web2" > /var/www/html/index.html [root@web-1 ~]# systemctl enable httpd [root@web-1 ~]# systemctl start httpd [root@web-1 ~]# netstat -anpt | grep 80

    4.测试 LVS+Keepalived 高可用集群

    1)验证 LVS 负载均衡是否正常

    在客户机浏览器访问 192.168.1.188,查看是否能够切换网页 或者使用 for 循环语句来进行测试:

    [root@backup ~]# for i in $(seq 10);do curl http://192.168.1.188;done

    2)验证 Keepalived 双机热备是否正常

    关闭 LVS 主调度器,客户机是否能够正常访问网页

    Processed: 0.011, SQL: 8