700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > LVS+Keepalived-DR模式负载均衡高可用集群

LVS+Keepalived-DR模式负载均衡高可用集群

时间:2022-06-12 00:00:31

相关推荐

LVS+Keepalived-DR模式负载均衡高可用集群

LVS+Keepalived DR模式负载均衡+高可用集群架构图

工作原理:

Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能。

VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案。由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失败,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

实验环境:

nfs共享存储本实验不再重复做,需要的看LVS基于DR模式搭建负载均衡群集

搭建

WEB1、WEB2 (操作相同)

1 [root@WEB1~]#systemctl stop firewalld 2 [root@WEB1~]#setenforce 0 3 [root@WEB1~]#yum -y install httpd 4 [root@WEB1~]#sed -i '/#S/ s/#//' /etc/httpd/conf/httpd.conf 5 [root@WEB1~]#systemctl start httpd && systemctl enable httpd 6 [root@WEB1~]#echo "WEB1" > /var/www/html/index.html 7 8 [root@WEB2~]#echo "WEB2" > /var/www/html/index.html 9 10 [root@WEB1~]#cat > /opt/lvs-dr <<EOF11 #!/bin/bash12 # lvs-dr13 VIP="192.168.1.100"14 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.25515 /sbin/route add -host $VIP dev lo:016 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore17 echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce18 echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore19 echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce" 20 EOF21 22 [root@WEB1~]#chmod +x /opt/lvs-dr23 [root@WEB1~]#/opt/lvs-dr24 [root@WEB1~]#ip a25 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 126link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:0027inet 127.0.0.1/8 scope host lo28 valid_lft forever preferred_lft forever29inet 192.168.1.100/32 brd 192.168.1.100 scope global lo:030 valid_lft forever preferred_lft forever31inet6 ::1/128 scope host 32 valid_lft forever preferred_lft forever33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100034link/ether 00:50:56:37:26:bf brd ff:ff:ff:ff:ff:ff35inet 192.168.1.33/24 brd 192.168.1.255 scope global ens3336 valid_lft forever preferred_lft forever37inet6 fe80::e07f:1562:ee11:41de/64 scope link 38 valid_lft forever preferred_lft forever

负载均衡主(LB-M)(标红地方需要注意)

1 [root@LB-M~]#systemctl stop firewalld 2 [root@LB-M~]#setenforce 0 3 [root@LB-M~]#modprobe ip_vs 4 [root@LB-M~]#cat /proc/net/ip_vs #查看Linux内核lvs版本 5 IP Virtual Server version 1.2.1 (size=4096) 6 Prot LocalAddress:Port Scheduler Flags 7 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 8 9 [root@LB-M~]#yum -y install ipvsadm keepalived10 [root@LB-M~]#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.old11 [root@LB-M~]#vim /etc/keepalived/keepalived.conf12 ! Configuration File for keepalived13 14 global_defs {#全局配置15notification_email {16 smbands@#邮件告警配置,写你的邮箱地址,一行一个17 }18 notification_email_from root@LVS-master19 smtp_server 127.0.0.1#邮件服务器地址,这个写个本地回环就行,其他不用动20 smtp_connect_timeout 3021 router_idLVS_DEVEL_1 #路由ID,必须唯一22 !vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播,全局配置下vrrp开头用叹号注释掉,不然每次启动iptables防火墙会自动添加drop

