当前位置:   article > 正文

LVS-RD和keepalived集群服务_lvs rd

lvs rd

目录

一、keepalived介绍

1、keepalived功能

2、VRRP通信原理

3、keepalived服务的工作原理

4、保证高可用性

二、LVS-RD和keepalived集群配置


一、keepalived介绍

keeplived 软件起初是专门为LVS 负载均衡 软件设置的,用来管理并监控LVS集群中各个服务节点的状态,后来加入了可以实现高可用的VRRP 功能。因此,keepalived除了能管理LVS 集群以外,还可以为其它服务(如:Nginx、Haproxy、Mysql等)实现高可用。

keepalived 软件主要是通过 VRRP 协议 实现高可用的功能。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的速写,VRRP出现的目的就是为了解决静态路由单点故障的问题,它能保证当个别节点出现问题时,整个网络可以不间断的运行。
 

1、keepalived功能

①Keepalived是一款专为LVS 和HA 设计的一款健康检查工具

②支持故障自动切换、支持节点健康状态检查

健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

2、VRRP通信原理

1、在网络中,主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,服务就会中断,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

2、VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时进行设备切换而不影响主机之间的数据通信。

3、VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。

4、工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对

5、VRRP路由器在运行过程中有三种状态:①Initialize状态:系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;② Master状态;③ Backup状态;一般主路由器处于Master状态,备份路由器处于Backup状态。

6、VRRP选举机制

①VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。

②比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器

③比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。

7、VRRP通过一竞选协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

3、keepalived服务的工作原理

1、Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

2、在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。

4、保证高可用性

一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

二、LVS-RD和keepalived集群配置

在LVS-RD实验的基础上增加一台虚拟机 作为zwb_dr2

1、LVS-RD以之前的博客作为基础

