项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说)。

搭建环境

  CentOS7 64位

  RabbitMQ 3.6.2

  Keepalived 1.2.21

  主机:192.168.0.1   192.168.0.2   192.168.0.3   三台节点上安装rabbitmq服务

  Haproxy 安装在 192.168.1.1 和 192.168.1.2 上,用于对外提供 RabbitMQ 均衡

  Keepalived实现haproxy的主备,高可用(避免单点问题),192.168.1.1(主)192.168.1.2(备)

  全局图如下:

RabbitMQ集群搭建

单机上安装

  分别在192.168.0.1   192.168.0.2   192.168.0.3 节点上安装rabbitmq server。

  • 1.Install Erlang

    # yum install erlang
    测试erlang是否安装成功,输入:
    # erl //进入erl窗口则表示安装成功

  • 2.Install RabbitMQ Server

    # wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
    # yum install rabbitmq-server-3.6.2-1.noarch.rpm

  • 3.启动

    # /etc/init.d/rabbitmq-server start

  • 4.开机启动

    # chkconfig rabbitmq-server on
    测试是否安装成功:
    # rabbitmqctl status //查看rabbitmq的运行状态信息

  • 5.启用插件rabbitmq management

    # rabbitmq-plugins enable rabbitmq_management
    # /etc/init.d/rabbitmq-server restart

    输入http://ip:15672可以登录管理界面,默认账户guest/guest只能使用http://localhost:15672登录,要想远程登录,需要添加一个新的用户:
    # rabbitmqctl add_user admin 1234
    #用户设置为administrator才能远程访问
    $ sudo rabbitmqctl set_user_tags admin administrator
    $ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //该命令使用户admin具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源 
    查看所有用户#rabbitmqctl list_users

镜像集群搭建

  将192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群

  192.168.0.2和192.168.0.3节点上分别执行命令,加入到集群
    # rabbitmqctl stop_app
    # rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
    # rabbitmqctl start_app
    其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点

    查看集群的状态
    # rabbitmqctl cluster_status

  设置成镜像队列
  # rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' //意思表示以ha.开头的queue都会复制到各个节点 ["^"匹配所有]

Haproxy负载代理

  利用haproxy做负载均衡
  在192.168.1.1和192.168.1.2节点上
  安装haproxy
  # yum install haproxy

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

listen rabbitmq_local_cluster 0.0.0.0:
  #配置TCP模式
  mode tcp
  option tcplog
  #简单的轮询
  balance roundrobin
  #rabbitmq集群节点配置
  server rabbit1 192.168.0.1: check inter rise fall
  server rabbit2 192.168.0.2: check inter rise fall
  server rabbit3 192.168.0.3: check inter rise fall #配置haproxy web监控,查看统计信息
listen private_monitoring :
  mode http
  option httplog
  stats enable
  #设置haproxy监控地址为http://localhost:8100/stats
  stats uri /stats
  stats refresh 30s
  #添加用户名密码认证
  stats auth admin:

  #启动
  # haproxy -f haproxy.cfg
  #重启动
  # service haproxy restart

Keepalived安装

  利用keepalived做主备,避免单点问题,实现高可用

  在192.168.1.1和192.168.1.2节点上安装最新版keepalived

  192.168.1.1(主)修改keepalived.conf为:Primary配置:

vrrp_script chk_haproxy {
script "pidof haproxy"
interval
}
vrrp_instance VI_1 {
interface ens192
state MASTER
priority
virtual_router_id
unicast_src_ip 192.168.1.1
unicast_peer {
192.168.1.2
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10 //虚拟ip,对外提供服务
}
track_script {
chk_haproxy
}
notify_master /loadbtify_master.sh
}

  192.168.1.2(备)修改keepalived.conf为:Secondary配置:

vrrp_script chk_haproxy {
script "pidof haproxy"
interval
}
vrrp_instance VI_1 {
interface ens192
state BACKUP
priority
virtual_router_id
unicast_src_ip 192.168.1.2
unicast_peer {
192.168.1.1
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10
}
track_script {
chk_haproxy
}
notify_master /loadbtify_master.sh
}

  启动keepalived即可,192.168.1.10是对外提供的统一地址。

  通过192.168.1.10:5672就可以访问rabbitmq服务。

