lvs + keepalived高可用集群

一、keepalived实现原理剖析

1.1 VRRP(虚拟路由冗余协议)

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

lvs + keepalived高可用集群_第1张图片

1.2 Keepalived 原理

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个浮动IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管浮动IP,继续提供服务,从而保证了高可用性。

主服务器作用:转发数据;发送报文告诉备服务器自己在线

备服务器作用:监听主服务器发来的数据;收不到消息的时候就接替主服务器

lvs + keepalived高可用集群_第2张图片

1.3 Keepalived 工具介绍

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)

是专为LVS和HA设计的一款健康检查工具,判断LVS负载调度器、节点服务器的可用性,当master 主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。

官方网站:http://www.keepalived.org/

1.4 Keepalived 模块

Keepalived体系主要模块及其作用:

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
  • vrrp模块:是来实现VRRP协议的。
  • check模块:负责健康检查,常见的方式有端口检查及URI检查。

二、LVS+Keepalived群集部署

实验拓扑

lvs + keepalived高可用集群_第3张图片

主DR服务器:7-4 192.168.109.134

备DR服务器:7-5 192.168.109.135

web1:7-2 192.168.109.132

web2:7-3 192.168.109.133

客户端:w7 192.168.109.200

  1. #每台机子关闭防火墙和selinux

  2. systemctl stop firewalld

  3. systemctl disable firewalld

  4. setenforce 0

2.1 配置负载均衡器(主备相同)

主DR服务器:7-4 192.168.109.134

备DR服务器:7-5 192.168.109.135

1.下载相应的软件包

yum install -y ipvsadm keepalived

2.修改keepalived配置文件

  1. #找到配置文件位置

  2. [root@localhost ~]# rpm -qc keepalived

  3. /etc/keepalived/keepalived.conf

  4. /etc/sysconfig/keepalived

  5. [root@localhost ~]# cd /etc/keepalived/

  6. [root@localhost keepalived]# ls

  7. keepalived.conf

  8. #备份配置文件

  9. [root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

  10. [root@localhost keepalived]# ls

  11. keepalived.conf keepalived.conf.bak

  12. #修改配置文件

  13. [root@localhost keepalived]# vim keepalived.conf

  14. ! Configuration File for keepalived

  15. #全局配置

  16. global_defs {

  17. notification_email {

  18. [email protected]

  19. [email protected]

  20. [email protected]

  21. }

  22. notification_email_from [email protected]

  23. smtp_server 127.0.0.1 #将邮箱地址改为本地

  24. smtp_connect_timeout 30

  25. router_id LVS_01 #设置名称,便于区分

  26. #vrrp_skip_check_adv_addr #将四行vrrp的配置删掉

  27. #vrrp_strict

  28. #vrrp_garp_interval 0

  29. #vrrp_gna_interval 0

  30. }

  31. vrrp_instance VI_1 {

  32. state MASTER #主备服务器的名称,但真正区分主备是用优先级区分

  33. interface ens33 #改为ens33,跟自己的机子对应

  34. virtual_router_id 51 #主备保持一致,默认51

  35. nopreempt #添加这行,意味着非抢占模式,抢占模式下宕机后恢复的主服务器会将备服务器挤掉继续自己执行,

  36. #来回切换会造成脑裂,出现网络波动现象

  37. priority 100 #优先级越大就是主

  38. advert_int 1 #报文间隔时间

  39. authentication {

  40. auth_type PASS

  41. auth_pass 1111

  42. }

  43. virtual_ipaddress {

  44. 192.168.109.188

  45. }

  46. }

  47. #配置虚拟服务器实例

  48. #virtual_server 192.168.200.100 443 {

  49. #指定虚拟IP和端口号,443是https协议,80是http协议

  50. virtual_server 192.168.109.188 80 {

  51. delay_loop 6 #健康检查的时间,检查节点服务器

  52. lb_algo rr #调度算法,默认轮询算法

  53. lb_kind DR #LVS工作模式,默认是NAT,我们实验用DR

  54. persistence_timeout 0 #长连接,默认50s,不想这么长改成0

  55. protocol TCP #健康检查的协议

  56. #配置真实服务器

  57. real_server 192.168.109.132 80 {

  58. weight 1 #权重,采用加权轮询算法时要改

  59. # SSL_GET { #健检查的方式,默认SSL_GET ,我们采用TCP_CHECK

  60. #url {

  61. # path /

  62. # digest ff20ad2481f97b1754ef3e12ecd3a9cc

  63. # }

  64. # url {

  65. # path /mrtg/

  66. # digest 9b3a0c85a887a256d6939da88aabd8cd

  67. # }

  68. TCP_CHECK{

  69. connect_port 80#指定端口号

  70. connect_timeout 3 #超时时间

  71. nb_get_retry 3 #重试次数

  72. delay_before_retry 3 #间隔时间

  73. }

  74. }

  75. #再添加一台真实服务器配置

  76. real_server 192.168.109.133 80 {

  77. weight 1

  78. TCP_CHECK {

  79. connect_port 80

  80. connect_timeout 3

  81. nb_get_retry 3

  82. delay_before_retry 3

  83. }

  84. }

  85. }

  86. #下面其余的内容全部删掉

  87. #保存后重启

  88. [root@localhost keepalived]# systemctl restart keepalived.service

  89. #传给备服务器

  90. [root@localhost keepalived]# scp keepalived.conf 192.168.109.135:`pwd`

  91. #开启ipvsadm工具(两台一样)

  92. [root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm

  93. [root@localhost ~]# systemctl start ipvsadm

  94. [root@localhost ~]# ipvsadm -ln

  95. IP Virtual Server version 1.2.1 (size=4096)

  96. Prot LocalAddress:Port Scheduler Flags

  97. -> RemoteAddress:Port Forward Weight ActiveConn InActConn

  98. TCP 192.168.109.188:80 rr

  99. -> 192.168.109.132:80 Route 1 0 0

  100. -> 192.168.109.133:80 Route 1 0 0

lvs + keepalived高可用集群_第4张图片

你可能感兴趣的:(服务器,网络,运维)