23 24 }25 26 vrrp_instance VI_1 {27stateMASTER #主就写MASTER 从的话就写BACKUP或SLAVE28interfaceens33 #注意看好自己的网卡名称29virtual_router_id 5130priority180 #优先级,这个选项是区分主备的,数值高的优先为主,为外部提供服务31advert_int 232authentication {33 auth_type PASS34 auth_pass 111135}36virtual_ipaddress {37192.168.1.100 #设置好虚拟IP38}39 }40 41 virtual_server192.168.1.100 80{#这个段是虚拟服务段,里面包括realserver,就是WEB服务器,

42delay_loop 243lb_algo rr44lb_kindDR #DR为直接路由模式45nat_mask 255.255.255.046persistence_timeout300 #会话保持时间配置,默认为300,但是测试时不易看出轮询结果是否成功,测试轮询时设置为047protocol TCP48 49real_server192.168.1.33 80{#WEB服务器的IP+端口,隔一个空格键50weight 1 #设置权重,一般性能高的服务器权重相对其他性能一般的服务器权重高,性能高,处理能力强,权重可以分配高一点51 TCP_CHECK {52 connect_timeout 353 connect_port 8054 nb_get_retry 355 delay_before_retry 356 }57}58 59 60real_server192.168.1.44 80{#同上61 weight 162 TCP_CHECK {63 connect_timeout 364 connect_port 8065 nb_get_retry 366 delay_before_retry 367 }68}69 70 }71 72 [root@LB-M~]#systemctl start keepalived73 [root@LB-M~]#ip a74 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 175link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:0076inet 127.0.0.1/8 scope host lo77 valid_lft forever preferred_lft forever78inet6 ::1/128 scope host 79 valid_lft forever preferred_lft forever80 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100081link/ether 00:50:56:32:81:c6 brd ff:ff:ff:ff:ff:ff82inet 192.168.1.11/24 brd 192.168.1.255 scope global ens3383 valid_lft forever preferred_lft forever84inet 192.168.1.100/32 scope global ens33#keepalived启动后,就会出现一个虚拟IP,但是从服务器不会有,除非主服务器挂掉,从服务器升为主服务器。85 valid_lft forever preferred_lft forever86inet6 fe80::59d8:c166:1834:687a/64 scope link 87 valid_lft forever preferred_lft forever

88[root@LB-M~]#ipvsadm -ln

89 IP Virtual Server version 1.2.1 (size=4096)

90 Prot LocalAddress:Port Scheduler Flags

91 -> RemoteAddress:Port Forward Weight ActiveConn InActConn

92 TCP192.168.1.100:80 rr

93 ->192.168.1.33:80Route 1 0 0

94 ->192.168.1.44:80Route 1 0 0

负载均衡从(LB-S)(标红地方需要注意)

1 [root@LB-S~]#systemctl stop firewalld 2 [root@LB-S~]#setenforce 0 3 [root@LB-S~]#modprobe ip_vs 4 [root@LB-S~]#cat /proc/net/ip_vs 5 IP Virtual Server version 1.2.1 (size=4096) 6 Prot LocalAddress:Port Scheduler Flags 7 -> RemoteAddress:Port Forward Weight ActiveConn InActConn 8 9 [root@LB-S~]#yum -y install ipvsadm keepalived10 [root@LB-S~]#scp 192.168.1.11:/etc/keepalived/keepalived.conf /etc/keepalived/11 [root@LB-S~]#vi /etc/keepalived/keepalived.conf12 ! Configuration File for keepalived13 14 global_defs {#全局配置15 notification_email {16smbands@#邮件告警配置,写你的邮箱地址,一行一个17 }18 notification_email_from root@LVS-master19 smtp_server 127.0.0.120 smtp_connect_timeout 3021router_id LVS_DEVEL_2 #路由ID必须唯一22! vrrp_strict #全局配置下vrrp开头加叹号注释23 24 }25 26 vrrp_instance VI_1 { 27stateSLAVE #从服务器写SLAVE或BACKUP28interfaceens33 #看好网卡名称29virtual_router_id 5130priority100 #从服务器上的优先级不能高于主31advert_int 232authentication {33 auth_type PASS34 auth_pass 111135}36virtual_ipaddress {37192.168.1.100 #配好虚拟IP38}39 }40 41 virtual_server192.168.1.100 80{#虚拟服务器段42delay_loop 243lb_algo rr44lb_kindDR#直接路由模式45nat_mask 255.255.255.046persistence_timeout 300 #会话保持时间配置,默认为300,但是测试时不易看出轮询结果是否成功,测试轮询时设置为047protocol TCP48 49real_server192.168.1.33 80{#web1的IP50weight 1 #权重51 TCP_CHECK {52 connect_timeout 353 connect_port 8054 nb_get_retry 355 delay_before_retry 356 }57}58 59 60real_server192.168.1.44 80{#web2的IP61weight 1#权重62 TCP_CHECK {63 connect_timeout 364 connect_port 8065 nb_get_retry 366 delay_before_retry 367 }68}69 70 }71 72 [root@LB-S~]#systemctl start keepalived && systemctl enable keepalived73 [root@LB-S~]#ip a74 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 175link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:0076inet 127.0.0.1/8 scope host lo77 valid_lft forever preferred_lft forever78inet6 ::1/128 scope host 79 valid_lft forever preferred_lft forever80 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100081link/ether 00:50:56:25:3a:1e brd ff:ff:ff:ff:ff:ff82inet 192.168.1.22/24 brd 192.168.1.255 scope global ens3383 valid_lft forever preferred_lft forever84inet6 fe80::e344:79a9:d402:a812/64 scope link 85 valid_lft forever preferred_lft forever86 87 [root@LB-S~]#ipvsadm -ln88 IP Virtual Server version 1.2.1 (size=4096)89 Prot LocalAddress:Port Scheduler Flags90 -> RemoteAddress:Port Forward Weight ActiveConn InActConn91 TCP192.168.1.100:80 rr92 ->192.168.1.33:80Route 100 93 ->192.168.1.44:80Route 100

测试

多刷新几次

若没有轮询效果 (以下资源来源于/Juwenzhe_HEBUT/article/details/85254953)(感谢博主分享,侵删)

为什么LVS设置了轮询,浏览器测试还是不能轮询?这关系到两个地方的配置:

一 ./etc/keepalived/keepalived.conf的persistence_timeout会话保持时间配置,测试轮询时设置为0;

二 .查看ipvsadm默认超时时间(一直在浏览器刷不出LVS轮询)

[root@LB-M~]# ipvsadm -L --timeout

Timeout (tcp tcpfin udp): 900 120 300

900 120 300这三个数值分别是TCP TCPFINUDP的时间.也就是说一条tcp的连接经过lvs后,lvs会把这台记录保存15分钟,就是因为这个时间过长,所以很多人都会发现做好LVS DR之后轮询现象并没有发生,实践中将此数值调整很小小,使用以下命令调整:

[root@LB-M ~]# ipvsadm --set 1 2 1

再次测试轮询效果,就可以了!而实际配置中还是按照默认配置,那么在大量IP访问VIP时,就有轮询效果?有待验证

1.NG节点配置nginx.conf error-log日志级别为info,再reload一下,可以发现两台LVS的keepalived都在定是检测HG健康(注:记得将error-log级别改回来,不然日志很多,遗留问题:21:19:17 [info] 109687#0: *15087 recv() failed (104: Connection reset by peer) while waiting for request, client: 192.168.31.141, server: 0.0.0.0:18081 原因:这是正常的请求INFO日志,keepalive的tcp_cheack心跳检测,在nginx的配置中error.log输出级别为被设置为info,keepalived与MG只做了两次握手,所以NG一直包这个'错误')

2.遇到的问题Received advert with lower priority 80, ours 100, forcing new election 原因:备机上防火墙开着(要关掉)

高可用

模拟主负载均衡器宕机

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。