RabbitMQ是基于Erlang语言开发并运行的,所以安装RabbitMQ的第一步是安装Erlang运行环境
1:安装erlang,我们采用yum方式安装
第一步:添加源
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
[root@rabbitmq-01]# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
[root@rabbitmq-01]# rpm --import http://packages.erlang-solutions.com/rpm/erlang_solutions.asc
第二步:看一下新安装的源
[root@rabbitmq-01]# cat /etc/yum.repos.d/erlang_solutions.repo
[erlang-solutions]
name=Centos $releasever - $basearch - Erlang Solutions
baseurl=http://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=0
gpgkey=http://packages.erlang-solutions.com/debian/erlang_solutions.asc
enabled=1
第三步:安装erlang
# 默认安装最新的18.3-1版本
[root@rabbitmq-01]# yum install erlang erlang-wx
# 同事需要18.0的,按照源的地址在网页上下载
# http://packages.erlang-solutions.com/rpm/centos/7/x86_64/
# erlang-18.0-1.el7.centos.x86_64.rpm 和 erlang-wx-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/rpm/centos/7/x86_64/erlang-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/rpm/centos/7/x86_64/erlang-wx-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# yum install -y erlang-18.0-1.el7.centos.x86_64.rpm erlang-wx-18.0-1.el7.centos.x86_64.rpm
第四步:安装rabbitmq
你可以在RabbitMQ官方(http://www.rabbitmq.com/)下载各种RabbitMQ的安装版本,我这里用rpm文件进行安装即可。安装完成后,可以使用15672端口访问RabbitMQ的管理界面(默认的用户名和密码都是guest)。
[root@rabbitmq-01]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
第五步:安装
[root@rabbitmq-01]# wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.5.4/rabbitmq-server-3.5.4-1.noarch.rpm
[root@rabbitmq-01]# yum install -y rabbitmq-server-3.5.4-1.noarch.rpm
第六步:启动及开启远程web访问功能
[root@rabbitmq-01 sbin]# service rabbitmq-server start //需要在/usr/sbin中执行
[root@rabbitmq-01 sbin]# rabbitmq-plugins enable rabbitmq_management //开启web功能
The following plugins have been enabled
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@localhost... started 6 plugins.
# 重启rabbitmq服务生效
[root@rabbitmq-01 sbin]# systemctl restart rabbitmq-server
这是web功能页面......................................................................................................................................................
第七步:集群搭建
以上是单机版的:集群就是把几个单机的集合在一起。
个RABBITMQ集 群中可以共享user,virtualhosts,queues(开启Highly Available Queues),exchanges等。但message只会在创建的节点上传输。当message进入A节点的queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。
RABBITMQ的集群节点包括内存节点、磁盘节点。内存节点的元数据仅放在内存中,性能比磁盘节点会有所提升。不过,如果在投递message时,打开了message的持久化,那么内存节点的性能只能体现在资源管理上,比如增加或删除队列(queue),虚拟主机(vrtual hosts),交换机(exchange)等,发送和接受message速度同磁盘节点一样。一个集群至少要有一个磁盘节点。
环境:有三台主机,主机名和IP如下
主机名 IP
kafka-01 10.0.2.7
kafka-02 10.0.2.8
kafka-03 10.0.2.9
按以上6步把其他两台机器的环境搭起来
杀掉kafka-02 和kafka-03 的rabbitmq进程:
#ps –ef|grep rab|awk ‘{print $2}’|xargs kill -9。–用service rabbitmq-servier stop停会有遗留进程。
登陆kafka-02(kafka-021上的rabbitmq服务不能关),执行
#cd /var/lib/rabbitmq –进入erlang.cookie所在目录,只有ls –al能看见此文件
#chmod 777 .erlang* –该文件默认为400权限,为方便传输,先修改权限,非必须操作
#scp .erlang.cookie rabbitmq@kafka-02 :/var/lib/rabbitmq –将此文件传给另外两条主机
#scp .erlang.cookie rabbitmq@kafka-03:/var/lib/rabbitmq
#chmod 400 .er* –恢复文件权限
分别在kafka-02 和kafka-023上执行
#service rabbitmq-server start
第八步:组建集群
查询kafka-021节点名称
#rabbitmqctl cluster_status
Cluster status of node rabbit@kafka-021…
[{nodes,[{disc,[rabbit@kafka-021]}]},{running_nodes,[rabbit@ kafka-021]}]
…done.
kafka-02 加入kafka-021节点.
以下在kafka-02 和kafka-03机器上执行
# rabbitmqctl stop_app –关掉kafka-02 服务
# rabbitmqctl join_cluster rabbit@kafka-01 — kafka-02加入kafka-01, kafka-02 必须能通过kafka-01的主机名ping通kafka-01。
# rabbitmqctl start_app –启动kafka-02 服务
同理组建kafka-03
#rabbitmqctl stop_app –停止rabbitmq服务
#rabbitmqctl change_cluster_node_type disc/ram –更改节点为磁盘或内存节点
#rabbitmqctl start_app –开启rabbitmq服务
安装到此结束