LVS

it2023-10-05  73

1,准备四台net机器 其中两台做主/备调度 别外两台做web机器

主/备调度器安装软件 [root@lvs-keepalived-master ~]# yum -y install ipvsadm keepalived #主 [root@lvs-keepalived-slave ~]# yum -y install ipvsadm keepalived #备

lvs-master # 主 扩展对调度器Nginx健康检查(可选)两台都设置 思路: 让Keepalived以一定时间间隔执行一个外部脚本,脚本的功能是当Nginx失败,则关闭本机的Keepalived #就是主突然坏了就跳转到备上面去,就是靠下面这个脚本判断主是否坏了 [root@proxy-master ~]# vim /etc/keepalived/check_nginx_status.sh #!/bin/bash /usr/bin/curl -I http://localhost &>/dev/null if [ $? -ne 0 ];then #/etc/init.d/keepalived stop systemctl stop keepalived fi [root@proxy-master ~]# chmod a+x /etc/keepalived/check_nginx_status.sh

[root@lvs-keepalived-master ~]# vim /etc/keepalived/keepalived.conf #修改配置文件 ! Configuration File for keepalived

global_defs { router_id lvs-keepalived-master #辅助改为lvs-backup } vrrp_script check_nginx { script “/etc/keepalived/check_nginx_status.sh” interval 5 }

vrrp_instance VI_1 { state MASTER #辅助改个名字 interface ens33 #VIP绑定接口 virtual_router_id 80 #VRID 同一组集群,主备一致 priority 100 #本节点优先级,辅助改为50 advert_int 1 #检查间隔,默认为1s authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.147.101/32 # 可以写多个vip } track_script { check_nginx } }

virtual_server 172.16.147.101 80 { #LVS配置 delay_loop 3 lb_algo rr #LVS调度算法 lb_kind DR #LVS集群模式(路由模式) nat_mask 255.255.255.0 protocol TCP #健康检查使用的协议 real_server 172.16.147.153 80 { #web1 的IP地址 weight 1 inhibit_on_failure #当该节点失败时,把权重设置为0,而不是从IPVS中删除 TCP_CHECK { #健康检查 connect_port 80 #检查的端口 connect_timeout 3 #连接超时的时间 } } real_server 172.16.147.156 80 { #web2的IP地址 weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 connect_port 80 } } } 注:必须先启动nginx,再启动keepalived 如后面还有机器做高可用备份就添加以下内容,具体添加在那个位置对这上面的主比较

vrrp_script check_nginx { script “/etc/keepalived/check_nginx_status.sh” interval 5 }

TCP_CHECK { connect_timeout 3 connect_port 80 }

lvs-slave #备 [root@lvs-keepalived-slave ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived

global_defs { router_id lvs-keepalived-slave #和主的名字不一样 }

vrrp_instance VI_1 { state BACKUP #和主的名字不一样 interface ens33 nopreempt #不抢占资源 virtual_router_id 80 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.147.101/32 #vim } } virtual_server 172.16.147.101 80 { delay_loop 3 lb_algo rr lb_kind DR nat_mask 255.255.255.0 protocol TCP real_server 172.16.147.153 80 { #web1 weight 1 inhibit_on_failure TCP_CHECK { connect_port 80 connect_timeout 3 } } real_server 172.16.147.156 80 { #web2 weight 1 inhibit_on_failure TCP_CHECK { connect_timeout 3 connect_port 80 } } }

启动KeepAlived(主备均启动) [root@lvs-keepalived-master ~]# systemctl start keepalived [root@lvs-keepalived-master ~]# systemctl enable keepalived #这个是开机启动

[root@lvs-keepalived-master ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.147.101:80 rr persistent 20 -> 172.16.147.153:80 Route 1 0 0 -> 172.16.147.156:80 Route 0 0 0

web服务器配置 所有RS配置(web1 ,web2) 配置好网站服务器,测试所有RS [root@test-nginx1 ~]# yum install -y nginx [root@test-nginx2 ~]# yum install -y nginx 临时添加 [root@real-nginx1 ~]# ip addr add dev lo 172.16.147.200/32 #在lo接口上绑定VIP 临时更改 [root@real-nginx1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #忽略arp广播 [root@real-nginx1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包 永久添加 [root@test-nginx1 ~]# echo “ip addr add dev lo 172.16.147.101/32” >> /etc/rc.local 永久更改 [root@test-nginx1 ~]# echo “net.ipv4.conf.all.arp_ignore = 1” >> /etc/sysctl.conf [root@test-nginx1 ~]# echo “net.ipv4.conf.all.arp_announce = 2” >> /etc/sysctl.conf [root@test-nginx1 ~]# sysctl -p

[root@test-nginx1 ~]# echo “web1…” >> /usr/share/nginx/html/index.html [root@test-nginx1 ~]# systemctl start nginx [root@test-nginx1 ~]# chmod +x /etc/rc.local

然后用vip 访问网页就ok了

最新回复(0)