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

JavaFamily

共 4833字,需浏览 10分钟

 · 2021-06-23

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




01


环境准备


1.1 集群规划

准备四台 Linux 服务器或者虚拟机


编号描述IP
1业务系统192.168.3.20
2业务系统192.168.3.21
3HAProxy 1 + Keepalived 1192.168.3.10
4HAProxy 2 + Keepalived 2192.168.3.11

1.2 部署业务系统

192.168.3.20192.168.3.21 上部署好业务系统. 帅帅这里写了一个最简单的 SpringBoot 应用, 为了加以区别, 分别打包输出 Node1 和 Node2.


02


部署 HAProxy 搭建负载均衡集群


2.1 安装 HAProxy

分别在两台机器 192.168.3.10192.168.3.11 上安装 HAProxy.

yum install -y haproxy

2.2 配置 HAProxy

在两台机器192.168.3.10192.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/adminhttp://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.10192.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.
人为什么会跌倒? 因为这样我们才能学会振作


日常求赞

你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯.



关注加好友


拉你进大佬交流群





浏览 58
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报