Keepalived与LVS高可用群集部署指南

Keepalived与LVS高可用群集部署指南

在企业级应用中,高可用性和负载均衡是确保服务稳定性的重要保障。本文将详细介绍Keepalived的工作原理、主要模块及其作用,并通过实际部署示例讲解如何使用Keepalived与LVS搭建高可用群集。

一、Keepalived的工作原理

Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)协议实现的高可用方案,主要用于解决 LVS 服务集群中的单点故障问题。在 LVS 服务集群中,通常配置一台主服务器(MASTER)和一台或多台备份服务器(BACKUP)。这些服务器对外提供统一的虚拟IP(VIP)地址。

1.1 Keepalived的工作机制

  • 主备切换:主服务器会定期发送 VRRP 通告信息给备份服务器,告知其自身的正常状态。当备份服务器未收到主服务器的 VRRP 信息时,即认为主服务器故障,会自动接管虚拟IP,继续对外提供服务,从而确保服务的高可用性。

1.2 Keepalived的主要模块

Keepalived 的体系架构主要由以下三个模块组成:

  • core模块:Keepalived 的核心模块,负责主进程的启动、维护,以及全局配置文件的加载和解析。
  • vrrp模块:实现 VRRP 协议,用于主备切换和虚拟IP地址的管理。
  • check模块:负责对后端服务器进行健康检查,常见的检查方式包括端口检查和 URL 检查。

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

接下来,我们将通过一个实际案例,演示如何配置和部署一个基于 LVS 和 Keepalived 的高可用群集。

2.1 环境说明

  • 主DR服务器192.168.10.80 (VIP:192.168.10.180
  • 备DR服务器192.168.10.23 (VIP:192.168.10.180
  • Web服务器1192.168.10.16
  • Web服务器2192.168.10.17
  • 客户端192.168.10.100

2.2 配置负载调度器

在主、备DR服务器上进行相同的配置。

  1. 安装必要软件并加载模块

    systemctl stop firewalld.service
    setenforce 0
    yum -y install ipvsadm keepalived
    modprobe ip_vs
    cat /proc/net/ip_vs  # 确认ip_vs模块已加载
    
  2. 配置Keepalived

    • /etc/keepalived/keepalived.conf中进行如下配置:
      global_defs {
          smtp_server 127.0.0.1
          router_id LVS_01  # 主服务器为LVS_01,备服务器为LVS_02
          # vrrp_strict  # 注释掉此行以避免VIP无法连接
      }
      
      vrrp_instance VI_1 {
          state MASTER  # 主服务器为MASTER,备服务器为BACKUP
          interface ens33
          virtual_router_id 10
          priority 100  # 主服务器优先级为100,备服务器为90
          advert_int 1
          authentication {
              auth_type PASS
              auth_pass abc123
          }
          virtual_ipaddress {
              192.168.10.180
          }
      }
      
      virtual_server 192.168.10.180 80 {
          delay_loop 6
          lb_algo rr
          lb_kind DR
          persistence_timeout 50
          protocol TCP
          real_server 192.168.10.16 80 {
              weight 1
              TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }
          }
          real_server 192.168.10.17 80 {
              weight 1
              TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }
          }
      }
      
  3. 配置VIP(虚拟IP)

    • 编辑 /etc/sysconfig/network-scripts/ifcfg-ens33:0
      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.10.180
      NETMASK=255.255.255.255
      
    • 启用虚拟网卡:
      systemctl restart network
      ifup ens33:0
      
  4. 启动 ipvsadm 服务

    • 在主、备DR服务器上分别执行:
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm
      ipvsadm -C
      ipvsadm -A -t 192.168.10.180:80 -s rr
      ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g
      ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -g
      ipvsadm -ln  # 查看配置
      
  5. 调整系统参数

    • 修改 /etc/sysctl.conf 关闭Linux 内核的重定向参数响应:
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0
      
    • 应用配置:
      sysctl -p
      

2.3 配置Web节点服务器

在两台 Web 服务器上进行以下操作:

  1. 安装并启动HTTP服务

    systemctl stop firewalld
    setenforce 0
    yum -y install httpd
    systemctl start httpd
    
  2. 配置虚拟IP

    • 编辑 /etc/sysconfig/network-scripts/ifcfg-lo:0
      DEVICE=lo:0
      ONBOOT=yes
      IPADDR=192.168.10.180
      NETMASK=255.255.255.255
      
    • 启用虚拟网卡:
      systemctl restart network
      ifup lo:0
      route add -host 192.168.10.180 dev lo:0
      
  3. 调整ARP响应参数

    • 修改 /etc/sysctl.conf,添加以下内容:
      net.ipv4.conf.lo.arp_ignore = 1
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2
      
    • 应用配置:
      sysctl -p
      
  4. 配置Web页面内容

    • 192.168.10.16上执行:
      echo 'this is kgc web!' > /var/www/html/index.html
      
    • 192.168.10.17上执行:
      echo 'this is benet web!' > /var/www/html/index.html
      

2.4 测试与验证

  1. 在客户端浏览器中访问 http://192.168.10.180/,可以看到通过LVS+Keepalived的负载均衡效果。
  2. 关闭主服务器的Keepalived服务后,再次访问,确保备服务器自动接管虚拟IP,继续提供服务:
    systemctl stop keepalived
    

2.4 测试与验证

  1. 在客户端浏览器中访问 http://192.168.10.180/,可以看到通过LVS+Keepalived的负载均衡效果。
  2. 关闭主服务器的Keepalived服务后,再次访问,确保备服务器自动接管虚拟IP,继续提供服务:
    systemctl stop keepalived
    

通过上述步骤,您可以成功搭建一个高可用的LVS+Keepalived群集,实现企业级服务的负载均衡和故障自动切换。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值