环境:
ip | z主机名 | c操作系统 |
10.0.0.1 | test1 | Centos7.2 |
10.0.0.2 | test2 | Centos7.2 |
10.0.0.3 | test3 | Centos7.2 |
一、安装依赖环境。
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget
二、防火墙、主机与ip间的映射。
1. 关闭或设置防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
2. 建立主机和ip间的映射关系
vi /etc/hosts
10.0.0.1 test1
10.0.0.2 test2
10.0.0.3 test3
三、安装erlang,因为RabbitMQ基于erlang开发。
1. 安装erlang
cd /data/tmp
tar -xvzf otp_src_18.3.tar.gz -C /usr/local/
cd /usr/local/otp_src_18.3
./configure --prefix=/usr/local/erlang
make &&make install
2. 配置环境变量
vim /etc/profile
#set erlang environment
ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH
source /etc/profile
3. 测试,如果进入erlang的shell则表示成功
erl
四、安装RabbitMQ(以下为test1部署,同理部署test2、test3)。
1. 下载解压
cd /data/tmp
tar -xvzf rabbitmq-server-generic-unix-3.5.4.tar.gz -C /data/local/rabbitmq-server
cd /data/local
mv rabbitmq-server-3.5.4 rabbitmq-server
2. 配置环境变量
vim /etc/profile
# rabbitmq evironment configration
export PATH=$PATH:/data/local/rabbitmq-server/sbin
source /etc/profile
3. 启动RabbitMQ server (如提示找不到命令,请检查环境变量路径是否正确)
rabbitmq-server -detached
rabbitmqctl status/stop/list_users ## 查看状态、停止服务、列出角色命令
rabbitmqctl cluster_status 查看当前节点集群状态
Cluster status of node rabbit@test1 ...
[{nodes,[{disc,[rabbit@test1]}]},
{running_nodes,[rabbit@test1]},
{cluster_name,<<"rabbit@test1">>},
{partitions,[]}]
4. 配置web页面插件
rabbitmq-plugins enable rabbitmq_management
5. 访问管理页面测试 10.0.0.1:15672 (此时没有登录用户)
6. 添加管理员账号
rabbitmqctl add_user admin 123.abc ## 添加用户,后面两个参数是用户名和密码.
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ## 添加权限
rabbitmqctl set_user_tags admin administrator ## 修改用户角色
7. 登录测试,删除guest用户,安装完成。
四、配置MQ集群。
1. 设置节点间认证cookie(将test1上的拷贝到其他两台)
scp /root/.erlang.cookie 10.0.0.2:/root/
scp /root/.erlang.cookie 10.0.0.2:/root/
2. 加入到test1的集群(分别在test2、test3上操作)
rabbitmqctl stop_app # 先停掉节点,否则join_cluster会清除该节点所有资源和数据
rabbitmqctl join_cluster rabbit@test1 # 加入集群
rabbitmqctl start_app # 启动节点
rabbitmqctl cluster_status # 查看集群状态,test2、test3都执行完集群应该有三个节点
3. 测试(停掉其中一台,看集群状态的变化)
五、退出集群(当某台机器不需要再存在于集群中时,test3为例)。
1. rabbitmqctl stop_app ## 停掉需要提出的节点
2. rabbitmqctl reset ## 踢出集群
3. rabbitmqctl start_app ## 启动集群
4. rabbitmqctl cluster_status ## 查看该机器当前集群状态
五、重要提示。
(1)、当整个集群down掉时,最后一个down机的节点必须第一个启动到在线状态,如果不是这样,节点会等待30s等最后的磁盘节点恢复状态,然后失败。如果最后下线的节点不能上线,可以通过forget_cluster_node 指令来踢出集群。
(2)、如果所有的节点不受控制的同时宕机,比如掉电,会进入所有的节点都会认为其他节点比自己宕机的要晚,即自己先宕机,这种情况下可以使用force_boot指令来启动一个节点。
六、其他
1. 关于用户
新增用户:rabbitmqctl add_user username password
删除用户:rabbitmqctl delete_user username
修改密码:rabbitmqctl change_password Username Newpassword
查看当前用户列表:rabbitmqctl list_users
2. 关于角色(五类系统角色)
a. 角色分类
administrator 超级管理员:可查看所有的信息,可以对用户,策略进行操作。
monitoring 监控者:可登陆管理控制台查看rabbitmq节点的相关信息(进程数、内存、磁盘使用情况等)。
policymaker 策略制定者:可登陆管理控制台对policy进行管理。但无法查看节点的相关信息。
management 普通管理者:仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他用户:无法登陆管理控制台,通常就是普通的生产者和消费者。
b. 相关命令
修改用户角色:rabbitmqctl set_user_tags username administrator
也可以赋予多个角色:rabbitmqctl set_user_tags username administrator monitoring
3. 关于权限(用户权限指的是用户对exchange,queue的操作权限)
a. 权限分类
配置权限:配置权限会影响到exchange,queue的声明和删除。
读写权限:读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。
b. 相关命令
设置用户权限:使用户admin具有在vhost1这个/virtual host中所有资源的配置、写、读权限
rabbitmqctl set_permissions -p /vhost1 user_admin ‘.*‘ ‘.*‘ ‘.*‘
查看(指定hostpath)所有用户的权限信息
rabbitmqctl list_permissions -p /vhost1
查看指定用户的权限信息
rabbitmqctl list_user_permissions User
清除用户的权限信息
rabbitmqctl clear_permissions -p /vhost1 User