前言
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。
Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。它使用VRRP(Virtual Router Redundancy Protocol)协议来实现服务器之间的冗余和故障恢复,确保服务的连续性。Keepalived还可以配合其他负载均衡软件(如LVS)一起使用,以提供更可靠的高可用性解决方案。
LVS(Linux Virtual Server)是一种用于构建高性能和可扩展的负载均衡集群的软件。LVS使用IP负载均衡技术将客户端的请求分发到多个后端服务器上,提高了整个系统的处理能力和吞吐量。LVS支持多种负载均衡算法(如轮询、加权轮询、最少连接等),可以根据实际需求灵活配置。LVS的工作模式有多种,其中DR(Direct Routing)模式是一种常用的模式,它通过修改数据包的目的MAC地址实现请求的转发,提高了转发的效率。
综合起来,使用Keepalived+LVS(dr)的解决方案可以实现高可用性和负载均衡的效果。Keepalived负责监控服务器的健康状态,并在主服务器发生故障时自动切换到备份服务器,保证服务的连续性。而LVS负责将客户端的请求分发到多个后端服务器上,提高系统的性能和可扩展性。通过结合使用这两个软件,可以构建出稳定可靠的高可用性和负载均衡的系统架构。
一、实验拓扑图
按要求准备好下列的设备
二、配置LVS(dr)模式
1、配置2台web节点
##安装nginx yum -y install epel yum -y install nginx ##分别书写两台web服务器的测试页面 echo nginx1 > /usr/share/nginx/html/index.html echo nginx2 > /usr/share/nginx/html/index.html ##启动nginx systemctl start nginx
测试
2、调整web节点的APR参数
##调整ARP参数 vim /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 ##是它生效 sysctl -p
3、配置web节点虚拟IP
##配置虚拟IP地址 cd /etc/sysconfig/network-scripts/ cp ifcfg-lo ifcfg-lo:0 vim ifcfg-lo:0 ##插入 DEVICE=lo:0 IPADDR=192.168.115.200 NETMASK=255.255.255.255 ONBOOT=yes NAME=loopback:0 ##重启网卡并添加路由 systemctl restart network route add -host 192.168.115.200/32 dev lo:0
4、配置主调配器192.168.115.128
##设置APR参数 vim /etc/sysctl.conf ##插入 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects=0 net.ipv4.conf.ens33.send_redirects = 0 ##是之生效 sysctl -p ##配置网卡 cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-ens33:0 ##插入 TYPE=Ethernet BOOTPROTO=static NAME=ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.115.200 PREFIX=24 ##安装ipvsadm yum -y install ipvsadm ##加载查看模块 modprobe ip_vs lsmod |grep ip_vs ##启动ipvsadm touch /etc/sysconfig/ipvsadm systemctl start ipvsadm.service ##添加策略 ipvsadm -A -t 192.168.115.200:80 -s rr ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.131:80 -g ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.134:80 -g ##保存策略 ipvsadm-save > /etc/sysconfig/ipvsadm ##重启网卡 systemctl restart network
浏览器验证
三、配置调配器热备
1、来到我们的负载调度器在两台调度器上下载keepalived
192.168.115.128作为主
192.168.115.131作为备
yum -y install keepalived
2、配置主的keepalived
vim /etc/keepalived/keepalived.conf
####此处我就设置了一个虚拟IP192.168.115.200一个虚拟IP对应着我2个真实的web服务器IP ! 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_DEVEL1 ##名字(主从不要一样) 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 ##主从 id要一致 priority 100 ##优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.115.200 ###虚拟IP } } virtual_server 192.168.115.200 80 { ##虚拟ip,下面对应的是2台web的真实ip delay_loop 6 lb_algo rr ##轮询模式 lb_kind DR ##这里我们是dr模式下进行的,所以设置为dr persistence_timeout 50 protocol TCP real_server 192.168.115.131 80 { ##web1真实IP weight 1 SSL_GET { url { path / } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.115.134 80 { ##web2真实IP weight 1 SSL_GET { url { path / } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } #########如果想配置多个虚拟IP,那么参照上面的方法照猫画虎###########
3、配置从负载调配器(建议使用scp把主的传输过来后修改比较省事)安装ipvsadm服务
vim /etc/keepalived/keepalived.conf
! 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_DEVEL2 ###服务名 vrrp_skip_check_adv_addr #vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state BACKUP ###角色 interface ens33 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.115.200 } } virtual_server 192.168.115.200 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.115.131 80 { weight 1 SSL_GET { url { path / } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.115.134 80 { weight 1 SSL_GET { url { path / } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
启动分别启动主备的keepalived并查看主备的ipvsadm策略,ip
1. ##启动 2. systemctl start keepalived 3. ##查看 4. ipvsadm -Ln
主ip
策略
备IP
策略
在这里说明一下,只要配置的keepalived是对的,启动keepalived后会自己根据配置文件生成策略
4、页面测试
这里访问是没什么问题的,并且是轮询,我们抓个包看看只有200的地址符合DR模式
四、测试
宕掉主调配器,观查是否还能实现轮询
查看备调度器IP,IP漂移说明主备生效了
访问网页,可以访问并且轮询正常
抓包,与之前一样
ok,配置成功
总结
这里主要理解的是keepalived与ipvsadm的关系;一般情况下启动了keepalived后ipvsadm也会启动,并且会根据keepalived的文件生成策略;相对而言keepalived的配置文件很长需要理解记忆,可以参考我上面的配置,这里主要就是理解配置文件,理清思路,在本实验中配置了大量的IP地址容易混淆。