参考资料

https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#

http://www.rabbitmq.com/install-rpm.html

http://www.keepalived.org/download.html   //keepalived下载地址

rabbitmq+haproxy+keepalived实现高可用集群搭建的更多相关文章

  1. CentOS7 haproxy+keepalived实现高可用集群搭建

    一.搭建环境 CentOS7 64位 Keepalived 1.3.5 Haproxy 1.5.18 后端负载主机:192.168.166.21 192.168.166.22 两台节点上安装rabbi ...

  2. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  3. Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群

    一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...

  4. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  5. 集群相关、用keepalived配置高可用集群

    1.集群相关 2.keepalived相关 3.用keepalived配置高可用集群 安装:yum install keepalived -y   高可用,主要是针对于服务器硬件或服务器上的应用服务而 ...

  6. RabbitMQ和Kafka的高可用集群原理

    前言 小伙伴们,通过前边文章的阅读,相信大家已经对RocketMQ的基本原理有了一个比较深入的了解,那么大家对当前比较常用的RabbitMQ和Kafka是不是也有兴趣了解一些呢,了解的多一些也不是坏事 ...

  7. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  8. MHA 高可用集群搭建(二)

    MHA 高可用集群搭建安装scp远程控制http://www.cnblogs.com/kevingrace/p/5662839.html yum install openssh-clients mys ...

  9. .Net Core2.1 秒杀项目一步步实现CI/CD(Centos7.2)系列一:k8s高可用集群搭建总结以及部署API到k8s

    前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践过后的心得,k8s集群是购买了5台阿里云服务器部署的,这个集群差不多搞了一周时间,关于k8s的知识点,我也是刚入门,这方面的知识建议参考博客园 ...

随机推荐

  1. 【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)

    GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之 ...

  2. Android 设计模式 之 单例模式

    http://blog.csdn.net/fangchongbory/article/details/7734199   目录(?)[+] 单例模式常见情景 首先实现1中的单例模式A 实现2中单例模式 ...

  3. 用Editplus开发HTML

    准备工作 设置Editplus默认的打开浏览器为系统默认浏览器 取消Editplus的临时缓存文件 ☆ 设置不生成临时文件 这里的临时文件,指的是.bak文件,当你在Editplus下修改任意一个文件 ...

  4. [ZZ] 景深效果(Depth of Field) , Pass1 将场景渲染到一个RenderTarget,做为清晰版, Pass2: BluredRT , Pass3: WDepth = Depth / Far_Z_Clip

    http://blog.csdn.net/xoyojank/article/details/1883520   什么是景深效果? 景深效果,简称DOF,在人眼跟光学摄像设备上很常见.如下图: 简单地来 ...

  5. Spring MVC - log4j 配置

    http://blog.csdn.net/yhqbsand/article/details/8764388

  6. QQ截图时窗口自动识别的原理(WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx,RealChildWindowFromPoint)

    新版的QQ在截图时加入了窗口自动识别的功能,能根据鼠标的位置自动画出下面窗口的轮廓.今天有人在论坛上问起这个问题,下面我们来探讨这个功能的实现原理. 首先我们要明白截图软件的基本原理,截图时实际上是新 ...

  7. Android 展示控件之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系

    一.Surface Surface在SDK的文档中的描述是这样的:Handle onto a raw buffer that is being managed by the screen compos ...

  8. nvm 淘宝镜像

    找到里面的settings.txt node_mirror: https://npm.taobao.org/mirrors/node/npm_mirror: https://npm.taobao.or ...

  9. Windows CMD 支持ls命令

    /********************************************************************** * Windows CMD 支持ls命令 * 说明: * ...

  10. java连接OPC之——Windows7 With SP1 网络OPC的DCOM配置

    由于 OPC(OLE for Process Control)建立在 Microsoft 的 COM(COmponent Model)基础 上,并且 OPC 的远程通讯依赖 Microsoft 的 D ...