HAProxy对redis和mysql服务实现四层负载

本文档展示了如何配置haproxy作为负载均衡器,处理HTTP和TCP流量,包括web服务和数据库(MySQL及Redis)的连接。haproxy配置文件中定义了listen块来监听不同端口,并设置了服务器检查、负载均衡策略和cookie黏滞会话。后端服务器上分别安装并配置了Redis和MariaDB服务,确保对外提供服务。客户端通过haproxy成功访问到不同后端服务器的数据库实例。

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

haproxy的配置

注意:如果使用frontend和backend,一定在frontend和backend段中都指定mode tcp

[root@cen7_27 ~]# cat /etc/haproxy/conf.d/test.cfg 
listen web_port_80
   bind 10.0.0.27:80
   mode http
   balance roundrobin
   cookie WEBSRV insert nocache indirect
   server 10.0.0.40 10.0.0.40:80 check inter 3000 fall 2 rise 5 cookie web1
   server 10.0.0.50 10.0.0.50:80 check inter 3000 fall 2 rise 5 cookie web2

listen redis_port_6379
   bind 10.0.0.27:6379
   mode tcp
   balance leastconn
   server 10.0.0.40 10.0.0.40:6379 check    
   server 10.0.0.50 10.0.0.50:6379 check 

#使用frontend和backend实现
frontend mysql_port_3306
    bind :3306
    mode tcp                       #必须指定tcp模式
    default_backend mysql_port

backend mysql_port
    mode tcp                       #下面也必须使用tcp模式
    balance leastconn
    server 10.0.0.40 10.0.0.40:3306 check      #如果不写端口号,可以转发,但无法check
    server 10.0.0.50 10.0.0.50:3306 check
[root@cen7_27 ~]# 

[root@cen7_27 ~]# systemctl restart haproxy

在后端服务器安装和配置redis服务

[root@cent8_yzl_40 ~]# yum install -y redis
[root@cent8_yzl_40 ~]# sed -i '/^bind /c bind 0.0.0.0' /etc/redis.conf
[root@cent8_yzl_40 ~]# grep '^bind' /etc/redis.conf 
bind 0.0.0.0
[root@cent8_yzl_40 ~]# systemctl enable --now redis
[root@cent8_yzl_40 ~]# redis-cli set class 40
OK
[root@cent8_yzl_40 ~]# redis-cli get class
"40"
[root@cent8_yzl_40 ~]# 

在后端服务器安装和配置mariadb服务

[root@cent8_yzl_40 ~]# yum install -y mariadb-server
[root@cent8_yzl_40 ~]# systemctl enable --now mariadb

[root@cent8_yzl_40 ~]# mysql -e "grant all on *.* to test@'10.0.0.%' identified by 'redhat'"
[root@cent8_yzl_40 ~]# vim /etc/my.cnf

[mysqld]
server-id=40    #在另一台主机为50

[root@cent8_yzl_40 ~]# systemctl restart mariadb

#测试
[root@cent8_yzl_40 ~]# mysql -utest -predhat -h 10.0.0.40 -e 'select @@server_id'
+-------------+
| @@server_id |
+-------------+
|          40 |
+-------------+
[root@cent8_yzl_40 ~]# 

客户端测试

[root@cen7_17 ~]# yum install -y mariadb
[root@cen7_17 ~]# yum install -y redis
[root@cen7_17 ~]# redis-cli -h 10.0.0.27 get class
"50"
[root@cen7_17 ~]# redis-cli -h 10.0.0.27 get class
"40"
[root@cen7_17 ~]# mysql -utest -predhat -h 10.0.0.27 -e 'select @@server_id'
+-------------+
| @@server_id |
+-------------+
|          50 |
+-------------+
[root@cen7_17 ~]# mysql -utest -predhat -h 10.0.0.27 -e 'select @@server_id'
+-------------+
| @@server_id |
+-------------+
|          40 |
+-------------+
[root@cen7_17 ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y_zilong

一分钱的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值