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

工作原理:

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

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

实验环境:

主机名 IP地址 VIP 软件名
LB-M  192.168.1.11 192.168.1.100  ipvsadm  keepalived
LB-S  192.168.1.22 192.168.1.100  ipvsadm  keepalived
WEB1  192.168.1.33 192.168.1.100  httpd
WEB2  192.168.1.44 192.168.1.100  httpd

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 <<EOF
11 #!/bin/bash
12 # lvs-dr
13 VIP="192.168.1.100"
14 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255
15 /sbin/route add -host $VIP dev lo:0
16 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
17 echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
18 echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
19 echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce"
20 EOF
21
22 [root@WEB1~]#chmod +x /opt/lvs-dr
23 [root@WEB1~]#/opt/lvs-dr
24 [root@WEB1~]#ip a
25 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
26     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
27     inet 127.0.0.1/8 scope host lo
28        valid_lft forever preferred_lft forever
29     inet 192.168.1.100/32 brd 192.168.1.100 scope global lo:0
30        valid_lft forever preferred_lft forever
31     inet6 ::1/128 scope host
32        valid_lft forever preferred_lft forever
33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
34     link/ether 00:50:56:37:26:bf brd ff:ff:ff:ff:ff:ff
35     inet 192.168.1.33/24 brd 192.168.1.255 scope global ens33
36        valid_lft forever preferred_lft forever
37     inet6 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 keepalived
10 [root@LB-M~]#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.old
11 [root@LB-M~]#vim /etc/keepalived/keepalived.conf
12 ! Configuration File for keepalived
13
14 global_defs {               #全局配置
15     notification_email {
16         smbands@163.com     #邮件告警配置,写你的邮箱地址,一行一个
17    }
18    notification_email_from root@LVS-master
19    smtp_server 127.0.0.1    #邮件服务器地址,这个写个本地回环就行,其他不用动
20    smtp_connect_timeout 30
21    router_id LVS_DEVEL_1    #路由ID,必须唯一
22 !  vrrp_strict              #严格执行VRRP协议规范,此模式不支持节点单播,全局配置下vrrp开头用叹号注释掉,不然每次启动iptables防火墙会自动添加drop23
24 }
25
26 vrrp_instance VI_1 {
27     state MASTER            #主就写MASTER 从的话就写BACKUP或SLAVE
28     interface ens33         #注意看好自己的网卡名称
29     virtual_router_id 51
30     priority 180            #优先级,这个选项是区分主备的,数值高的优先为主,为外部提供服务
31     advert_int 2
32     authentication {
33         auth_type PASS
34         auth_pass 1111
35     }
36     virtual_ipaddress {
37         192.168.1.100       #设置好虚拟IP
38     }
39 }
40
41 virtual_server 192.168.1.100 80 {   #这个段是虚拟服务段,里面包括realserver,就是WEB服务器,42     delay_loop 2
43     lb_algo rr
44     lb_kind DR           #DR为直接路由模式
45     nat_mask 255.255.255.0
46     persistence_timeout 300       #会话保持时间配置,默认为300,但是测试时不易看出轮询结果是否成功,测试轮询时设置为0
47     protocol TCP
48
49     real_server 192.168.1.33 80 {  #WEB服务器的IP+端口,隔一个空格键
50         weight 1                   #设置权重,一般性能高的服务器权重相对其他性能一般的服务器权重高,性能高,处理能力强,权重可以分配高一点
51         TCP_CHECK {
52             connect_timeout 3
53             connect_port 80
54             nb_get_retry 3
55             delay_before_retry 3
56         }
57      }
58
59
60     real_server 192.168.1.44 80 {   #同上
61         weight 1
62         TCP_CHECK {
63             connect_timeout 3
64             connect_port 80
65             nb_get_retry 3
66             delay_before_retry 3
67         }
68     }
69
70 }
71
72 [root@LB-M~]#systemctl start keepalived
73 [root@LB-M~]#ip a
74 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
75     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
76     inet 127.0.0.1/8 scope host lo
77        valid_lft forever preferred_lft forever
78     inet6 ::1/128 scope host
79        valid_lft forever preferred_lft forever
80 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
81     link/ether 00:50:56:32:81:c6 brd ff:ff:ff:ff:ff:ff
82     inet 192.168.1.11/24 brd 192.168.1.255 scope global ens33
83        valid_lft forever preferred_lft forever
84     inet 192.168.1.100/32 scope global ens33     #keepalived启动后,就会出现一个虚拟IP,但是从服务器不会有,除非主服务器挂掉,从服务器升为主服务器。
85        valid_lft forever preferred_lft forever
86     inet6 fe80::59d8:c166:1834:687a/64 scope link
87        valid_lft forever preferred_lft forever88[root@LB-M~]#ipvsadm -ln89 IP Virtual Server version 1.2.1 (size=4096)90 Prot LocalAddress:Port Scheduler Flags91  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn92  TCP  192.168.1.100:80 rr93  -> 192.168.1.33:80              Route   1      0          0         94  -> 192.168.1.44:80              Route   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 keepalived
10 [root@LB-S~]#scp 192.168.1.11:/etc/keepalived/keepalived.conf /etc/keepalived/
11 [root@LB-S~]#vi /etc/keepalived/keepalived.conf
12 ! Configuration File for keepalived
13
14 global_defs {              #全局配置
15    notification_email {
16         smbands@163.com          #邮件告警配置,写你的邮箱地址,一行一个
17    }
18    notification_email_from root@LVS-master
19    smtp_server 127.0.0.1
20    smtp_connect_timeout 30
21    router_id LVS_DEVEL_2   #路由ID必须唯一
22 !   vrrp_strict            #全局配置下vrrp开头加叹号注释23
24 }
25
26 vrrp_instance VI_1 {
27     state SLAVE            #从服务器写SLAVE或BACKUP
28     interface ens33        #看好网卡名称
29     virtual_router_id 51
30     priority 100           #从服务器上的优先级不能高于主
31     advert_int 2
32     authentication {
33         auth_type PASS
34         auth_pass 1111
35     }
36     virtual_ipaddress {
37         192.168.1.100       #配好虚拟IP
38     }
39 }
40
41 virtual_server 192.168.1.100 80 {     #虚拟服务器段
42     delay_loop 2
43     lb_algo rr
44     lb_kind DR               #直接路由模式
45     nat_mask 255.255.255.0
46     persistence_timeout 300  #会话保持时间配置,默认为300,但是测试时不易看出轮询结果是否成功,测试轮询时设置为0
47     protocol TCP
48
49     real_server 192.168.1.33 80 {  #web1的IP
50         weight 1                   #权重
51         TCP_CHECK {
52             connect_timeout 3
53             connect_port 80
54             nb_get_retry 3
55             delay_before_retry 3
56         }
57      }
58
59
60     real_server 192.168.1.44 80 {   #web2的IP
61         weight 1                    #权重                  
62         TCP_CHECK {
63             connect_timeout 3
64             connect_port 80
65             nb_get_retry 3
66             delay_before_retry 3
67         }
68     }
69
70 }
71
72 [root@LB-S~]#systemctl start keepalived && systemctl enable keepalived
73 [root@LB-S~]#ip a
74 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
75     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
76     inet 127.0.0.1/8 scope host lo
77        valid_lft forever preferred_lft forever
78     inet6 ::1/128 scope host
79        valid_lft forever preferred_lft forever
80 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
81     link/ether 00:50:56:25:3a:1e brd ff:ff:ff:ff:ff:ff
82     inet 192.168.1.22/24 brd 192.168.1.255 scope global ens33
83        valid_lft forever preferred_lft forever
84     inet6 fe80::e344:79a9:d402:a812/64 scope link
85        valid_lft forever preferred_lft forever
86
87 [root@LB-S~]#ipvsadm -ln
88 IP Virtual Server version 1.2.1 (size=4096)
89 Prot LocalAddress:Port Scheduler Flags
90   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
91 TCP  192.168.1.100:80 rr
92   -> 192.168.1.33:80              Route   1      0          0
93   -> 192.168.1.44:80              Route   1      0          0         

