HAProxy + Keepalived 搭建高可用负载均衡集群
“ HAProxy + Keepalived 搭建高可用负载均衡集群”

01
—
环境准备
1.1 集群规划
准备四台 Linux 服务器或者虚拟机| 编号 | 描述 | IP | 
|---|---|---|
| 1 | 业务系统 | 192.168.3.20 | 
| 2 | 业务系统 | 192.168.3.21 | 
| 3 | HAProxy 1 + Keepalived 1 | 192.168.3.10 | 
| 4 | HAProxy 2 + Keepalived 2 | 192.168.3.11 | 
1.2 部署业务系统
在
192.168.3.20和192.168.3.21上部署好业务系统. 帅帅这里写了一个最简单的 SpringBoot 应用, 为了加以区别, 分别打包输出 Node1 和 Node2.

02
—
部署 HAProxy 搭建负载均衡集群
2.1 安装 HAProxy
分别在两台机器
192.168.3.10和192.168.3.11上安装 HAProxy.
yum install -y haproxy
2.2 配置 HAProxy
在两台机器
192.168.3.10和192.168.3.11上编辑配置文件
vi /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  app
    mode tcp
    bind *:9090
    option tcplog
    default_backend             app
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server  192.168.3.20 192.168.3.20:8080 check
    server  192.168.3.21 192.168.3.21:8080 check
#---------------------------------------------------------------------
# admin manager
#---------------------------------------------------------------------
listen stats
    bind *:1080
    stats auth admin:success123
    stats refresh 5s
    stats realm HAProxy\ Statistics
    stats uri /admin
2.3 启动 HAProxy
启动两台机器的 HAProxy
systemctl start haproxy
systemctl status haproxy
看到 HAProxy 显示
active (running)就表示启动起来了

2.4 验证
2.4.1 访问 HAProxy 的后台统计页面
访问
http://192.168.3.10:1080/admin和http://192.168.3.11:1080/admin可以看到两台业务系统都是运行状态就表示系统负载均衡配置完成.

2.4.2 访问业务系统
通过 HAProxy 访问业务系统:
http://192.168.3.10:9090/和http://192.168.3.11:9090/, 并多次切换观察负载均衡效果

03
—
部署 Keepalived 实现 HAProxy 主备模式
3.1 安装 Keepalived
在两台机器
192.168.3.10和192.168.3.11上安装 Keepalived
 yum install -y keepalived
3.2 配置 Keepalived
3.2.1 配置 Master 节点 192.168.3.10
! Configuration File for keepalived
global_defs {
   router_id app_router
}
vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.110
    }
    track_script {
        check_haproxy
    }
}
3.2.2 配置备份节点 192.168.3.11
! Configuration File for keepalived
global_defs {
   router_id app_router
}
vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.110
    }
    track_script {
        check_haproxy
    }
}
3.3 启动 Keepalived 主备模式
分别在两台机器上启动 keepalived
systemctl start keepalived

查看 VIP(由于我们配置了主节点优先级更高 200 --- 100), 因此 VIP 首先会在主节点.

3.4 通过 VIP 访问业务系统
现在就可以通过 VIP(
192.168.3.110)+port 的方式访问, 这样, 当主节点存活的情况下就会通过主节点(192.168.3.10)的 HAProxy 负载均衡访问业务系统, 如果主节点宕机, VIP 就会飘到备份节点上走备份节点的 HAProxy 负载均衡访问业务系统.

04
—
宕机测试
关闭主节点(192.168.3.10)模拟主节点宕机. 继续通过 VIP 访问发现依然可以访问业务系统. 即达到我们的高可用.
结论: 当主节点存活的情况下就会通过主节点(
192.168.3.10)的 HAProxy 负载均衡访问业务系统, 如果主节点宕机, VIP 就会飘到备份节点上走备份节点的 HAProxy 负载均衡访问业务系统.
05
—
视频教程
视频教程已经提前发布在 HAProxy + Keepalived 搭建高可用负载均衡集群架构.
感兴趣的朋友扫下方的 Bilibili 二维码查看视频教程, 大家记得一键三连哈.....哈哈哈哈...

扫码或者复制网页链接到浏览器都可以播放哦:
https://www.bilibili.com/video/BV1Fh411Y7hc
点击文档底部阅读原文可以跳转到我们 JavaFamily 官方博客站点哦(服务器资源紧缺, 加载比较慢, 耐心点哦, 亲).
如果有任何相关的问题都可以加入 QQ/微信群一起讨论, 学习, 进步. 此外如果有任何对于本公众号的意见和建议也欢迎大家留言积极批评指正, 最后, 愿你我都能成为更好的自己.
我是帅帅, 一个集帅气, 幽默与内涵, 并且热爱编程, 拥抱开源, 喜欢烹饪与旅游的暖男, 我们下期再见. 拜了个拜!
每文一骚
————
Why do we fall? So we can learn to pick ourselves up.
人为什么会跌倒? 因为这样我们才能学会振作
日常求赞
————
你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯.
关注加好友
拉你进大佬交流群
————————————————
