centos7安装rabbitmq以及Rabbitmq集群安装&&问题汇总解决!!!!

1、安装erlang:

因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang:

     rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm

 

###如果是集群几台rabbitmq的erlang的版本需要一致,否则加入节点时会失败!

2、安装Rabbitmq:

(1)官网源码包下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/

(2)、安装Rabbitmq版本为3.5.6.1:

下载包: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm

安装包: rpm -ivh rabbitmq-server-3.5.6-1.noarch.rpm

(3)、查看状态以及日志home_dir, .erlang.cookie文件在home dir目录下,后面需将该目录下的.erlang.cookie文件拷贝到另外两台机器上。

(4)、启动rabbitmq:

      service rabbitmq-server start

     关闭:service rabbitmq-server stop

   查看状态: rabbitmqctl status

(5)、安装命令维护插件

  rabbitmq-plugins enable rabbitmq_management

(6)、设置配置文件,并开启用户远程访问:

 

#cd /etc/rabbitmq
#cp /usr/share/doc/rabbitmq-server-3.5.6/rabbitmq.config.example /etc/rabbitmq/
#mv rabbitmq.config.example rabbitmq.config

 vi /etc/rabbitmq/rabbitmq.config

(7)、重启rabbit-server服务

 

   service rabbitmq-server restart

(8)、登录访问

  在浏览器中输入ip:15672即可出现登录页面,用户名和密码都是guest

 

(9)、开机启动:

chkconfig rabbitmq-server on

chkconfig  --list  查看

3、集群部署:

RabbitMQ集群模式
RabbitMQ集群中节点包括内存节点(RAM)、磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点。

2.普通模式(默认)
        对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。

        应用场景:该模式各适合于消息无需持久化的场合,如日志队列。当队列非持久化,且创建该队列的节点宕机,客户端才可以重连集群其他节点,并重新创建队列。若为持久化,只能等故障节点恢复。

3.镜像模式
        与普通模式不同之处是消息实体会主动在镜像节点间同步,而不是在取数据时临时拉取,高可用;该模式下,mirror queue有一套选举算法,即1个master、n个slaver,生产者、消费者的请求都会转至master。

        应用场景:可靠性要求较高场合,如下单、库存队列。

        缺点:若镜像队列过多,且消息体量大,集群内部网络带宽将会被此种同步通讯所消耗。

        PS:(1)镜像集群也是基于普通集群,即只有先搭建普通集群,然后才能设置镜像队列。(2)若消费过程中,master挂掉,则选举新master,若未来得及确认,则可能会重复消费。
 

######二台机器:

192.168.1.19 test-jIAY-op
192.168.1.108  op-rabbit2

vi /etc/hosts

192.168.1.19 test-jIAY-op
192.168.1.108 op-rabbit2

以上方法搭建2-3台rabbitmq主机,查看主节点的.erlang.cookie添加到其他节点:

###查看主节点.erlang.cookie:

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

###添加到分节点:

echo "BKHXYEWMFMCPMOGUUVBE"  > /var/lib/rabbitmq/.erlang.cookie

###test-jIAY-op作为主节点将 op-rabbit2加入集群中:

rabbitmqctl stop_app 
rabbitmqctl reset 
rabbitmqctl join_cluster rabbit@test-jIAY-op

###重启服务:

 service rabbitmq-server restart

###查看集群状态:

rabbitmqctl cluster_status

###启动web管理插件,几台台机器都要启动: 
rabbitmq-plugins enable rabbitmq_management 

####

PS:若希望修改节点类型,则(需要先Stop)

rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app

####常用命令:
rabbitmq-server -detached  启动RabbitMQ节点
rabbitmqctl start_app 启动RabbitMQ应用,而不是节点
rabbitmqctl stop_app  停止
rabbitmqctl status  查看状态
rabbitmqctl add_user mq 123456
rabbitmqctl set_user_tags mq administrator 新增账户
rabbitmq-plugins enable rabbitmq_management  启用RabbitMQ_Management
rabbitmqctl cluster_status 集群状态
rabbitmqctl forget_cluster_node rabbit@rabbit3 节点摘除 
rabbitmqctl reset application重置
 

 

 

###错误汇总:

解决:更换一致erl版本。

 

#####

在我更换了节点或者主节点后,无法将节点加入集群的问题:

解决方法:

删除节点上的数据记录后恢复:

你可能感兴趣的:(rabbitmq)