测试

多刷新几次

若没有轮询效果 (以下资源来源于https://blog.csdn.net/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 原因:备机上防火墙开着(要关掉)

高可用

模拟主负载均衡器宕机

转载于:https://www.cnblogs.com/Smbands/p/10642703.html

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

  1. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  2. Lvs+keepAlived实现负载均衡高可用集群(DR实现)

    第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...

  3. LVS+Keepalive 实现负载均衡高可用集群

    一.LVS 介绍 目前LVS已经被集成到Linux内核模块中.LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,该项目在Linux内核中实现了基于IP的数据请求负载均 ...

  4. lvs负载均衡—高可用集群(keepalived)

    基本概念: 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统 ...

  5. 企业运维实战--lvs之DR模式负载均衡、keepalived、lvs高可用

    LVS 介绍 lvs 负载均衡( linux virtual server),linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求 ...

  6. keepalived+MHA实现mysql主从高可用集群

    本节索引 原理分析 实验环境准备 主从复制集群 安装MHA包 初始化MHA 配置Keepalived 故障出现 故障恢复 总结 一 原理分析 1 MHA简介: MHA(Master High Avai ...

  7. activitimq集群搭建_activitmq+keepalived+nfs 非zk的高可用集群构建

    nfs 192.168.10.32 maast 192.168.10.4 savel 192.168.10.31 应对这个需求既要高可用又要消息延迟,只能使用变态方式实现 nfs部署 #yum ins ...

  8. Web服务器群集——LVS-DR+Keepalived高可用集群

    LVS-DR+Keepalived高可用集群 什么是高可用集群? 高可用集群的衡量标准 自动切换/故障转移(FailOver) 自动侦测 脑裂 常见解决方案 Keepalived Keepalived ...

  9. linux集群-keepalived介绍-用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...

最新文章

  1. Struts2+Spring详解
  2. 【APICloud系列|33】通过程序循环数据集合的时候闭包加入imageCache方法
  3. 手机usb无法被电脑识别_6种方法解决电脑无法识别移动硬盘
  4. python numpy修改数据维度
  5. java 类和对象的理解
  6. 生活杂记 - 丢东西
  7. php zitian虚拟主机配置_虚拟主机的发展
  8. iOS App被拒原因以及解决方案总结。
  9. 苹果电脑怎么用_这些朋友更适合苹果电脑,你了解吗?
  10. Python-argparse库基本使用方法和add_argument() 参数详解
  11. 配置fly.js请求
  12. 1716: [Usaco2006 Dec]The Fewest Coins 找零钱
  13. 计算机通信中ip,macid的主要作用和区别
  14. 码云团队如何使用码云?
  15. MFC CFile操作类介绍
  16. 解决MySQL--发生系统错误 1069。 由于登录失败而无法启动服务。
  17. webp图片怎么批量转换成jpg等常用格式
  18. ERR_SSL_PROTOCOL_ERROR浏览器解决办法
  19. 写一篇路边停车计费系统的期刊
  20. tarjan算法求无向图的割点和桥

热门文章

  1. [case20]聊聊rest api设计
  2. PyTorch 的预训练,是时候学习一下了
  3. 说说Request.Params[key]和Request[key]
  4. 微信小程序记账应用实例课程(完结)——对接服务端账目CRUD
  5. 分苹果问题的C++和Python实现
  6. Memcached 之 .NET(C#)实例分析
  7. CPU卡及其应用领域简介
  8. excel中日期转成java_用Java程序将日期转换为序列号,就像在Excel中一样
  9. 关于xilinx fir use reloadable coefficient的用法
  10. C++实现大数的加法