RabbitMQ单机安装
安装erlang环境
- 安装基本依赖模块
[root@localhost ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
- 安装erlang环境
[root@localhost ~]# ll /data/soft/
总用量 104176
-rw-r--r-- 1 root root 102972543 10月 19 11:06 otp_src_25.0.tar.gz
[root@localhost ~]# cd /data/soft/
[root@localhost soft]# tar xf otp_src_25.0.tar.gz
[root@localhost soft]# cd otp_src_25.0/
[root@localhost erlang]# ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
[root@localhost erlang]# make && make install
#验证erlang是否安装成功
[root@localhost ~]# cd /usr/local/erlang/bin
[root@localhost bin]# ./erl
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V13.0 (abort with ^G)
1> #ctrl+c退出
#添加环境变量
[root@localhost ~]# vi /etc/profile
export PATH=$PATH:/usr/local/erlang/bin #追加
[root@localhost ~]# source /etc/profile
[root@localhost ~]# erl
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1]
Eshell V13.0 (abort with ^G)
1>
安装rabbitmq
#解压rabbitmq,官方给的包是xz压缩包,所以要用xz命令
[root@localhost soft]# xz -d rabbitmq-server-generic-unix-3.11.1.tar.xz
#xz解压后得到tar包,再用tar解压
[root@localhost soft]# tar xf rabbitmq-server-generic-unix-3.11.1.tar
[root@localhost soft]# mv rabbitmq_server-3.11.1/ /data/rabbitmq
[root@localhost soft]# cd /data/rabbitmq/sbin
#开启管理页面插件
[root@localhost sbin]# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
启动rabbitmq
#添加服务启动环境变量
[root@localhost ~]# vi /etc/profile
export PATH=/data/rabbitmq/sbin:$PATH
[root@localhost ~]# source /etc/profile
#启动命令,该命令ctrl+c后会关闭服务
[root@localhost ~]# rabbitmq-server
#在后台启动rabbit
[root@localhost ~]# rabbitmq-server -detached
#端口验证
[root@localhost sbin]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 22855/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 861/sshd
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 23268/beam.smp
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1024/master
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 23268/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 23268/beam.smp
#关闭服务
[root@localhost ~]# rabbitmqctl stop
添加管理账户
#添加用户
#rabbitmqctl add_user Username password
[root@localhost ~]# rabbitmqctl add_user rabbitadmin 123123
#分配用户标签
#rabbitmqctl set_user_tags User Tag
#[administrator]:管理员标签
[root@localhost ~]# rabbitmqctl set_user_tags rabbitadmin administrator
浏览器访问验证
账号:rabbitadmin
密码:123123
RabbitMQ集群安装
基本环境
系统 | IP | 主机名 | 软件 |
---|---|---|---|
centos7.4 | 192.168.100.103 | rabbitmq1 | otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz |
centos7.4 | 192.168.100.107 | rabbitmq2 | otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz |
centos7.4 | 192.168.100.108 | rabbitmq3 | otp_src_25.0.tar.gz rabbitmq-server-generic-unix-3.11.1.tar.xz |
配置服务器hosts
#修改主机名,3台主义都需要改
[root@localhost ~]# hostnamectl set-hostname rabbitmq1
[root@localhost ~]# hostnamectl set-hostname rabbitmq2
[root@localhost ~]# hostnamectl set-hostname rabbitmq3
#添加hosts,3台都需要添加
[root@ rabbitmq1 ~]# vim /etc/hosts
192.168.100.103 rabbitmq1
192.168.100.107 rabbitmq2
192.168.100.108 rabbitmq3
安装erlang环境
- 安装基本依赖模块,3台都得安装
[root@ rabbitmq1 ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
- 安装erlang环境,3台都得安装
[root@rabbitmq1 ~]# mkdir -p /data/soft
[root@rabbitmq1 ~]# cd /data/soft
[root@ rabbitmq1 ~]# tar xf otp_src_25.0.tar.gz
[root@ rabbitmq1 ~]# cd otp_src_25.0/
[root@ rabbitmq1 ~]# ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
[root@ rabbitmq1 ~]# make && make install
[root@ rabbitmq1 ~]# cd /usr/local/erlang/bin/
[root@ rabbitmq1 bin]# ./erl
[root@rabbitmq1 ~]# cd
[root@rabbitmq1 ~]# vi /etc/profile
export PATH=$PATH:/usr/local/erlang/bin
[root@ rabbitmq1 ~]# source /etc/profile
[root@ rabbitmq1 ~]# erl
安装rabbitmq
3台都得安装
#解压rabbitmq,官方给的包是xz压缩包,所以要用xz命令
[root@rabbitmq1 ~]# cd /data/soft/
[root@ rabbitmq1 soft]# xz -d rabbitmq-server-generic-unix-3.11.1.tar.xz
#xz解压后得到tar包,再用tar解压
[root@ rabbitmq1 soft]# tar xf rabbitmq-server-generic-unix-3.11.1.tar
[root@ rabbitmq1 soft]# mv rabbitmq_server-3.11.1/ /data/rabbitmq
[root@ rabbitmq1 soft]# cd /data/rabbitmq/sbin
#开启管理页面插件
[root@ rabbitmq1 sbin]# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
创建rabbitmq配置文件并修改
[root@rabbitmq1 ~]# cd /data/rabbitmq/etc/rabbitmq/
#创建rabbitmq-env.conf:该配置文件存储的内容为mq节点名称和数据日志的存放地点,需要手动创建并添加内容
[root@rabbitmq1 rabbitmq]# touch rabbitmq-env.conf
[root@rabbitmq1 rabbitmq]# vi rabbitmq-env.conf
NODENAME=rabbit@rabbitmq1 #节点名称,唯一
MNESIA_BASE=/data/rabbitmq/mnesia #mq数据库路径,可自定义
LOG_BASE=/data/rabbitmq/log #mq日志路径,可自定义
#上传rabbitmq.conf配置文件
启动rabbitmq
3台都得安装
#添加服务启动环境变量
[root@rabbitmq1 ~]# vi /etc/profile
export PATH=/data/rabbitmq/sbin:$PATH
[root@rabbitmq1 ~]# source /etc/profile
#启动命令,该命令ctrl+c后会关闭服务
[root@rabbitmq1 ~]# rabbitmq-server
#在后台启动rabbit
[root@rabbitmq1 ~]# rabbitmq-server -detached
#端口验证
[root@rabbitmq1 sbin]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 22855/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 861/sshd
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 23268/beam.smp
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1024/master
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 23268/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 23268/beam.smp
#关闭服务
[root@rabbitmq1 ~]# rabbitmqctl stop
添加管理账户
3台都得安装
#添加用户
#rabbitmqctl add_user Username password
[root@rabbitmq1 ~]# rabbitmqctl add_user rabbitadmin hanweb
#分配用户标签
#rabbitmqctl set_user_tags User Tag
#[administrator]:管理员标签
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags rabbitadmin administrator
#查看所有用户
[root@rabbitmq1 ~]# rabbitmqctl list_users
创建集群
- 将3台mq的.erlang.cookie文件内容设置相同,该文件一般在用户目录下。若未给erlang设置用户,则该文件在/root下,或者用以下命令查找
[root@rabbitmq1 ~]# find / -name .erlang.cookie
/root/.erlang.cookie
- 先给该文件赋权为400,该文件必须为
只读
才可以创建集群
[root@rabbitmq1 ~]# chmod 400 .erlang.cookie
- 将赋权后的该文件复制到另外2台相同目录下并替换原有文件。注意,替换后需检查该文件权限是否正确,若有变化需重新赋权
[root@rabbitmq1 ~]# scp /root/.erlang.cookie root@rabbitmq2:/root/
[root@rabbitmq1 ~]# scp /root/.erlang.cookie root@rabbitmq3:/root/
- rabbitmq2与rabbitmq3使用kill杀死每台rabbitmq进程,重新启动
[root@rabbitmq2 ~]# netstat -utpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 23426/epmd
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 23394/beam.smp
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN 23394/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 23394/beam.smp
[root@rabbitmq2 ~]# kill -9 23426 23394
[root@rabbitmq2 ~]# rabbitmq-server -detached
- 停止节点rabbit@rabbitmq2和rabbit@rabbitmq3并分别执行加入集群命令
#rabbit@rabbitmq2执行命令添加磁盘节点
[root@rabbitmq2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq2 ...
[root@rabbitmq2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq1
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1
[root@rabbitmq2 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq2 ...
#rabbit@rabbitmq3执行命令添加内存节点
[root@rabbitmq3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq3 ...
[root@rabbitmq3 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1
Clustering node rabbit@rabbitmq3 with rabbit@rabbitmq1
[root@rabbitmq3 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq3 ...
- 查看集群状态
[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
Basics
Cluster name: rabbit@rabbitmq_cluster
Disk Nodes
rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3
Running Nodes
rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3
退出集群
#作
#在rabbimq1操,将rabbitmq2退出集群
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq2 stop_app
[root@rabbitmq1 ~]# rabbitmqctl forget_cluster_node rabbit@rabbitmq2
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq2 start_app
#在rabbitmq2进行重置才能正式退出集群
[root@rabbitmq2 ~]# rabbitmqctl reset
Resetting node rabbit@rabbitmq2 ...
#在rabbimq1操,将rabbitmq3退出集群
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq3 stop_app
[root@rabbitmq1 ~]# rabbitmqctl forget_cluster_node rabbit@rabbitmq3
[root@rabbitmq1 ~]# rabbitmqctl -n rabbit@rabbitmq3 start_app
#在rabbitmq3进行重置才能正式退出集群
[root@rabbitmq2 ~]# rabbitmqctl reset
Resetting node rabbit@rabbitmq3 ...
重新加入集群
按照2.8
步骤加入即可
镜像队列
若按照以上命令创建了镜像,队列内容会复制到所有节点上,会严重影响MQ性能,实际运用中只需要镜像两份对队列内容即可,可以用以下命令:(队列内容复制到集群的任意两个节点上)
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: exchanges或queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual。automatic:新增加节点自动同步全量数据。manual: 新增节点只同步新增数据,全量数据需要手工同步。
Priority:可选参数,policy的优先级
#rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY