星凯网站建设,制作照片视频的软件,龙岗网站设计市场,wordpress 图书主题1、简介 LVS和Keepalived是Linux操作系统下实现高可用的负载均衡解决方案的重要工具。通过协同工作#xff0c;它们能够实现一种高性能、高可用的负载均衡服务#xff0c;使得用户能够透明地访问到集群中的服务。同时#xff0c;它们还提供了强大的监控和故障切换功能#…1、简介 LVS和Keepalived是Linux操作系统下实现高可用的负载均衡解决方案的重要工具。通过协同工作它们能够实现一种高性能、高可用的负载均衡服务使得用户能够透明地访问到集群中的服务。同时它们还提供了强大的监控和故障切换功能保证了系统的稳定性和可靠性。因此对于需要实现负载均衡和高可用性的系统来说LVS和Keepalived无疑是一个值得考虑的选择。 2、keepalived配置说明
2.1虚拟服务器的配置结构 virtual_server IP port { ... real_server { ... } real_server { ... } … } 2.2 虚拟服务器的配置 virtual_server IP port { #VIP和PORT delay_loop INT #检查后端服务器的时间间隔 lb_algo rr|wrr|lc|wlc|lblc|sh|dh #定义调度方法 lb_kind NAT|DR|TUN #集群的类型,注意要大写 persistence_timeout INT #持久连接时长 protocol TCP|UDP|SCTP #指定服务协议,一般为TCP sorry_server IPADDR PORT #所有RS故障时备用服务器地址 real_server IPADDR PORT { #RS的IP和PORT weight INT #RS权重 notify_up STRING|QUOTED-STRING #RS上线通知脚本 notify_down STRING|QUOTED-STRING #RS下线通知脚本 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { ... } #定义当前主机健康状态检测方法 } } #注意:括号必须分行写,两个括号写在同一行,如: }} 会出错 2.3 应用层检测HTTP_GET或SSL_GET HTTP_GET|SSL_GET { url { path URL_PATH #定义要监控的URL status_code INT #判断上述检测机制为健康状态的响应码一般为 200 } connect_timeout INTEGER #客户端请求的超时时长, 相当于haproxy的timeout server nb_get_retry INT #重试次数 delay_before_retry INT #重试之前的延迟时长 connect_ip IP ADDRESS #向当前RS哪个IP地址发起健康状态检测请求 connect_port PORT #向当前RS的哪个PORT发起健康状态检测请求 bindto IP ADDRESS #向当前RS发出健康状态检测请求时使用的源地址 bind_port PORT #向当前RS发出健康状态检测请求时使用的源端口 } 2.4 传输层检测TCP_CHECK TCP_CHECK { connect_ip IP ADDRESS #向当前RS的哪个IP地址发起健康状态检测请求 connect_port PORT #向当前RS的哪个PORT发起健康状态检测请求 bindto IP ADDRESS #发出健康状态检测请求时使用的源地址 bind_port PORT #发出健康状态检测请求时使用的源端口 connect_timeout INTEGER #客户端请求的超时时长 #等于haproxy的timeout server } 3、 实现LVSkeepalived的高可用性负载均衡集群
3.1 实验环境 主机名 IP VIP 角色 Ka1 192.168.182.145 高可用负载均衡器 Ka2 192.168.182.146 高可用负载均衡器 Webserver1 192.168.182.151 192.168.182.100 后端服务器 Webserver2 192.168.182.152 192.168.182.100 后端服务器 client 192.168.182.154 客户端 3.2 准备web服务器并使用脚本绑定VIP至web服务器lo网卡 #准备两台后端服务器主机 [rootwebserver1 ~]# echo webserver1 - 192.168.182.151 /var/www/html/index.html [rootwebserver1 ~]# systemctl start httpd.service [rootwebserver2 ~]# echo webserver2 - 192.168.182.152 /var/www/html/index.html [rootwebserver2 ~]# systemctl start httpd.service #后端服务器做arp抑制 [rootwebserver1 ~]# vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore1 net.ipv4.conf.all.arp_announce2 net.ipv4.conf.lo.arp_ignore1 net.ipv4.conf.lo.arp_announce2 [rootwebserver2 ~]# vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore1 net.ipv4.conf.all.arp_announce2 net.ipv4.conf.lo.arp_ignore1 net.ipv4.conf.lo.arp_announce2 #使用ipvsadm工具 [rootka2 ~]# dnf install ipvsadm [rootka1 ~]# vim /etc/keepalived/keepalived.conf virtual_server 192.168.182.100 80 { delay_loop 6 #检查后端服务器的时间间隔 lb_algo wrr #定义调度方法 lb_kind DR #集群的类型,注意要大写 protocol TCP #指定服务协议 real_server 192.168.182.151 80 { #真实服务器的IP和端口 weight 1 HTTP_GET { url { path / #重试之前的延迟时长 status_code 200 #判断上述检测机制为健康状态的响应码一般为 200 } connect_timeout 3 #客户端请求的超时时长, 相当于haproxy的timeout server nb_get_retry 2 #重试次数 delay_before_retry 2 #重试之前的延迟时长 } } real_server 192.168.182.152 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 2 delay_before_retry 2 } } } [rootka1 ~]# systemctl restart keepalived.service [rootka2 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.182.100:80 wrr - 192.168.182.151:80 Route 1 0 0 - 192.168.182.152:80 Route 1 0 0 Ka1和ka2主机相同配置
3.3 模拟测试 [rootwebserver1 ~]# systemctl stop httpd.service [rootka2 ~]# ipvsadm -Ln #它会自动将故障服务器剔除 IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.182.100:80 wrr - 192.168.182.152:80 Route 1 0 0 #修复好后自动添加回来