tags: rabbitmq
rabbitmq
单机版
- 环境准备
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel ncurses-devel xz
wget http://erlang.org/download/otp_src_19.1.tar.gz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-generic-unix-3.6.6.tar.xz
wget https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/simplejson-3.10.0.tar.gz#md5=426a9631d22851a7a970b1a677368b15
- 安装erlang
tar -xf otp_src_19.1.tar.gz
cd otp_src_19.1
./configure --prefix=/app/erlang
make
make install
- 配置环境变量
vim /etc/profile
ERLANG_HOME=/app/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME
source /etc/profile
- 安装simpleJson
tar -xf simplejson-3.10.0.tar.gz
cd simplejson-3.10.0
python setup.py install
- 安装rabbitmq
tar -xf rabbitmq-server-generic-unix-3.6.6.tar.xz
ln -s rabbitmq_server-3.6.6 rabbitmq
- 配置环境变量
vim /etc/profile
export PATH=$PATH:/app/rabbitmq/sbin
source /etc/profile
- 启动rabbitmq
rabbitmq-server -detached
- 查看rabbitmq状态
[root@6node2 app]# rabbitmqctl status
Status of node rabbit@6node2 ...
[{pid,43581},
{running_applications,[{rabbit,"RabbitMQ","3.6.6"},
{mnesia,"MNESIA CXC 138 12","4.14.1"},
{os_mon,"CPO CXC 138 46","2.4.1"},
{rabbit_common,[],"3.6.6"},
{xmerl,"XML parser","1.3.12"},
{ranch,"Socket acceptor pool for TCP protocols.",
"1.2.1"},
{sasl,"SASL CXC 138 11","3.0.1"},
{stdlib,"ERTS CXC 138 10","3.1"},
{kernel,"ERTS CXC 138 10","5.1"}]},
{os,{unix,linux}},
{erlang_version,"Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:64] [hipe] [kernel-poll:true]\n"},
{memory,[{total,44089952},
{connection_readers,0},
{connection_writers,0},
{connection_channels,0},
{connection_other,0},
{queue_procs,2688},
{queue_slave_procs,0},
{plugins,0},
{other_proc,18628952},
{mnesia,58104},
{mgmt_db,0},
{msg_index,40296},
{other_ets,872616},
{binary,20384},
{code,17819033},
{atom,752561},
{other_system,5895318}]},
{alarms,[]},
{listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,411292467},
{disk_free_limit,50000000},
{disk_free,47193067520},
{file_descriptors,[{total_limit,924},
{total_used,2},
{sockets_limit,829},
{sockets_used,0}]},
{processes,[{limit,1048576},{used,137}]},
{run_queue,0},
{uptime,37},
{kernel,{net_ticktime,60}}]
集群安装
- 环境准备
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel ncurses-devel xz
wget http://erlang.org/download/otp_src_19.1.tar.gz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-generic-unix-3.6.6.tar.xz
wget https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/simplejson-3.10.0.tar.gz#md5=426a9631d22851a7a970b1a677368b15
- 安装erlang
tar -xf otp_src_19.1.tar.gz
cd otp_src_19.1
./configure --prefix=/app/erlang
make
make install
- 配置环境变量
vim /etc/profile
ERLANG_HOME=/app/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME
source /etc/profile
- 安装simpleJson
tar -xf simplejson-3.10.0.tar.gz
cd simplejson-3.10.0
python setup.py install
- 安装rabbitmq
tar -xf rabbitmq-server-generic-unix-3.6.6.tar.xz
ln -s rabbitmq_server-3.6.6 rabbitmq
- 配置环境变量
vim /etc/profile
export PATH=$PATH:/app/rabbitmq/sbin
source /etc/profile
- 修改host文件
echo 172.16.1.1 6node1 >> /etc/hosts
echo 172.16.1.2 6node2 >> /etc/hosts
echo 172.16.1.3 6node3 >> /etc/hosts
- 复制node1节点的cookie到其他节点,节点路径为~/.erlang.cookie并修改权限为400
启动node1上2个节点并将节点1上的rabbit_2加入集群
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached
rabbitmqctl -n rabbit_2@6node1 stop_app
rabbitmqctl -n rabbit_2@6node1 reset
rabbitmqctl -n rabbit_2@6node1 join_cluster rabbit_1@6node1
rabbitmqctl -n rabbit_2@6node1 start_app
rabbitmqctl -n rabbit_1@6node1 cluster_status
- 启动node2上2个节点并加入集群
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached
rabbitmqctl -n rabbit_1@6node2 stop_app
rabbitmqctl -n rabbit_1@6node2 reset
rabbitmqctl -n rabbit_1@6node2 join_cluster rabbit_1@6node1
rabbitmqctl -n rabbit_1@6node2 start_app
rabbitmqctl -n rabbit_2@6node2 stop_app
rabbitmqctl -n rabbit_2@6node2 reset
rabbitmqctl -n rabbit_2@6node2 join_cluster rabbit_1@6node1
rabbitmqctl -n rabbit_2@6node2 start_app
- 启动node3上2个节点并加入集群
RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit_1 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit_2 rabbitmq-server -detached
rabbitmqctl -n rabbit_1@6node3 stop_app
rabbitmqctl -n rabbit_1@6node3 reset
rabbitmqctl -n rabbit_1@6node3 join_cluster rabbit_1@6node1
rabbitmqctl -n rabbit_1@6node3 start_app
rabbitmqctl -n rabbit_2@6node3 stop_app
rabbitmqctl -n rabbit_2@6node3 reset
rabbitmqctl -n rabbit_2@6node3 join_cluster rabbit_1@6node1
rabbitmqctl -n rabbit_2@6node3 start_app
- *镜像
rabbitmqctl set_policy -p dms ha-allqueue "*" '{"ha-mode":"all"}'
- 插件相关,开启管理插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_management_agent
开启某个插件:rabbitmq-plugins enable xxx
关闭某个插件:rabbitmq-plugins disablexxx
查看插件列表:rabbitmq-plugins list
- virtual_host管理
新建virtual_host: rabbitmqctl add_vhost xxx
撤销virtual_host:rabbitmqctl delete_vhost xxx
- 用户相关
[root@6node1 ~]# rabbitmqctl add_user abc pwd //新建用户
Creating user "abc" ...
[root@6node1 ~]# rabbitmqctl delete_user abc //删除用户
Deleting user "abc" ...
[root@6node1 ~]# rabbitmqctl change_password abc 12345 //更改/创建 密码
Changing password for user "abc" ...
[root@6node1 ~]# rabbitmqctl set_user_tags abc administrator //[administrator|monitoring|management]
Setting tags for user "abc" to [administrator] ...
management
Anything the user could do via AMQP plus:
List virtual hosts to which they can log in via AMQP
View all queues, exchanges and bindings in "their" virtual hosts
View and close their own channels and connections
View "global" statistics covering all their virtual hosts, including activity by other users within them
monitoring
Everything "management" can plus:
List all virtual hosts, including ones they could not log in to via AMQP
View other users's connections and channels
View node-level data such as memory use and clustering
View truly global statistics for all virtual hosts
administrator
Everything "monitoring" can plus:
Create and delete virtual hosts
View, create and delete users
View, create and delete permissions
Close other users's connection
- 权限管理
set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath
Vhost路径
用户名
一个正则表达式match哪些配置资源能够被该用户访问。
一个正则表达式match哪些配置资源能够被该用户读。
一个正则表达式match哪些配置资源能够被该用户访问。
- 获取服务器状态信息
服务器状态:rabbitmqctl status
队列信息:rabbitmqctl list_queues [-p vhostpath] [queueinfoitem ...]
Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,messages_unacknowledged,messages,consumers,memory
Exchange信息:rabbitmqctllist_exchanges [-p vhostpath] [exchangeinfoitem ...]
Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.
Binding信息:rabbitmqctllist_bindings [-p vhostpath] [bindinginfoitem ...]
Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments
Connection信息:rabbitmqctl list_connections [connectioninfoitem ...]
Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
Channel信息:rabbitmqctl list_channels[channelinfoitem ...]
Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架