RabbitMQ集群安装配置+HAproxy+Keepalived高可用
rabbitmq 集群 消息队列
RabbitMQ简介RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。因此,面向消息的中间件 (MOM)系统,例如发布/订阅队列,没有作为基本元素实现。反而通过发送简化的AMQ实体,用户被赋予了构建例如这些实体的能力。这些实体也是规范的一 部分,形成了在线路层协议顶端的一个层级:AMQP模型。这个模型统一了消息模式,诸如之前提到的发布/订阅,队列,事务以及流数据,并且添加了额外的特 性,例如更易于扩展,基于内容的路由。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
1. 安装之前首先确认自己的系统版本和位数,然后选择适合的安装程序。
查看系统版本:cat /etc/issue
查看系统位数:cat /proc/cpuinfo |grep “clflush size”
2. 浏览博客,论坛,官网以及开源主页,尽量避免选择有重大缺陷版本
比如3.6.3版本rabbitmq的web端管理界面不能查看、管理queues
https://github.com/rabbitmq/rabbitmq-server/issues
避免选择最高版本Erlang,3.6.4之前所有版本rabbitmq均不完全兼容当前最新的(2016.8)19.0 Erlang。同时选择高于等于R16B03的Erlag。
1. 安装之前可以根据需要先修改好hostname,可以修改为有意义的名称,比如node1、node2等,安装之后再修改会出现一系列问题。
方式1:hostname命令查看,修改
方式2:配置文件中修改
# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=m12. 修改hosts文件,将集群所有机器 ip hostname 分别添加到每一台机器中 ,比如。
vi/etc/hosts 127.0.0.1 localhost 127.0.0.1 m1 ::1 localhost 192.168.12.190 m1 192.168.12.190 m2 192.168.12.192 n1 192.168.12.193 n2 192.168.12.194 n3 安装过程(下载rpm安装包安装)
1. 下载软件源到/etc/yum.repos.d/ ,并生成缓存
wget –no-cache -O /etc/yum.repos.d/convirt.repo yum makecache2. 安装Socat
yum install -y socat3. 下载安装Erlang
选择版本号尽量高的推荐18
下载地址https://packages.erlang-solutions.com/erlang/
4. 下载安装RabbitMq 3.6.2
wget yum localinstall -y rabbitmq-server-3.6.2-1.noarch.rpm(如果提示依赖问题,先安装依赖,提示erlang版本直接跳过
yum localinstall --skip-broken rabbitmq-server-3.6.2-1.noarch.rpm 或rpm -ivh --nodeps rabbitmq-server-3.6.2-1.noarch.rpm)
到此安装结束!
RabbitMQ配置 单机配置启动服务
service rabbitmq-server start查看运行状态
rabbitmqctl status开启管理扩展(关闭为disable)
rabbitmq-plugins enable rabbitmq_management开启之后可以用浏览器访问管理界面::15672
默认用户名密码 guest:guest
如果提示不能登录就需要新建账户,见下文添加用户操作。
查看端口监听状态 5672为集群间通信端口,15672为web端管理端口
netstat -atn |grep 5672 [root@n3 ~]# netstat -atn |grep 5672 tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN tcp 0 0 :::5672 :::* LISTEN添加账户(只需要在一台机器上设置,加入集群后会同步到所有机器)
rabbitmqctl add_user username password添加账户标签(administrator)
rabbitmqctl set_user_tags username administrator