RabbitMQ集群高可用部署

参考文档

RabbitMQ从基础概念到高可用实践(2/2)

CentOS7haproxy+keepalived实现高可用集群搭建

目标

两节点镜像,使用HAproxy进行服务负载均衡和高可用,Keepalived实现VIP高可用

部署步骤

环境

admin-node:192.168.56.110

node1:192.168.56.111

虚拟IP:192.168.56.110

RabbitMQ

1、两节点安装RabbiMQ服务

yum install rabbitmq-server

2、启动服务

systemctl start rabbitmq-server.service

rabbitmq-server –detached

-detached代表后台守护进程方式启动

3、启动后,查看rabbitmq状态

rabbitmqctl status

4、配置网页插件

rabbitmq-plugins enablerabbitmq_management

5、在浏览器输入IP:15672就可以访问web管理界面

6、配置web界面的用hu

rabbitmqctl add_user sxr sxr  #添加用户,后面两个参数分别是用户名和密码

rabbitmqctl set_permissions sxr".*"".*"".*"#添加权限

rabbitmqctl set_user_tags sxr administrator #修改用户角色

7、修改 /etc/hosts,添加

192.168.56.110 admin-node

192.168.56.111 node1

8、设置Erlang Cookie

RB的集群是依附于Erlang的集群来工作的,所以必须先构建起Erlang的集群景象,各个节点的这个文件必须要保持一致。

Erlang Cookie 文件:/var/lib/rabbitmq/.erlang.cookie。这里将 admin-node的该文件复制到 node1

scp root@admin-node \

/var/lib/rabbitmq/.erlang.cookie  /var/lib/rabbitmq/.erlang.cookie

9、组成集群。在node1上先停止RabbitMQ应用,加入集群,然后在启动

rabbitmqctl stop_app

rabbitmqctl join_clusterrabbit@admin-node

rabbitmqctl start_app

为了提高性能,不需要两个节点都是disc的节点,所以我们可以启动一个节点为RAM模式。

rabbitmqctl change_cluster_node_type  ram

10、查看集群状态

rabbitmqctl cluster_status

HAproxy

1、两节点安装haproxy

yum install haproxy –y

2、两节点修改配置文件

vi /etc/haproxy/haproxy.cfg 之后添加:

listen rabbitmq_local_cluster0.0.0.0:56722

    mode tcp

    option tcplog

    balance roundrobin

    server admin-node 192.168.56.110:56722check inter 5000 rise 2 fall 2

    server node1 192.168.56.111:56722 checkinter 5000 rise 2 fall 2

listen admin_stats

    stats enable

    bind *:9090

    mode http

    option httplog

    log global

    maxconn 10

    stats refresh 30s

    stats uri /admin

    stats realm haproxy

    stats auth sxr:sxr

    stats hide-version

Keepalived

1、两节点安装keepalived服务

yum install keepalived –y

2、主节点(admin-node)修改配置文件

global_defs {

  router_id admin-node

}

vrrp_script chk_haproxy

{

  script"/etc/keepalived/scripts/haproxy_check.sh"

  interval 2

  timeout 2

  fall 3

}

vrrp_instance haproxy {

  state MASTER

  interface eth0

  virtual_router_id  29

  priority 150

  authentication

  {

    auth_type PASS

    auth_pass 29

  }

  virtual_ipaddress

  {

    192.168.56.150

  }

  track_script

  {

    chk_haproxy

  }

  notify_master"/etc/keepalived/script/haproxy_master.sh"

}

3、修改备用节点(node1)。和主节点很像,只是state和priority不同

global_defs {

  router_id node1

}

vrrp_script chk_haproxy

{

  script"/etc/keepalived/scripts/haproxy_check.sh"

  interval 2

  timeout 2

  fall 3

}

vrrp_instance haproxy {

  state BACKUP

  interface eth0

  virtual_router_id  29

  priority 100

  authentication

  {

    auth_type PASS

    auth_pass 29

  }

  virtual_ipaddress

  {

    192.168.56.150

  }

  track_script

  {

    chk_haproxy

  }

  notify_master"/etc/keepalived/script/haproxy_master.sh"

}

4、两个测试脚本的内容

【haproxy_check.sh文件内容】

     #!/bin/bash

    LOGFILE="/var/log/keepalived-haproxy-state.log"

     date >> $LOGFILE

     if [ `ps -C haproxy --no-header |wc -l`-eq 0 ];then

     echo "fail: check_haproxystatus" >> $LOGFILE

     exit 1

     else

     echo "success: check_haproxystatus" >> $LOGFILE

     exit 0

     fi

【haproxy_master.sh文件内容】

     #!/bin/bash

     LOGFILE="/var/log/keepalived-haproxy-state.log"

     echo"Being Master ..." >> $LOGFILE

5、启动keepalived

systemdctl startkeepalived.service

测试

1)关闭主keepalived,VIP是否切换至备机,VIP访问RabbitMQweb界面(验证keepalived高可用)

2)关闭主HAproxy,VIP是否切换至备机,业务是否正常,恢复原状;(验证HAproxy高可用)

3)关闭后台服务器admin-node,VIP访问RabbitMQ web界面。(验证HAproxy状态检查)

猜你喜欢

转载自blog.csdn.net/heavyfish/article/details/80927120