lvs keepalived 负载均衡器

本文介绍如何使用LVS和Keepalived搭建高可用的负载均衡集群。包括配置Nginx服务器、设置虚拟IP、配置Keepalived实现主备切换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lvs keepalived 实现负载均衡

环境
主机名IP地址os软件
lvs01172.16.50.104CentOS 7.4.1708ipvsadm keepalivedmaster
lvs02172.16.50.111CentOS 7.4.1708ipvsadm keepalivedbackup
nginx01172.16.50.124CentOS 7.4.1708nginx
nginx02172.16.50.112CentOS 7.4.1708nginx

Vip地址 172.16.50.230

部署
Nginx 部署

主机nginx01,nginx02

yum install nginx -y

启动

systemctl enable nginx && systemctl start nginx

主机nginx01

echo "124" > /usr/share/nginx/html/index.html 

主机nginx02

echo "112" > /usr/share/nginx/html/index.html 

创建realserver.sh脚本,内容如下:

#!/bin/bash
#description: Config realserver

VIP=172.16.50.230

. /etc/rc.d/init.d/functions
case "$1" in
start)
       /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       /sbin/ifconfig lo:0 down
       /sbin/route del $VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac

exit 0

添加执行权限及运行脚本

chmod +x realserver.sh && ./realserver.sh start
lvs,keepalived 部署

开启路由转发

临时生效

echo "1" > /proc/sys/net/ipv4/ip_forward

永久生效,编辑配置文件/etc/sysctl.conf添加

net.ipv4.ip_forward= 1
sysctl -p #生效

主机 lvs01,lvs02

yum install ipvsadm keepalived -y

主机lvs01编辑配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived

! 全局配置
global_defs {
   ! 标识
   router_id keep-50.104
}

! VRRPD配置
vrrp_instance VI_1 {
    ! 指定该keepalived节点的初始状态:MASTER|BACKUP
    state MASTER
    ! vrrp实例绑定的接口,用于发送VRRP包
    interface eth0
    ! 指定VRRP实例ID,范围是0-255,主备的virtual_router_id 必须相同
    virtual_router_id 51
    ! 指定优先级,优先级高的将成为MASTER
    priority 100
    ! 指定发送VRRP通告的间隔,单位秒
    advert_int 1
    authentication {
        ! 指定认证方式:PASS|AH
        auth_type PASS
        ! 指定认证所使用的密码,最多8位
        auth_pass 1111
    }
    virtual_ipaddress {
        ! 指定VIP地址
        172.16.50.230
    }
}

virtual_server 172.16.50.230 80 {
    ! 健康检查的时间间隔
    delay_loop 6
    ! LVS调度算法:rr|wrr|lc|wlc|lblc|sh|dh
    lb_algo rr
    ! LVS模式:NAT|DR|TUN
    lb_kind DR
    ! 持久化超时时间,单位秒
    persistence_timeout 50
    ! 协议: TCP|UDP|SCTP
    protocol TCP

    ! 后端服务器
    real_server 172.16.50.124 80 {
        ! 权重
        weight 1
        ! 健康检查方式
        TCP_CHECK {
            ! 超时时间,单位秒
            connect_timeout 3
            ! 尝试次数
            nb_get_retry 3
            ! 在尝试之前延迟多少秒
            delay_before_retry 10
            ! 尝试间隔
            delay_before_retry 2
        }
    }

    real_server 172.16.50.112 80 {
        ! 权重
        weight 1
        ! 健康检查方式
        TCP_CHECK {
            ! 超时时间,单位秒
            connect_timeout 3
            ! 尝试次数
            nb_get_retry 3
            ! 在尝试之前延迟多少秒
            delay_before_retry 10
            ! 尝试间隔
            delay_before_retry 2
        }
    }
}

主机lvs02 参考主机lvs01配置文件

修改部分

router_id keep-50.111
state BACKUP
priority 90

启动

systemctl enable keepalived && systemctl start keepalived
测试
ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.50.230:80 rr persistent 50
  -> 172.16.50.112:80             Route   1      0          0         
  -> 172.16.50.124:80             Route   1      0          0         
curl 172.16.50.230
112
  1. 停止主机nginx02 Nginx 服务

    观察主机lvs01 keepalived日志

    lvs01keepalived[10879]: TCP connection to [172.16.50.112]:80 failed.
    Keepalived_healthcheckers[10879]: TCP connection to [172.16.50.112]:80 failed.
    Keepalived_healthcheckers[10879]: Check on service [172.16.50.112]:80 failed after 1 retry.
    Keepalived_healthcheckers[10879]: Removing service [172.16.50.112]:80 from VS [172.16.50.230]:80
    curl 172.16.50.230
    124
  2. 停止主机lvs01 Keepalived 服务

    观察主机lvs02 Keepalived 日志

    Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Transition to MASTER STATE
    Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Entering MASTER STATE
    Keepalived_vrrp[10774]: VRRP_Instance(VI_1) setting protocol VIPs.
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230
    Keepalived_vrrp[10774]: Sending gratuitous ARP on eth0 for 172.16.50.230

    Vip地址漂移到了主机 lvs02

转载于:https://blog.51cto.com/11889458/2114097

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值