beanstalkd高可用方案:keepalived+rsync

本文介绍了如何实现beanstalkd的高可用性,通过keepalived双backup模式结合rsync,在master主机故障时自动切换到backup运行。详细步骤包括安装beanstalkd、keepalived和rsync,配置相关服务及脚本,确保故障切换的平滑进行。此外,还提供了自动切换测试方法和后续的docker高可用方案研究计划。
摘要由CSDN通过智能技术生成

1.需求

实现beanstalkd的主备自动切换功能,当beanstalkd的master主机故障或者beanstalkd故障时,能自动切换到备机运行。

2.实现思路

采用keepalived双backup模式,并设置不抢占资源。当master挂机,切换为backup;完成修复后,不会抢占为master,避免不必要的切换。
假设两台主机如下,虚IP设成xx.xx.112.50(先确保该ip未被分配)。

  • mster host:xx.xx.112.190, ubuntu14.04
  • backup host:xx.xx.69.239, ubuntu14.04

安装步骤如下:
1. 安装beanstalkd
2. 安装rsync
3. 安装keepalived
4. 启动

源码见github:https://github.com/qinguanri/beanstalkd_HA
后续会研究基于docker的高可用方案

3.安装beanstalkd

在ubuntu下使用apt-get安装
sudo apt-get install beanstalkd
修改beanstalkd默认启动配置项/etc/default/beanstalkd
sudo cat /etc/default/beanstalkd
## Defaults for the beanstalkd init script, /etc/init.d/beanstalkd on
## Debian systems.

BEANSTALKD_LISTEN_ADDR=127.0.0.1
BEANSTALKD_LISTEN_PORT=11300

# You can use BEANSTALKD_EXTRA to pass additional options. See beanstalkd(1)
# for a list of the available options. Uncomment the following line for
# persistent job storage.
BEANSTALKD_EXTRA="-b /var/lib/beanstalkd" 

4.安装keeplived

sudo apt-get install keeplived
修改master主机上的/etc/keepalived/keepalived.conf配置文件
sudo cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id beanstalkd_router     # all node must same
}

vrrp_script chk_beanstalkd
{
    # exit 0 if beanstalkd is running, exit 1 if beanstalkd is inactive
    script "/etc/keepalived/scripts/beanstalkd_check.sh"

    interval 2 
    timeout 2
    fall 3                         # require 3 failures for failures
}

vrrp_script sync_bstk_binlog
{
    # usage: sh bstk_binlog_sync.sh -u SERVER_USER -h MASTER_IP. Please init before install
    script "/etc/keepalived/scripts/bstk_binlog_sync.sh -u qinguanri -h xx.xx.112.50"
    interval 30                    # backup binlog each 30 seconds
}

vrrp_instance beanstalkd {
    state BACKUP                   # master or backup, please init before install
    interface eth0                 # bind vip on eth0
    virtual_router_id 55           # all node must same
    priority  150                  # 
    advert_int 1                   # send keepalived msg every 1 second
    nopreempt                      # must need

    authentication {               # all node must same
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {
        xx.xx.112.50               
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值