hank_gao

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

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
posted on   hank_gao  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
 
点击右上角即可分享
微信分享提示