ShardingSphere-Proxy 负载均衡故障转移

本文介绍了如何在单机和微服务环境下,通过Haproxy实现对ShardingSphere-proxy的高可用集群部署,包括添加用户、配置代理、监控管理及故障转移策略,确保服务的稳定性和连续性。

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

单机状态下,要是 ShardingSphere-proxy 服务出现故障不可用,整个服务读写均会出现故障,导致整体服务不可以,微服务状态下更会导致整个集群故障,引发更严重的后果,本次生产环境需要实现如下需求:

  1. 负载均衡

  2. 故障转移

  3. 不停机维护

架构图如下

ababa094887c065ae39ce6a7133fb844.png

组件
主机备注
Haproxy 192.168.32.200下载地址见文末原文链接 
ShardingSphere-proxy 192.168.1.166:3307
ShardingSphere-proxy 192.168.1.166:3308
ShardingSphere 所在宿主机192.168.1.166 

跟着我一起实现 Haproxy 对 ShardingSphere-proxy 进行集群部署。

01

添加用户

#添加haproxy组
groupadd -r haproxy
#创建nginx运行账户haproxy并加入到haproxy组,不允许haproxy用户直接登录系统
useradd -r -g haproxy -M -s /sbin/nologin haproxy

02

下载安装

mkdir -p /home/haproxy
cd /home/haproxy
tar -zxvf haproxy-2.3.5.tar.gz
make TARGET=linux-glibc PREFIX=/usr/local/haproxy
make install TARGET=linux-glibc PREFIX=/usr/local/haproxy
mkdir -p /usr/local/haproxy/{conf,log,errorfiles}

03

配置代理 ShardingSphere-proxy

touch /usr/local/haproxy/conf/haproxy.cfg
vim /usr/local/haproxy/conf/haproxy.cfg

配置文件

global
   daemon   # 后台方式运行
   nbproc 1
   chroot /usr/local/haproxy
   pidfile haproxy.pid
   user haproxy
   group haproxy
defaults
   mode tcp               #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
   retries 2               #两次连接失败就认为是服务器不可用,也可以通过后面设置
   option redispatch       #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
   option abortonclose     #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
   maxconn 65530            #默认的最大连接数
   timeout connect 5000ms  #连接超时
   timeout client 30000ms  #客户端超时
   timeout server 30000ms  #服务器超时
   #timeout check 2000      #=心跳检测超时
   log 127.0.0.1 local3  info #[err warning info debug],日志文件的输出定向。产生的日志级别为local3. 系统中local1-7,用户自己定义
   balance roundrobin      # 采用轮询算法

当出现此类分片键处于运算表达式或函数中的 SQL 时,ShardingSphere 将采用全路由的形式获取结果。

  • 配置

listen delegate                         #这里是配置负载均衡,test1是名字,可以任意
   bind 0.0.0.0:3307            #这里是监听的IP地址和端口,端口号可以在0-65535之间,要避免端口冲突
   mode tcp                     #连接的协议,这里是tcp协议
   #maxconn 4086
   #log 127.0.0.1 local0 debug
   #option httplog                ###日志类别,记载http日志
   #option dontlognull            ###不记录空连接产生的日志信息
   option httpclose              ###每次请求完毕后主动关闭http通道,haproxy不支持keep-alive
   retries 3      ###3次连接失败就认为服务器不可用,主要通过后面的check检查
   server s1 192.168.1.166:3307 check #负载的MySQL实例1
   server s2 192.168.1.166:3308 check #负载的MySQL实例2 可以有多个,往下排列即
  • 系统状态配置

listen haproxy_stats
   stats   enable
   bind    *:8082
   mode    http
   option  httplog
   log     global
   maxconn 10
   stats   refresh 30s
   stats   uri /admin
   stats   realm haproxy
   stats   auth admin:admin
   stats   hide-version
   stats   admin if TRUE

04

修改启动脚本,配置开机启动

# 将源码目录下的examples/haproxy.init复制到/etc/init.d/下
cp /home/haproxy/haproxy-2.3.5/examples/haproxy.init /etc/init.d/haproxy
# 添加执行权限
chmod +x /etc/init.d/haproxy
修改启动脚本,加入如下配置


vim /etc/init.d/haproxy
# 修改调整Begin
BASENAME=`haproxy`
BIN=/usr/local/haproxy/sbin/haproxy
CFG=/usr/local/haproxy/conf/haproxy.cfg
[ -f $CFG ] || exit 1


PIDFILE=/var/run/haproxy.pid
LOCKFILE=/var/lock/subsys/$BASENAME
# 修改调整END


# 添加service服务
chkconfig -–add /etc/init.d/haproxy

05

启动

systemctl start haproxy

06

管理界面信息查看

http://192.168.32.200:8082/admin_stats

用户名密码:admin/admin

e0059e7afc2cc0462053bb6c96262dc4.png

outside_default.png

outside_default.png

S1 S2两服务启动,可以通过界面进行管理,包括服务下线,保护模式设置,维护可以通过界面设置单独处理,保证有当前有一个可用服务 更多内容可查看原文(https://blog.nxhz1688.com/2021/03/22/sharding-proxy-load/),包含具体配置。

本文由郑思扬授权转载

关于 Apache ShardingSphere

Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。

95f9aa1b68c94c80dabd26bbda93d9fd.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值