rabbitmq安装
目录
rabbitmq rpm安装
一、基础环境设置
## 实验说明
host1作为master
操作系统 centos7.5
host1 192.168.4.61
host2 192.168.4.62
## 设置hosts
[root@oldboy mq]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.61 oldboy
192.168.4.62 liudada
## 创建环境目录:
mkdir /server/mq -p
cd /server/mq
二、安装erlang
host1和host2上安装
下载
wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-21.3.8.7-1.el7.x86_64.rpm/download.rpm
安装
yum localinstall -y erlang-21.3.8.7-1.el7.x86_64.rpm
验证erlang:
[root@liudada mq]# erl
Erlang/OTP 21 [erts-10.3.5.5] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V10.3.5.5 (abort with ^G)
1>
二、 安装rabbitmq
host1和host2上安装
下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.18/rabbitmq-server-3.7.18-1.el7.noarch.rpm
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
用yum安装
yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm
用rpm安装可能会报错:
[root@liudada mq]# rpm -ivh rabbitmq-server-3.7.18-1.el7.noarch.rpm
warning: rabbitmq-server-3.7.18-1.el7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY
error: Failed dependencies:
socat is needed by rabbitmq-server-3.7.18-1.el7.noarch
解决:
yum install socat -y
==host1做上执行==
启动rabbitmq
rabbitmq-server -detached
查看rabbitmq状态
rabbitmqctl status
host1启动web管理界面
rabbitmq-plugins enable rabbitmq-managemen
四、集群部署:
4.1、同步cookie(host1作为master,所以在host1操作同步)
设置ssh-key
[root@oldboy mq]# ssh-keygen -t rsa
同步sshkey到host2
[root@oldboy mq]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.4.62
同步cookie到host2
[root@oldboy mq]# scp /var/lib/rabbitmq/.erlang.cookie 192.168.4.62:/var/lib/rabbitmq/
4.2、host2更改所属权限
查看所属
[root@liudada mq]# ls -al /var/lib/rabbitmq/
total 8
drwxr-xr-x 3 rabbitmq rabbitmq 42 Oct 2 15:21 .
drwxr-xr-x. 33 root root 4096 Oct 2 15:17 ..
-r-------- 1 root root 20 Oct 2 15:21 .erlang.cookie
drwxr-x--- 2 rabbitmq rabbitmq 6 Sep 17 12:00 mnesia
更改所属
[root@liudada mq]# chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@liudada mq]# ls -al /var/lib/rabbitmq/.erlang.cookie
-r-------- 1 rabbitmq rabbitmq 20 Oct 2 15:21 /var/lib/rabbitmq/.erlang.cookie
4.3、host2启动rabbitmq:
systemctl start rabbitmq-server
4.4、加入集群:
关闭应用: rabbitmqctl stop_app
设置为原始状态:rabbitmqctl reset
加入集群: rabbitmqctl join_cluster rabbit@fz-rabbitMQ01
启动应用: rabbitmqctl start_app
4.5、启动web管理界面
查看RabbitMQ启用插件列表命令
rabbitmq-plugins list
启用RabbitMQ WEB管理界面
rabbitmq-plugins enable rabbitmq_management
4.6、查看集群状态:
[root@oldboy mq]# rabbitmqctl cluster_status
Cluster status of node rabbit@oldboy ...
[{nodes,[{disc,[rabbit@liudada,rabbit@oldboy]}]},
{running_nodes,[rabbit@liudada,rabbit@oldboy]},
{cluster_name,<<"rabbit@oldboy">>},
{partitions,[]},
{alarms,[{rabbit@liudada,[]},{rabbit@oldboy,[]}]}]
4.7、创建管理用户
创建用户:admin密码admin
rabbitmqctl add_user admin admin
设置admin用户角色
rabbitmqctl set_user_tags admin administrator
设置admin用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
4.8、访问
192.168.4.62:15675
用admin登录后查看集群几点
设置镜像队列策略
在任意一个节点上执行:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。
完成这 6 个步骤后,RabbitMQ 高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。
***
怎样仅仅关闭应用而不关闭整个节点呢?
因为rabbitmq-server一起启动了节点和应用,它预先设置RabbitMQ应用为standalone模式。要将一个节点加入到现有的集群中,你需要停止这个应用并将节点设置为原始状态,然后就为加入集群准备好了。如果使用./rabbitmqctl stop,应用和节点都将被关闭。
常用命令:
服务器启动与关闭
启动: rabbitmq-server –detached
关闭: rabbitmqctl stop
加入集群:
关闭应用: rabbitmqctl stop_app
设置为原始状态:rabbitmqctl reset
加入集群: rabbitmqctl join_cluster rabbit@fz-rabbitMQ01
启动应用: rabbitmqctl start_app
用户管理:
查看当前用户:
rabbitmqctl list_users
查看guest用户权限:
rabbitmqctl list_user_permissions guest
创建用户:admin密码admin
rabbitmqctl add_user admin admin
设置admin用户角色
rabbitmqctl set_user_tags admin administrator
设置admin用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
删除用户
rabbitmqctl delete_user Username
修改用户的密码
rabbitmqctl change_password Username Newpassword
删除节点
我们也可以远程删除节点,例如,在处理无响应的节点时,这很有用
比如:我们在节点rabbit@rabbit2上把rabbit@rabbit1从集群中移除
[root@rabbit1 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbit1 ...
[root@rabbit2 ~]# rabbitmqctl forget_cluster_node rabbit@rabbit1
Removing node rabbit@rabbit1 from the cluster
请注意,rabbit1仍然认为它与rabbit2集群 ,并试图启动它将导致错误。我们需要重新设置才能重新启动。
[root@rabbit1 ~]# rabbitmqctl reset #必须要重置
Resetting node rabbit@rabbit1 ...
[root@rabbit1 ~]# rabbitmqctl start_app
Starting node rabbit@rabbit1 ...
completed with 0 plugins.