• LVS+Keepalived 高可用群集


    一、一.Keepalived工具介绍

    专为LVS和HA设计的一款健康检查工具
    • 支持故障自动切换(Failover)

    • 支持节点健康状态检查(Health Checking)

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

    二、Keepalived工作原理

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

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

    三、部署LVS+Keepalived 高可用群集

    1. 主DR 服务器: 192.168.110.10
    2. 备DR 服务器: 192.168.110.20
    3. Web 服务器1192.168.110.60
    4. Web 服务器2192.168.110.70
    5. 客户端:192.168.110.200
    6. vip:192.168.110.100

    1.配置负载调度器(主、备相同;192.168.110.10;192.168.110.20)

    1. systemctl stop firewalld.service
    2. setenforce 0
    3. yum -y install ipvsadm keepalived
    4. modprobe ip_vs
    5. cat /proc/net/ip_vs

    在这里插入图片描述

    1. vim /etc/sysctl.conf
    2. net.ipv4.ip_forward = 1
    3. net.ipv4.conf.all.send_redirects = 0
    4. net.ipv4.conf.default.send_redirects = 0
    5. net.ipv4.conf.ens33.send_redirects = 0
    6. sysctl -p

    在这里插入图片描述

    1. vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
    2. DEVICE=ens33:0
    3. ONBOOT=yes
    4. IPADDR=192.168.121.100
    5. NETMASK=255.255.255.255
    6. systemctl restart network

    在这里插入图片描述

    1. ifup ens33:0
    2. ifconfig ens33:0
    3. route add -host 192.168.110.100 dev ens33:0

    在这里插入图片描述

    1. ipvsadm-save > /etc/sysconfig/ipvsadm
    2. systemctl start ipvsadm
    3. ipvsadm -C
    4. ipvsadm -A -t 192.168.110.100:80 -s rr
    5. ipvsadm -a -t 192.168.110.100:80 -r 192.168.110.60:80 -g
    6. ipvsadm -a -t 192.168.110.100:80 -r 192.168.110.70:80 -g
    7. ipvsadm
    8. ipvsadm -ln

    在这里插入图片描述

    2.配置节点服务器

    配置节点服务器(192.168.110.60;192.168.110.70)

    1. systemctl stop firewalld
    2. setenforce 0
    3. yum -y install httpd
    4. systemctl start httpd
    1. --192.168.110.60---
    2. echo '66666' > /var/www/html/index.html
    1. --192.168.110.70---
    2. echo '77777' > /var/www/html/index.html
    1. vim /etc/sysconfig/network-scripts/ifcfg-lo:0
    2. DEVICE=lo:0
    3. ONBOOT=yes
    4. IPADDR=192.168.110.100
    5. NETMASK=255.255.255.255

    在这里插入图片描述

    1. service network restart 或 systemctl restart network
    2. ifup lo:0
    3. ifconfig lo:0
    4. route add -host 192.168.110.100 dev lo:0

    在这里插入图片描述

    1. vim /etc/sysctl.conf
    2. net.ipv4.conf.lo.arp_ignore = 1
    3. net.ipv4.conf.lo.arp_announce = 2
    4. net.ipv4.conf.all.arp_ignore = 1
    5. net.ipv4.conf.all.arp_announce = 2
    6. sysctl -p

    在这里插入图片描述

    3.配置keeplived(主、备DR 服务器上都要设置)(192.168.110.10;192.168.110.20

    1. cd /etc/keepalived/
    2. cp keepalived.conf keepalived.conf.bak
    3. vim keepalived.conf
    4. ......
    5. global_defs { #定义全局参数
    6. --10行--修改,邮件服务指向本地
    7. smtp_server 127.0.0.1
    8. --12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
    9. router_id LVS_01
    10. }
    11. vrrp_instance VI_1 { #定义VRRP热备实例参数
    12. --20行--修改,指定热备状态,主为MASTER,备为BACKUP
    13. state MASTER
    14. --21行--修改,指定承载vip地址的物理接口
    15. interface ens33
    16. --22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
    17. virtual_router_id 10
    18. --23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
    19. priority 100
    20. advert_int 1 #通告间隔秒数(心跳频率)
    21. authentication { #定义认证信息,每个热备组保持一致
    22. auth_type PASS #认证类型
    23. --27行--修改,指定验证密码,主备服务器保持一致
    24. auth_pass 123456
    25. }
    26. virtual_ipaddress { #指定群集vip地址
    27. 192.168.116.200
    28. }
    29. }
    30. --36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
    31. virtual_server 192.168.116.200 80 {
    32. delay_loop 6 #健康检查的间隔时间(秒)
    33. lb_algo rr #指定调度算法,轮询(rr)
    34. --39行--修改,指定群集工作模式,直接路由(DR)
    35. lb_kind DR
    36. persistence_timeout 50 #连接保持时间(秒)
    37. protocol TCP #应用服务采用的是 TCP协议
    38. --43行--修改,指定第一个Web节点的地址、端口
    39. real_server 192.168.116.80 80 {
    40. weight 1 #节点的权重
    41. --45行--删除,添加以下健康检查方式
    42. TCP_CHECK {
    43. connect_port 80 #添加检查的目标端口
    44. connect_timeout 3 #添加连接超时(秒)
    45. nb_get_retry 3 #添加重试次数
    46. delay_before_retry 4 #添加重试间隔
    47. }
    48. }
    49. real_server 192.168.116.90 80 { #添加第二个 Web节点的地址、端口
    50. weight 1
    51. TCP_CHECK {
    52. connect_port 80
    53. connect_timeout 3
    54. nb_get_retry 3
    55. delay_before_retry 4
    56. }
    57. }
    58. ##删除后面多余的配置##
    59. }
    60. systemctl start keepalived
    61. ip addr show dev ens33 #查看虚拟网卡vip

    在这里插入图片描述
    主192.168.110.10
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1. scp /etc/keepalived/keepalived.conf root@192.168.110.20:/etc/keepalived/keepalived.conf
    2. 直接复制一份主DR服务器keepalived的配置文件到备DR服务器

    备192.168.110.20

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.测试验证

    主,从DR服务器都开启时访问
    在客户端访问 http://192.168.110.100/ ,默认网关指向 192.168.110.100

    在这里插入图片描述
    在这里插入图片描述

    再在主服务器关闭 keepalived 服务后在测试,systemctl stop keepalived;再在主服务器禁用网卡后再测试, ifdown ens33:0,依旧可以实现。

  • 相关阅读:
    错字修改 | 布署1个中文文文本拼蟹纠错模型
    数据存储方式——KVELL:快速持续键值存储的设计与实现
    5.XSS-反射型(post)利用:获取cookie
    [Numpy] 广播机制(Broadcast)
    几种混合模式移动应用开发框架的对比
    solidity函数重载以及调用
    最新JMeter面试题,紧扣面试实际要求,看完拿下20K
    为什么使用命令行
    c语言编程 结构(struct)
    Qt | 拖放、拖动的使用、将文件拖入使用示例
  • 原文地址:https://blog.csdn.net/Wung123321/article/details/134538289