• 部署LVS+Keepalived高可用群集(抢占模式,非抢占模式,延迟模式)


    目录

    一、LVS+Keepalived高可用群集

    1、实验环境

    2、 主和备keepalived的配置

    2.1 yum安装ipvsadm和keepalived工具

    2.2 添加ip_vs模块并开启ipvsadm

    2.3 修改keepalived的配置文件 

    2.4 调整proc响应参数,关闭linux内核的重定向参数响应

    2.5 将主服务器的keepalived的配置文件远程传输到备服务器上,并进行必要的修改

    3、 真实web服务器的配置(web1,web2配置一样)

    3.1 下载httpd服务

    3.2 配置VIP地址

    3.3 修改配置,使得系统只响应目的ip为本地ip的请求

    3.4 配置访问默认页面内容 

    4、测试

    4.1 将主服务器关闭

    二、非抢占模式

    三、延迟抢占 


    一、LVS+Keepalived高可用群集

    1、实验环境

    主keepalived:192.168.80.100     lvs
    备keepalived:192.168.80.101     lvs
    web1:192.168.80.102
    web2:192.168.80.103    
    vip:192.168.80.188
    客户机访问

    2、 主和备keepalived的配置

    2.1 yum安装ipvsadm和keepalived工具

    1. #关闭防火墙和selinux服务
    2. [root@localhost ~]#systemctl stop firewalld.service
    3. [root@localhost ~]#setenforce 0
    4. #yum安装keepalived和ipvsadm工具
    5. [root@localhost ~]#yum install ipvsadm keepalived -y

    2.2 添加ip_vs模块并开启ipvsadm

    1. #添加ip_vs模块
    2. [root@localhost ~]#modprobe ip_vs
    3. [root@localhost ~]#cat /proc/net/ip_vs
    4. IP Virtual Server version 1.2.1 (size=4096)
    5. Prot LocalAddress:Port Scheduler Flags
    6. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    7. #保存原来的配置并开启ipvsadm
    8. [root@localhost keepalived]#ipvsadm-save > /etc/sysconfig/ipvsadm
    9. [root@localhost keepalived]#systemctl start ipvsadm.service

    2.3 修改keepalived的配置文件 

    1. [root@localhost keepalived]#cd /etc/keepalived/
    2. [root@localhost keepalived]#cp keepalived.conf keepalived.conf.bak
    3. #复制一份,备份使用
    4. #修改keepalived的配置文件
    5. [root@localhost keepalived]#vim keepalived.conf
    6. global_defs {
    7. router_id HA_TEST_R2 ####本路由器的服务器名称 HA_TEST_R2
    8. }
    9. vrrp_instance VI_1 { ####定义VRRP热备实列
    10. state BACKUP ####热备状态,backup表示辅服务器
    11. interface ens33 ####表示承载VIP地址的物理接口
    12. virtual_router_id 1 ####虚拟路由器的ID号,每个热备组保持一致
    13. priority 99 ####优先级,优先级越大优先级越高
    14. advert_int 1 ####通告间隔秒数(心跳频率)
    15. authentication { ####认证信息,每个热备组保持一致
    16. auth_type PASS ####认证类型
    17. auth_pass 123456 ####认证密码
    18. }
    19. virtual_ipaddress { ####漂移地址(VIP),可以是多个
    20. 192.168.100.10
    21. }
    22. }
    23. #需要修改项
    24. global_defs {
    25. notification_email {
    26. acassen@firewall.loc
    27. failover@firewall.loc
    28. sysadmin@firewall.loc
    29. }
    30. notification_email_from Alexandre.Cassen@firewall.loc
    31. smtp_server 127.0.0.1
    32. #修改邮箱指向自己(10行)
    33. smtp_connect_timeout 30
    34. router_id LVS_01
    35. #指定服务器名称主备需要不一样(12行)
    36. vrrp_skip_check_adv_addr
    37. #vrrp_strict
    38. #14行需要注释否则服务启动有问题
    39. vrrp_garp_interval 0
    40. vrrp_gna_interval 0
    41. }
    42. vrrp_instance VI_1 {
    43. state MASTER
    44. #指定服务器类型MASTER为主 BACKUP为备(20行)
    45. interface ens33
    46. #修改网卡名称为ens3321
    47. virtual_router_id 10
    48. #指定虚拟路由器的ID号主备需要一致
    49. #nopreempt
    50. #非抢占模式两个节点都需要配置去掉注释
    51. priority 100
    52. #设定优先级数字越大优先级越高,准备需要不一样
    53. advert_int 1
    54. #通告间隔(查看是否存活)
    55. authentication {
    56. auth_type PASS
    57. #认证类型
    58. auth_pass 123456
    59. #修改验证密码,主备需要一样(27行)
    60. }
    61. virtual_ipaddress {
    62. 192.168.80.188
    63. #指定群集vip地址
    64. }
    65. }
    66. virtual_server 192.168.80.188 80 {
    67. delay_loop 6
    68. #健康间隔时间6
    69. lb_algo rr
    70. #调度算法轮询
    71. lb_kind DR
    72. #lvs模式为DR
    73. persistence_timeout 0
    74. #连接保持时间改为0 否则 无法体现效果
    75. protocol TCP
    76. #采用协议
    77. real_server 192.168.91.102 80 {
    78. #43行修改地址为真实主机地址
    79. weight 1
    80. #45行删除
    81. #节点权重
    82. TCP_CHECK{
    83. connect_port 80
    84. #检查目标端口
    85. connect_timeout 3
    86. #连接超时
    87. nb_get_retry 3
    88. #重试次数
    89. delay_before_retry 3
    90. #重试间隔时间
    91. }
    92. }
    93. real_server 192.168.80.103 80 {
    94. #第二个
    95. weight 1
    96. TCP_CHECK{
    97. connect_port 80
    98. connect_timeout 3
    99. nb_get_retry 3
    100. delay_before_retry 3
    101. }
    102. }

    2.4 调整proc响应参数,关闭linux内核的重定向参数响应

    1. #启动服务、查看虚拟网卡vip
    2. systemctl start keepalived
    3. ip addr show dev ens33
    4. #调整proc响应参数,关闭Linux内核的重定向参数响应
    5. vim /etc/sysctl.conf
    6. net.ipv4.ip_forward = 1
    7. net.ipv4.conf.all.send_redirects = 0
    8. net.ipv4.conf.default.send_redirects = 0
    9. net.ipv4.conf.ens33.send_redirects = 0
    10. #刷新一下
    11. sysctl -p

    2.5 将主服务器的keepalived的配置文件远程传输到备服务器上,并进行必要的修改

    1. [root@localhost keepalived]#scp keepalived.conf root@192.168.80.101:/etc/keepalived/
    2. [root@localhost keepalived]#vim keepalived.conf
    3. #备份keepalive
    4. 12 router_id LVS_02
    5. 20 state BACKUP
    6. 23 priority 99
    7. [root@localhost keepalived]#systemctl start keepalived.service
    8. [root@localhost keepalived]#ipvsadm
    9. [root@localhost keepalived]#ipvsadm -ln
    10. [root@localhost keepalived]#vim /etc/sysctl.conf
    11. [root@localhost keepalived]#sysctl -p
    12. net.ipv4.conf.all.send_redirects = 0
    13. net.ipv4.conf.default.send_redirects = 0
    14. net.ipv4.conf.ens33.send_redirects = 0

     

    3、 真实web服务器的配置(web1,web2配置一样)

    3.1 下载httpd服务

    1. [root@localhost ~]# systemctl stop firewalld.service
    2. [root@localhost ~]# setenforce 0
    3. [root@localhost ~]# yum install -y httpd

    3.2 配置VIP地址

    1. [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
    2. [root@localhost network-scripts]# vim ifcfg-lo:0
    3. [root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-lo:0
    4. DEVICE=lo:0
    5. IPADDR=192.168.80.188
    6. NETMASK=255.255.255.255
    7. NETWORK=127.0.0.0
    8. [root@localhost network-scripts]# ifup lo:0
    9. [root@localhost network-scripts]# systemctl restart network

     

    3.3 修改配置,使得系统只响应目的ip为本地ip的请求

    1. [root@localhost network-scripts]# vim /etc/sysctl.conf
    2. [root@localhost network-scripts]# sysctl -p
    3. net.ipv4.conf.all.arp_ignore = 1
    4. net.ipv4.conf.all.arp_announce = 2
    5. net.ipv4.conf.default.arp_ignore = 1
    6. net.ipv4.conf.default.arp_announce = 2
    7. net.ipv4.conf.lo.arp_ignore = 1
    8. net.ipv4.conf.lo.arp_announce = 2
    9. [root@localhost network-scripts]# route add -host 192.168.80.188 lo:0

    3.4 配置访问默认页面内容 

     

    4、测试

    4.1 将主服务器关闭

    此时虚拟VIP在备用服务器,且依旧可以访问网站

    关闭主服务器,我们也可以抓包来看变化

    --关闭主服务器时,是192.168.80.101

     --开启主服务器后,主服务器会抢占,因为主服务器优先级高,又会变成主服务器,192.168.80.100

    二、非抢占模式

    默认模式使用的 抢占式,上面的实验使用的就是抢占模式
    主节点会抢占回来,会造成两次网络动荡。
    #注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP

    1. #1主机配置
    2. vrrp_instance VI_1 {
    3. state BACKUP     #都为BACKUP
    4. interface ens33
    5. virtual_router_id 66
    6. priority 100   #优先级高
    7. advert_int 1
    8. nopreempt         #添加此行,都为nopreempt
    9. #2主机配置
    10. vrrp_instance VI_1 {
    11. state BACKUP         #都为BACKUP
    12. interface ens33
    13. virtual_router_id 66
    14. priority 80       #优先级低
    15. advert_int 1
    16. nopreempt   #添加此行,都为nopreempt

     

    三、延迟抢占 

    1. #延迟抢占
    2. preempt_delay #     #指定抢占延迟时间为#s,默认延迟300s
    3. #注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict
    4. #1主机配置
    5. vrrp_instance VI_1 {
    6. state BACKUP     #都为BACKUP
    7. interface eth0
    8. virtual_router_id 66
    9. priority 100 #优先级高
    10. advert_int 1
    11. preempt_delay 30  #抢占延迟模式,默认延迟300s
    12. #2主机配置
    13. vrrp_instance VI_1 {
    14. state BACKUP       #都为BACKUP
    15. interface eth0
    16. virtual_router_id 66
    17. priority 80 #优先级低
    18. advert_int 1
    19. priority 80 #优先级高
    20. advert_int 1
    21. preempt_delay 60    #抢占延迟模式,默认延迟300s

     

     

  • 相关阅读:
    STM8的C语言编程(12)--+AD转换
    前端技能树,面试复习第 47 天—— Vue-Router 详解
    bean的生命周期
    【C语言刷LeetCode】1331. 数组序号转换(E)
    【Javascript】声明变量
    Mybatis的二级缓存 (ehcache方式)
    Lumerical官方案例、FDTD时域有限差分法仿真学习(十七)——Y分支功分器
    huggingface无法下载模型的实战代码
    【数学建模】MATLAB入门教程:插值与拟合(下)
    前端实现表格生成序号001、002、003自增
  • 原文地址:https://blog.csdn.net/weixin_58376680/article/details/136539251