centos搭建rabbitmq集群

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
  • 1

第四步:安装rabbitmq

你可以在RabbitMQ官方(http://www.rabbitmq.com/)下载各种RabbitMQ的安装版本,我这里用rpm文件进行安装即可。安装完成后,可以使用15672端口访问RabbitMQ的管理界面(默认的用户名和密码都是guest)。

配置rabbitmq的yum源
[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 enabledmochiwebwebmachine rabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_managementApplying plugin configuration to rabbit@localhost... started 6 plugins.# 重启rabbitmq服务生效[root@rabbitmq-01 sbin]# systemctl restart rabbitmq-server

这是web功能页面......................................................................................................................................................centos搭建rabbitmq集群_第1张图片

第七步:集群搭建

以上是单机版的:集群就是把几个单机的集合在一起。

个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步把其他两台机器的环境搭起来

第八步erlang.cookie

杀掉kafka-02 kafka-03 的rabbitmq进程:

#ps –ef|grep rab|awk ‘{print $2}’|xargs kill -9。–用service rabbitmq-servier stop停会有遗留进程。

登陆kafka-02kafka-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服务

centos搭建rabbitmq集群_第2张图片

安装到此结束

你可能感兴趣的:(centos搭建rabbitmq集群)