解决ProxySQL的单点问题

ProxySQL存在单点隐患,开源架构中解决单点故障最常用的应该及时keepalived了。尤其是主备服务之间不需要“实时同步数据或状态”的服务,最为适用(举个反例,MySQL双主的高可用架构如果用keepalived的话,由于切换VIP的动作还必须考慎重的考虑主从数据一致性问题,所以切换逻辑就会比较复杂。之前写过一篇该方案的文章

ProxySQL的配置支持配置文件和数据库接口(基于SQLite)两种,基于SQLite的方式配置灵活直观,并且我们平时观察ProxySQL的运行状态也是基于该数据库接口,由这一个入口进行ProxySQL的所有操作,也比较顺手。所以我选择了基于数据库接口的配置方式,但该方式有一个弊端,就是无法方便的判断两台ProxySQL的配置是否一致,这在VIP漂移时也是一个隐患。不过我们可以通过SQLite官方提供的一个小工具sqldiff来判断两个SQLite数据文件内容是否一致。

下面我们就通过sqldiff和keepalived及其状态监控机制来实现ProxySQL的故障转移并且在执行VIP漂移前自动判断配置文件是否一致并同步。

cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     ljk@xxx.com 
   }
   notification_email_from keepalived@xxx.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_proxysql {
    script "/etc/keepalived/check_proxysql.sh"
    interval 5
}

vrrp_instance proxysql {
    state BACKUP  #这里都为BACKUP(nopreempt才能生效)通过priority确定主备
    interface br0
    virtual_router_id 52
    priority 100
    advert_int 1

    #nopreempt  #注意主ProxySQL加,备ProxySQL上不需要加

    authentication {
        auth_type PA
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值