一、CentOS环境准备工作
VMware安装一台虚拟机,克隆两台。地址分配如下:
名称 | 地址 |
---|---|
node01 | 192.168.0.200 |
node02 | 192.168.0.201 |
node03 | 192.168.0.202 |
1、修改主机名
[root@node01 rabbitmq]# hostname
node01
[root@node01 rabbitmq]#
[root@node02 rabbitmq]# hostname
node02
[root@node02 rabbitmq]#
[root@node03 rabbitmq]# hostname
node03
[root@node03 rabbitmq]#
2、修改hosts文件
[root@node01 rabbitmq]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.200 node01
192.168.0.201 node02
192.168.0.202 node03
[root@node01 rabbitmq]#
二、下载所需的rpm包
1、下载地址&选择版本
RabbitMQ-server
https://packagecloud.io/rabbitmq/rabbitmq-server
erlang
https://packagecloud.io/rabbitmq/erlang
Erlang:是一个结构化,动态类分布语言。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合于构建分布式,实时软并行计算系统。
socat
http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
2、上传到服务器
[root@node01 ~]# ls
anaconda-ks.cfg rabbitmq-server-3.8.4-1.el7.noarch.rpm
erlang-22.3.4.7-1.el6.x86_64.rpm socat-1.7.3.2-5.el7.lux.x86_64.rpm
[root@node01 ~]#
三、安装软件包
1、使用官方文档快速安装
rabbitmq-server quick install地址
https://packagecloud.io/rabbitmq/rabbitmq-server/install#bash-rpm
执行
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
erlang quick install地址
https://packagecloud.io/rabbitmq/erlang/install#bash-rpm
执行
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
2、yum查看RabbitMQ与erlang
[root@node01 ~]# yum list | grep erlang
erlang.x86_64 23.3.1-1.el7 rabbitmq_erlang
[root@node01 ~]# yum list |grep rabbit
erlang.x86_64 23.3.1-1.el7 rabbitmq_erlang
librabbitmq.i686 0.8.0-3.el7 base
librabbitmq.x86_64 0.8.0-3.el7 base
librabbitmq-devel.i686 0.8.0-3.el7 base
librabbitmq-devel.x86_64 0.8.0-3.el7 base
librabbitmq-examples.x86_64 0.8.0-3.el7 base
rabbitmq-server.noarch 3.8.14-1.el7 rabbitmq_rabbitmq-server
3、yum安装自动解决依赖
[root@node01 ~]# yum install -y rabbitmq-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package rabbitmq-server.noarch 0:3.8.14-1.el7 will be installed
--> Processing Dependency: erlang >= 21.3 for package: rabbitmq-server-3.8.14-1.el7.noarch
--> Processing Dependency: socat for package: rabbitmq-server-3.8.14-1.el7.noarch
--> Running transaction check
---> Package erlang.x86_64 0:23.3.1-1.el7 will be installed
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================
Installing:
rabbitmq-server noarch 3.8.14-1.el7 rabbitmq_rabbitmq-server 15 M
Installing for dependencies:
erlang x86_64 23.3.1-1.el7 rabbitmq_erlang 19 M
socat x86_64 1.7.3.2-2.el7 base 290 k
Transaction Summary
==================================================================================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 35 M
Installed size: 50 M
Downloading packages:
(1/3): socat-1.7.3.2-2.el7.x86_64.rpm | 290 kB 00:00:00
(2/3): rabbitmq-server-3.8.14-1.el7.noarch.rpm | 15 MB 00:00:44
(3/3): erlang-23.3.1-1.el7.x86_64.rpm | 19 MB 00:00:47
--------------------------------------------------------------------------------------------------------------------------------------------------
Total 743 kB/s | 35 MB 00:00:47
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : socat-1.7.3.2-2.el7.x86_64 1/3
Installing : erlang-23.3.1-1.el7.x86_64 2/3
Installing : rabbitmq-server-3.8.14-1.el7.noarch 3/3
Verifying : rabbitmq-server-3.8.14-1.el7.noarch 1/3
Verifying : erlang-23.3.1-1.el7.x86_64 2/3
Verifying : socat-1.7.3.2-2.el7.x86_64 3/3
Installed:
rabbitmq-server.noarch 0:3.8.14-1.el7
Dependency Installed:
erlang.x86_64 0:23.3.1-1.el7 socat.x86_64 0:1.7.3.2-2.el7
Complete!
四、启动服务
1、查看插件
[root@node01 ~]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: [failed to contact rabbit@node01 - status not shown]
|/
[ ] rabbitmq_amqp1_0 3.8.14
[ ] rabbitmq_auth_backend_cache 3.8.14
[ ] rabbitmq_auth_backend_http 3.8.14
[ ] rabbitmq_auth_backend_ldap 3.8.14
[ ] rabbitmq_auth_backend_oauth2 3.8.14
[ ] rabbitmq_auth_mechanism_ssl 3.8.14
[ ] rabbitmq_consistent_hash_exchange 3.8.14
[ ] rabbitmq_event_exchange 3.8.14
[ ] rabbitmq_federation 3.8.14
[ ] rabbitmq_federation_management 3.8.14
[ ] rabbitmq_jms_topic_exchange 3.8.14
[ ] rabbitmq_management 3.8.14
[ ] rabbitmq_management_agent 3.8.14
[ ] rabbitmq_mqtt 3.8.14
[ ] rabbitmq_peer_discovery_aws 3.8.14
[ ] rabbitmq_peer_discovery_common 3.8.14
[ ] rabbitmq_peer_discovery_consul 3.8.14
[ ] rabbitmq_peer_discovery_etcd 3.8.14
[ ] rabbitmq_peer_discovery_k8s 3.8.14
[ ] rabbitmq_prometheus 3.8.14
[ ] rabbitmq_random_exchange 3.8.14
[ ] rabbitmq_recent_history_exchange 3.8.14
[ ] rabbitmq_sharding 3.8.14
[ ] rabbitmq_shovel 3.8.14
[ ] rabbitmq_shovel_management 3.8.14
[ ] rabbitmq_stomp 3.8.14
[ ] rabbitmq_top 3.8.14
[ ] rabbitmq_tracing 3.8.14
[ ] rabbitmq_trust_store 3.8.14
[ ] rabbitmq_web_dispatch 3.8.14
[ ] rabbitmq_web_mqtt 3.8.14
[ ] rabbitmq_web_mqtt_examples 3.8.14
[ ] rabbitmq_web_stomp 3.8.14
[ ] rabbitmq_web_stomp_examples 3.8.14
2、启动服务
[root@node01 ~]# systemctl start rabbitmq-server
3、查看状态
[root@node01 ~]# rabbitmqctl status
Status of node rabbit@node01 ...
Runtime
OS PID: 9142
OS: Linux
Uptime (seconds): 19
Is under maintenance?: false
RabbitMQ version: 3.8.14
Node name: rabbit@node01
Erlang configuration: Erlang/OTP 23 [erts-11.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
Erlang processes: 278 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60
Plugins
Enabled plugin file: /etc/rabbitmq/enabled_plugins
Enabled plugins:
Data directory
Node data directory: /var/lib/rabbitmq/mnesia/rabbit@node01
Raft data directory: /var/lib/rabbitmq/mnesia/rabbit@node01/quorum/rabbit@node01
Config files
Log file(s)
* /var/log/rabbitmq/rabbit@node01.log
* /var/log/rabbitmq/rabbit@node01_upgrade.log
Alarms
(none)
Memory
Total memory used: 0.0964 gb
Calculation strategy: rss
Memory high watermark setting: 0.4 of available memory, computed to: 0.4095 gb
other_proc: 0.0298 gb (30.87 %)
code: 0.0251 gb (26.03 %)
reserved_unallocated: 0.0157 gb (16.31 %)
other_system: 0.0126 gb (13.05 %)
allocated_unused: 0.008 gb (8.32 %)
other_ets: 0.0029 gb (3.05 %)
atom: 0.0014 gb (1.43 %)
plugins: 0.0003 gb (0.34 %)
metrics: 0.0002 gb (0.23 %)
binary: 0.0002 gb (0.2 %)
mnesia: 0.0001 gb (0.09 %)
quorum_ets: 0.0 gb (0.05 %)
msg_index: 0.0 gb (0.03 %)
connection_channels: 0.0 gb (0.0 %)
connection_other: 0.0 gb (0.0 %)
connection_readers: 0.0 gb (0.0 %)
connection_writers: 0.0 gb (0.0 %)
mgmt_db: 0.0 gb (0.0 %)
queue_procs: 0.0 gb (0.0 %)
queue_slave_procs: 0.0 gb (0.0 %)
quorum_queue_procs: 0.0 gb (0.0 %)
File Descriptors
Total: 2, limit: 32671
Sockets: 0, limit: 29401
Free Disk Space
Low free disk space watermark: 0.05 gb
Free disk space: 27.4761 gb
Totals
Connection count: 0
Queue count: 0
Virtual host count: 1
Listeners
Interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
4、开启web管理界面
[root@node01 ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@node01:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@node01...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
5、打开官网释义端口
# firewall-cmd --permanent --add-port=15672/tcp
# firewall-cmd --permanent --add-port=5672/tcp
# systemctl restart firewalld.service
6、添加用户与赋权
[root@node01 ~]# rabbitmqctl add_user admin admin
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@node01 ~]# rabbitmqctl set_permissions -p / admin "." "." ".*"
Setting permissions for user "admin" in vhost "/" ...
[root@node01 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
7、打开web界面
地址:
http://192.168.0.200:15672
五、其他节点加入集群
1、各节点同步cookie文件
[root@node01 ~]# cd /var/lib/rabbitmq/
[root@node01 rabbitmq]# ls -al
total 8
drwxr-xr-x. 3 rabbitmq rabbitmq 42 Apr 3 06:35 .
drwxr-xr-x. 25 root root 4096 Apr 3 06:35 ..
-r--------. 1 rabbitmq rabbitmq 20 Apr 3 00:00 .erlang.cookie
drwxr-x---. 4 rabbitmq rabbitmq 123 Apr 3 06:35 mnesia
[root@node01 rabbitmq]#
[root@node01 rabbitmq]# scp .erlang.cookie root@node02:/var/lib/rabbitmq/
root@node02's password:
.erlang.cookie 100% 20 26.2KB/s 00:00
[root@node01 rabbitmq]# scp .erlang.cookie root@node03:/var/lib/rabbitmq/
root@node03's password:
.erlang.cookie
2、重启服务
[root@node01 rabbitmq]# systemctl restart rabbitmq-server
3、各节点打开监控插件
[root@node01 ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@node01:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@node01...
Plugin configuration unchanged.
[root@node01 ~]#
4、加入节点
node02节点
[root@node02 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node02 ...
[root@node02 rabbitmq]# rabbitmqctl reset
Resetting node rabbit@node02 ...
[root@node02 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@node01
Clustering node rabbit@node02 with rabbit@node01
[root@node02 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@node02 ...
node03节点
[root@node03 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node03 ...
[root@node03 rabbitmq]# rabbitmqctl reset
Resetting node rabbit@node03 ...
[root@node03 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1
Clustering node rabbit@node03 with rabbit@rabbitmq1
^CInterrupt
[root@node03 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@node01
Clustering node rabbit@node03 with rabbit@node01
[root@node03 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@node03 ...
5、web界面展示
六、总结
RabbitMQ与Erlang版本是个有一些兼容问题版本选对,可能遇到无法启动、无配置文件等其他问题。官方文档介绍相当详细,是个借鉴的好工具。