2、配置zwb_dr2(主)

  1. ##关闭防火墙及安全信息中心
  2. [root@zwb_rd2 ~]# systemctl stop firewalld
  3. [root@zwb_rd2 ~]# systemctl disable firewalld
  4. [root@zwb_rd2 ~]# setenforce 0
  5. setenforce: SELinux is disabled
  6. ###编译安装 nginx,前面博客有
  7. ###安装ipvsadm
  8. [root@zwb_rd2 ~]# yum -y install ipvsadm keepalived
  9. [root@zwb_rd2 ~]# modprobe ip_vs ## 加载模块信息
  10. [root@zwb_rd2 ~]# cat /proc/net/ip_vs ## 查看ipvs 版本信息
  11. IP Virtual Server version 1.2.1 (size=4096)
  12. Prot LocalAddress:Port Scheduler Flags
  13. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  14. [root@zwb_rd2 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm ## 创建一个ipvsadm的一个配置文件
  15. [root@zwb_rd2 ~]# systemctl start ipvsadm ## 启动
  16. [root@zwb_rd2 ~]# systemctl enable ipvsadm ##设置开机启动
  17. ### 配置负载均衡策略
  18. [root@zwb_rd2 ~]# ipvsadm -C #### 清空原有配置
  19. [root@zwb_rd2 ~]# ipvsadm -A -t 192.168.159.100:80 -s rr ### 添加一台虚拟主机,设置IP及端口
  20. [root@zwb_rd2 ~]# ipvsadm -a -t 192.168.159.100:80 -r 192.168.159.10:80 -g ## 添加真实主机
  21. [root@zwb_rd2 ~]# ipvsadm -a -t 192.168.159.100:80 -r 192.168.159.11:80 -g ## 添加真实主机
  22. ## 添加虚拟子接口ens33:0
  23. [root@zwb_rd2 ~]# cd /etc/sysconfig/network-scripts/
  24. [root@zwb_rd2 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
  25. [root@zwb_rd2 network-scripts]# vim ifcfg-ens33:0
  26. TYPE=Ethernet
  27. PROXY_METHOD=none
  28. BROWSER_ONLY=no
  29. BOOTPROTO=static
  30. DEFROUTE=yes
  31. IPV4_FAILURE_FATAL=no
  32. IPV6INIT=yes
  33. IPV6_AUTOCONF=yes
  34. IPV6_DEFROUTE=yes
  35. IPV6_FAILURE_FATAL=no
  36. IPV6_ADDR_GEN_MODE=stable-privacy
  37. NAME=ens33:0
  38. DEVICE=ens33:0
  39. ONBOOT=yes
  40. IPADDR=192.168.159.100 ###修改为VIP
  41. PREFIX=24
  42. #GATEWAY=192.168.159.2
  43. #DNS1=114.114.114.114
  44. IPV6_PRIVACY=no
  45. [root@zwb_rd2 network-scripts]# systemctl restart network ##重启网络服务
  46. ## 配置sysctl.conf 文件
  47. [root@zwb_rd2 ~]# vim /etc/sysctl.conf
  48. net.ipv4.ip_forward = 0
  49. net.ipv4.conf.all.send_redirects = 0
  50. net.ipv4.conf.default.send_redirects = 0
  51. net.ipv4.conf.ens33.send_redirects = 0
  52. [root@zwb_rd2 ~]# sysctl -p ## 刷新生效
  53. net.ipv4.ip_forward = 0
  54. net.ipv4.conf.all.send_redirects = 0
  55. net.ipv4.conf.default.send_redirects = 0
  56. net.ipv4.conf.ens33.send_redirects = 0
  57. ##配置keepalived.conf文件,清空原先配置
  58. [root@zwb_rd2 ~]# vim /etc/keepalived/keepalived.conf
  59. global_defs { # 定义全局参数
  60. router_id lvs_01 # 定义热备组角色(每个节点不能一样)
  61. }
  62. vrrp_instance vi_1 { ## 定义VRRP的实例配置
  63. state MASTER # 指定热备状态,主为master,备为backup
  64. interface ens33 # 指定承载vip地址的物理接口
  65. virtual_router_id 51 # 指定虚拟路由器的ID号,每个热备组保持一致
  66. priority 110 # 7指定优先级,数值越大越优先
  67. advert_int 1
  68. authentication {
  69. auth_type PASS
  70. auth_pass 6666
  71. }
  72. virtual_ipaddress { ## 定义VIP地址
  73. 192.168.159.100
  74. }
  75. }
  76. virtual_server 192.168.159.100 80 { #指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
  77. lb_algo rr #定义轮询规则
  78. lb_kind DR #指定集群工作模式,直接路由DR
  79. persistence_timeout 6 #健康检查的间隔时间
  80. protocol TCP #应用服务采用的是TCP协议
  81. real_server 192.168.159.10 80 { #定义后端真实服务器的参数
  82. weight 1 #节点权重
  83. TCP_CHECK {
  84. connect_port 80 #添加检查的目标端口
  85. connect_timeout 3 #添加连接超时
  86. nb_get_retry 3 #添加重试次数
  87. delay_before_retry 3 #添加重试间隔
  88. }
  89. }
  90. real_server 192.168.159.11 80 { #指定第二个web节点的地址,端口
  91. weight 1
  92. TCP_CHECK {
  93. connect_port 80
  94. connect_timeout 3
  95. nb_get_retry 3
  96. delay_before_retry 3
  97. }
  98. }
  99. }
  100. [root@zwb_dr2 ~]# systemctl start keepalived.service ##启动

2、配置zwb_dr1(增加配置)(备)

  1. [root@zwb_dr1 ~]# yum -y install keepalived.x86_64 ##安装
  2. [root@zwb_rd2 ~]# vim /etc/keepalived/keepalived.conf
  3. global_defs {
  4. router_id lvs_02 ##定义热备组
  5. }
  6. vrrp_instance vi_1 {
  7. state BACKUP ##定义BACKUP
  8. interface ens33
  9. virtual_router_id 51
  10. priority 105 ##优先级低于master
  11. advert_int 1
  12. authentication {
  13. auth_type PASS
  14. auth_pass 6666
  15. }
  16. virtual_ipaddress {
  17. 192.168.159.100
  18. }
  19. }
  20. virtual_server 192.168.159.100 80 {
  21. lb_algo rr
  22. lb_kind DR
  23. persistence_timeout 6
  24. protocol TCP
  25. real_server 192.168.159.10 80 {
  26. weight 1
  27. TCP_CHECK {
  28. connect_port 80
  29. connect_timeout 3
  30. nb_get_retry 3
  31. delay_before_retry 3
  32. }
  33. }
  34. real_server 192.168.159.11 80 {
  35. weight 1
  36. TCP_CHECK {
  37. connect_port 80
  38. connect_timeout 3
  39. nb_get_retry 3
  40. delay_before_retry 3
  41. }
  42. }
  43. }
  44. [root@zwb_dr1 ~]# systemctl start keepalived.service ##启动

3、查看VIP飘在那个服务器上

①查看keepalived(主)

主机名:[root@zwb_rd2 ~]# hostname
               zwb_rd2

②查看keepalived(备)

主机名:[root@zwb_rd1 ~]# hostname
               zwb_rd21

 

验证:

查看LVS-DR是否工作正常,正常情况下均工作在主设备master上,主机名zwb_rd2

模拟master宕机了。看VIP是否漂移

查看keepalived(备)的ip,发现VIP已经漂移成功

打开浏览器实验

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/820395
推荐阅读
相关标签
  

闽ICP备14008679号