LVS + KeepAlived实现高可用负载均衡

上文已经介绍了lvs和keepalived的基本概念和用法,下面直接做lvs和keepalived来实现高可用负载均衡

配置:

主机名 ip 系统 用途
client 172.16.147.1 mac 客户端
lvs-keepalived-master 172.16.147.154 centos7.5 分发器
lvs-keepalived-slave 172.16.147.155 centos7.5 分发器备
test-nginx1 172.16.147.153 centos7.5 web1
test-nginx2 172.16.147.156 centos7.5 web2
vip
  1. 主备调度器安装软件

    [root@lvs-keepalived-master ~]# yum -y install ipvsadm keepalived
    [root@lvs-keepalived-slave ~]# yum -y install ipvsadm keepalived
    2. Keepalived
    lvs-master
    [root@lvs-keepalived-master ~]# vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived

    global_defs {
    router_id lvs-keepalived-master #辅助改为lvs-backup
    }

    vrrp_instance VI_1 {
    state MASTER
    interface ens33 #VIP绑定接口
    virtual_router_id 80 #VRID 同一组集群,主备一致
    priority 100 #本节点优先级,辅助改为50
    advert_int 1 #检查间隔,默认为1s
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    172.16.147.101/24 # 可以写多个vip
    }
    }

    virtual_server 172.16.147.101 80 { #LVS配置
    delay_loop 3
    lb_algo rr #LVS调度算法
    lb_kind DR #LVS集群模式(路由模式)
    net_mask 255.255.255.0
    protocol TCP #健康检查使用的协议
    real_server 172.16.147.153 80 {
    weight 1
    inhibit_on_failure #当该节点失败时,把权重设置为0,而不是从IPVS中删除
    TCP_CHECK { #健康检查
    connect_port 80 #检查的端口
    connect_timeout 3 #连接超时的时间
    }
    }
    real_server 172.16.147.156 80 {
    weight 1
    inhibit_on_failure
    TCP_CHECK {
    connect_timeout 3
    connect_port 80
    }
    }
    }

  2. 备用机安装和配置

    [root@lvs-keepalived-slave ~]# vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived

    global_defs {
    router_id lvs-keepalived-slave
    }

    vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    nopreempt #不抢占资源
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    172.16.147.101/24
    }
    }
    virtual_server 172.16.147.101 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    net_mask 255.255.255.0
    protocol TCP
    real_server 172.16.147.153 80 {
    weight 1
    inhibit_on_failure
    TCP_CHECK {
    connect_port 80
    connect_timeout 3
    }
    }
    real_server 172.16.147.156 80 {
    weight 1
    inhibit_on_failure
    TCP_CHECK {
    connect_timeout 3
    connect_port 80
    }
    }
    }

  3. 启动KeepAlived

    [root@lvs-keepalived-master ~]# systemctl start keepalived
    [root@lvs-keepalived-master ~]# systemctl enable keepalived

    [root@lvs-keepalived-master ~]# 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.147.101:80 rr persistent 20
    -> 172.16.147.153:80 Route 1 0 0
    -> 172.16.147.156:80 Route 0 0 0

  4. 所有RS配置(nginx1,nginx2)

    [root@test-nginx1 ~]# yum install -y nginx
    [root@test-nginx2 ~]# yum install -y nginx
    [root@test-nginx1 ~]# echo "ip addr add dev lo 172.16.147.101/32" >> /etc/rc.local
    [root@test-nginx1 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
    [root@test-nginx1 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
    [root@test-nginx1 ~]# sysctl -p
    [root@test-nginx1 ~]# echo "web1..." >> /usr/share/nginx/html/index.html
    [root@test-nginx1 ~]# systemctl start nginx
    [root@test-nginx1 ~]# chmod +x /etc/rc.local

上述步骤实现了两台机器的高可用并进行172.16.147.156和172.16.147.153的负载均衡

相关推荐
XIAOHEZIcode8 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦4 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw