天天看點

Linux Centos6安裝RabbitMQ

啟動指令:

service rabbitmq-server start      

重新開機指令:

service rabbitmq-server restart      

停止指令:

service rabbitmq-server stop      

RabbitMq的安裝

erlang 與 rabbitmq 正确的版本比對 ​​https://www.rabbitmq.com/which-erlang.html​​

線上安裝

安裝rabbitmq需要先安裝Erlang。

下載下傳erlang rpm包:

wget http://packages.erlang-solutions.com/erlang/rpm/centos/6/x86_64/erlang-22.0.4-1.el6.x86_64.rpm      

下載下傳socat rpm包:

wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm      

下載下傳rabbitmq rpm包:

wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/6/rabbitmq-server-3.7.15-1.el6.noarch.rpm/download.rpm      

安裝rpm包:

# 安裝RabbitMq:
rpm -ivh erlang-22.0.4-1.el6.x86_64.rpm --force --nodeps
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm --force --nodeps
rpm -ivh rabbitmq-server-3.7.15-1.el6.noarch.rpm --force --nodeps      

檢查是否安裝成功

檢視erlang版本:

[root@JR-JDH-UATAPP1 ~]erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.4.3      

檢視Rabbitmq版本:

[root@JR-JDH-UATAPP1 ~]# sudo rabbitmqctl status | grep rabbit
Status of node rabbit@JR-JDH-UATAPP1 ...
  [{rabbitmq_tracing,"RabbitMQ message logging / tracing","3.7.15"},
   {rabbitmq_management,"RabbitMQ Management Console","3.7.15"},
   {rabbitmq_management_agent,"RabbitMQ Management Agent","3.7.15"},
   {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.7.15"},
   {rabbit,"RabbitMQ","3.7.15"},
   {rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",      

檢查erlang是否運作正常:

[root@JR-JDH-UATAPP1 ~]# erl
Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
Eshell V10.4.3 (abort with ^G)
1>      

檢查Rabbitmq是否運作正常:

[root@tcljr-jdh-yc01 ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - LSB: RabbitMQ is a multi-protocol messaging broker
Loaded: loaded (/etc/rc.d/init.d/rabbitmq-server; bad; vendor preset: disabled)
Active: active (running) since Wed 2021-07-21 11:31:09 CST; 23h ago      

檢視安裝路徑:

[root@JR-JDH-UATAPP1 ~]# whereis erlang
erlang: /usr/lib64/erlang
[root@JR-JDH-UATAPP1 ~]# whereis rabbitmq
rabbitmq: /etc/rabbitmq /usr/lib/rabbitmq      

常用指令

# 運作
systemctl start rabbitmq-server

# 重新開機
systemctl restart rabbitmq-server

# 停止
systemctl stop rabbitmq-server

# 開機自啟
systemctl enable rabbitmq-server

# 檢查狀态
systemctl status rabbitmq-server

# 檢視所有使用者
rabbitmqctl list_users

# 建立使用者
rabbitmqctl add_user 使用者名 密碼

# 将使用者給于權限(none、management、policymaker、monitoring、administrator):
rabbitmqctl set_user_tags 使用者名 角色

# 檢視目前使用者所有的權限
rabbitmqctl list_user_permissions 使用者名

# 賦予使用者權限(vhost configure write read)
rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*"      

  Setting permissions for user "guest" in vhost "/" ...

  Error:

  Virtual host / does not exist

  # 報錯"Virtual host / does not exist",需要添加虛拟主機:rabbitmqctl add_vhost /

# 然後再重新賦予權限:rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*"      
# 删除使用者 rabbitmqctl delete_user 使用者名      

開啟web管理接口

啟動RabbitMQ Web管理控制台:

rabbitmq-plugins enable rabbitmq_management      

打開浏覽通路:

​​http://ip:15672​​

第一次通路需要登入,預設的賬号密碼為:guest/guest,會遇到如下圖問題:User can only log in via localhost

Linux Centos6安裝RabbitMQ

預設情況下,Rabbitmq對guest這個賬戶做了限制,預設隻能通過本地網絡(如localhost)通路,遠端網絡通路受限,使用預設的使用者 guest / guest (此也為管理者使用者)登陸,隻能登陸localhost:15672。

是以在實作生産和消費消息之前,需要另外添加一個使用者,并設定相應的通路權限:

rabbitmqctl add_user 使用者名 密碼      

設定該使用者為管理者角色:

rabbitmqctl set_user_tags 使用者名 administrator      

為該使用者設定所有權限:

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"      

我們通過該使用者就可以通路了。

另外,如果想要使用guest賬号登入,必須解除Rabbitmq對guest賬号的限制:

找到rabbit.app這個檔案

[root@JR-JDH-UATAPP1 ~]# find / -name rabbit.app
/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app      

修改這個檔案:

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app      

将:{loopback_users, [<<”guest”>>]} 改為:{loopback_users, []},

原因:rabbitmq從3.3.0開始禁止使用guest/guest權限通過除localhost外的通路。

重新開機服務:

systemctl restart rabbitmq-server.service      

這樣就可以以guest賬号登入了。

管理界面介紹

首頁

Linux Centos6安裝RabbitMQ
  • Overview:概覽資訊,包括總計、全局計數、節點、端口和上下文等資訊;
  • connections:無論生産者還是消費者,都需要與RabbitMQ建立連接配接後才可以完成消息的生産和消費,在這裡可以檢視連接配接情況;
  • channels:通道,建立連接配接後,會形成通道,消息的投遞擷取依賴通道;
  • Exchanges:交換機,用來實作消息的路由;
  • Queues:隊列,即消息隊列,消息存放在隊列中,等待消費,消費後被移除隊列;

Overview

Linux Centos6安裝RabbitMQ

Total

  • Ready:待消費的消息總數;
  • Unacked:待應答的消息總數
  • Total:總數 Ready+Unacked;

Global counts

  • Connections:client的tcp連接配接的總數;
  • Channels:通道的總數;
  • Exchange:交換器的總數;
  • Queues:隊列的總數;
  • Consumers:消費者的總數;

Nodes

  • Name:broker名稱;
  • File descriptors:broker打開的檔案描述符和限制;
  • Socket descriptors:broker管理的網絡套接字數量和限制,當限制被耗盡時,将停止接受新的網絡連接配接;
  • Erlang processes:erlang啟動的程序數;
  • Memory:目前broker占用的記憶體;
  • Disk space:目前broker占用的硬碟;
  • Uptime:目前broker持續運作的時長;

Connections

Linux Centos6安裝RabbitMQ
  • Virtual host:所屬的虛拟主機;
  • Name:名稱;
  • User name:使用的使用者名;
  • State:目前的狀态,running:運作中;idle:空閑;
  • SSL/TLS:是否使用ssl進行連接配接;
  • Protocol:使用的協定;
  • Channels:建立的channel的總數;
  • From client:每秒發出的資料包;
  • To client:每秒收到的資料包;

Channels

Linux Centos6安裝RabbitMQ
  • channel:名稱;
  • Virtual host:所屬的虛拟主機;
  • User name:使用的使用者名;
  • Mode:管道保證模式。 可以是以下之一,或者不是:C: confirm。T:transactional(事務);
  • State :目前的狀态,running:運作中;idle:空閑;
  • Unconfirmed:待confirm的消息總數;
  • Prefetch:設定的prefetch的個數;
  • Unacker:待ack的消息總數;
  • publish:producter pub消息的速率;
  • confirm:producter confirm消息的速率;
  • deliver/get:consumer 擷取消息的速率;
  • ack:consumer ack消息的速率;

Exchanges

Linux Centos6安裝RabbitMQ
  • Virtual host:所屬的虛拟主機;
  • Name:名稱;
  • Type:exchange type;
  • Features:功能。 可以是以下之一,或者不是:D: 持久化。T:Internal,存在改功能表示這個exchange不可以被client用來推送消息,僅用來進行exchange和exchange之間的綁定,否則可以推送消息也可以綁定。
  • Message rate in:消息進入的速率。
  • Message rate out:消息出去的速率。

Queues

Linux Centos6安裝RabbitMQ
  • Virtual host:所屬的虛拟主機;
  • Name:名稱;
  • Features:功能。 可以是以下之一,或者不是:D: 持久化;
  • State:目前的狀态,running:運作中;idle:空閑;
  • Ready:待消費的消息總數;
  • Unacked:待應答的消息總數;
  • Total:總數 Ready+Unacked;
  • incoming:消息進入的速率;
  • deliver/get:消息擷取的速率;
  • ack:消息應答的速率;

配置RabbitMq

關于RabbitMq的配置,可以下載下傳RabbitMq的配置檔案模闆到rabbitmq.config,然後按需更改即可。

具體配置資訊參考官網:​​http://rabbitmq.com/configure.html​​

開放端口

/sbin/iptables -I INPUT -p tcp —dport 5672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp —dport 15672 -j ACCEPT

解除安裝

1、解除安裝前先停止rabbitmq服務

/usr/lib/rabbitmq/bin/rabbitmqctl stop      

檢視rabbitmq安裝的相關清單

yum list | grep rabbitmq      

解除安裝rabbitmq已安裝的相關内容

yum -y remove rabbitmq-server.noarch      

2、解除安裝erlang

檢視erlang安裝的相關清單

yum list | grep erlang      
yum -y remove erlang-*
yum remove erlang.x86_64      
rm -rf /usr/lib64/erlang
rm -rf /usr/lib/rabbitmq 
rm -rf /usr/local/erlang 
rm -rf /usr/local/rabbitmq