环境准备

 

主机版本

Linux control-ha-3 4.4.0-45-generic #66-Ubuntu SMP Wed Oct19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Erlang版本号

Erlang/OTP 18 [erts-7.3] [source] [64-bit][async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3  (abortwith ^G)

rabbitmq版本

Version: 3.5.7-1

Depends: adduser, erlang-nox (>= 1:13.b.3) | esl-erlang,logrotate, init-system-helpers (>= 1.18~)

 

 

安装erlang

    # apt-get installerlang

 

常用命令

1      查看所有队列信息

# rabbitmqctl list_queues

2      关闭应用

# rabbitmqctl stop_app

3      启动应用,和上述关闭命令配合使用,达到清空队列的目的

# rabbitmqctl start_app

 

4      清除所有队列

# rabbitmqctl reset

5      更多用法及参数,可以执行如下命令查看

# rabbitmqctl

6      首先关闭

# rabbitmqctlstop_app

7      还原: 

# rabbitmqctlreset

8      启动:

# rabbitmqctlstart_app

9      添加用户: 

# rabbitmqctladd_user dftc dftcp@ss

10    设置权限:

# rabbitmqctlset_permissions -p / dftc ".*" ".*" ".*"

11    查看用户:

 # rabbitmqctllist_users

 

control1, control 2, control 3以及其相关配置

搭载了RabbitMQ服务的Ubuntu服务器。

1.      Control1具体网络配置如下:

Ip  address

192.168.163.141

net mask

255.255.255.0

gateway   

192.168.163.2

Dns

114.114.114.114

             

2.      Control2具体网络配置如下:

Ip  address

192.168.163.142

net mask

255.255.255.0

gateway   

192.168.163.2

Dns

114.114.114.114

      

3.      Control3具体网络配置如下:

Ip  address

192.168.163.143

net mask

255.255.255.0

gateway   

192.168.163.2

Dns

114.114.114.114

             

 

RabbitMQ单节点配置流程

1.     配置3台台可以接入公网的CentOS,然后在各机器中按序执行一下命令:

# apt-getinstall erlang -y

# wgethttps://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_5/rabbitmq-server_3.6.5-1_all.deb

# rabbitmq-server

# rabbitmq-pluginsenable rabbitmq_management

 

2.     在每个节点配置/etc/hosts中最后增加下面内容:

#vi  /etc/hosts

192.168.163.141 control1

192.168.163.142 control2

192.168.163.143 control3

 

 

输入erl确认erlang已经正确安装

当出现以上信息时表示安装完成。然后输入’halt().’退出即可。

然后在配置Erlang环境变量,vi /etc/profile文件,增加下面的环境变量:

#seterlang environment

exportPATH=$PATH:/opt/erlang/bin

 

 

3.     重启三台机器

#reboot

4.     构建起erlang的集群环境

Rabbitmq的集群是依赖于erlang的集群来工作的。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,所以必须保证各节点cookie保持一致,否则节点之间就无法通信。

 

使用以下命令将Control1中的/var/lib/rabbitmq/.erlang.cookie 复制到其他节点。在Control1节点运行以下命令:

#  scp /var/lib/rabbitmq/.erlang.cookie  root@192.168.163.142: /var/lib/rabbitmq/.erlang.cookie 

#  scp /var/lib/rabbitmq/.erlang.cookie  root@192.168.163.143: /var/lib/rabbitmq/.erlang.cookie 

 

由于文件是400的权限,所以在Control2以及Control3节点运行以下命令:

保证权限属主属组完全一致

#  chmod 400/var/lib/rabbitmq/.erlang.cookie 

#  chown rabbitmq.rabbitmq/var/lib/rabbitmq/.erlang.cookie 

 

完成后运行rabbitmqctl stop 然后 rabbitmq-server 重启服务

#  rabbitmqctl stop

    #  /sbin/service rabbitmq-server  restart

 

Control1节点增加用户,并且为用户赋予权限

#  rabbitmqctl add_user dftc dftcp@ss(测试环境使用queuep@ss

#  rabbitmqctl set_user_tags dftc administrator

#  rabbitmqctl set_permissions -p /  dftc '.*''.*' '.*'

 

通过http://192.168.163.141:15672 用户名为:dftc 密码为:dftcp@ss(测试环境使用queuep@ss)连入第一台配置成功的RabbitMQ服务器。其他节点暂不配置

 

 

 

Iptables打开对应端口,尤其注意436925672,没有打开的时候,添加集群会报错并提示打开

#rabbitmq cluster

-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT

RabbitMQ集群搭建

1.     RabbitMQ相关的配置

使用 -detached 参数,在各节点中运行以下命令:

#  rabbitmqctl stop

#  rabbitmq-server –detached

 

组成集群,在control2control3中分别运行以下命令:

#  rabbitmqctl stop_app

#  rabbitmqctl join_cluster --ramrabbit@rabbitmq-control1(跟据实际主机名确定)

#  rabbitmqctl start_app

 

可选步骤:在已经可用的Control1web页面,配置

spacer.gif

注:红框内的内容在没配置之前是没有的。