天天看點

rpm 包方式安裝RabbitMQ

作者:前行者lw

erlang下載下傳

1、進入rabbitmq的github位址https://github.com/rabbitmq/erlang-rpm

點選右側的Release字樣,跳轉到釋出的軟體包下載下傳頁面

我下載下傳: https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2/erlang-25.3.2-1.el9.x86_64.rpm

rabbitmq下載下傳

erlang和rabbitmq對應的版本:

點選右側的Release字樣,跳轉到釋出的軟體包下載下傳頁面

目前釋出出來的是:

https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.11.16

安裝

安裝erlang需要的支援 :
 sudo yum install -y gcc perl  ncurses-devel  openssl openssl-devel unixODBC-devel

 
安裝socat(主要用于解密)
 sudo yum install -y socat logrotate


安裝erlang
 sudo rpm -Uvh erlang-25.3.2-1.el8.x86_64.rpm



檢視erlang版本号
 erl -v

------- ------- ------- ------- ------- ------- ------- -------
解壓rabbitmq安裝包
 sudo rpm -Uvh rabbitmq-server-3.11.16-1.el8.noarch.rpm

啟動rabbitmq
 sudo systemctl start rabbitmq-server

檢視是否啟動
 sudo systemctl status rabbitmq-server


設定rabbitmq為開機自啟動--看需要
 sudo  systemctl enable rabbitmq-server 

 設定rabbitmq圖形化界面  執行管控台插件:(不然不能在浏覽器方法)
  sudo rabbitmq-plugins enable rabbitmq_management
           

配置

配置rabbitmq:
 sudo  find / -name rabbit.app
  sudo vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.11.16/plugins/rabbit-3.11.16/ebin/rabbit.app
    修改如下
    {loopback_users, [<<"guest">>]},
    修改:  
    	{loopback_users, [<<"guest">>]}  
    為 
     	{loopback_users, [guest]}
    隻保留guest(不修改隻能通過localhost通路)
    
修改本機系統檔案
    a:修改
   	 sudo vim /etc/rabbitmq/rabbitmq-env.conf
    添加:
    	NODENAME=rabbit
    b:修改 
    	sudo cat /etc/hostname
    	我的是lw-anolis你自己的根據情況來
    c:修改本地
    	sudo vim /etc/hosts
       添加
      	127.0.0.1 lw-anolis

重新開機
 sudo systemctl restart rabbitmq-server.service
 
  
  netstat -anlp|grep 5672
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      -                   
    tcp6       0      0 :::5672                 :::*                    LISTEN      -
   ps -ef|grep rabbitmq     

防火牆開放15672端口

檢視幫助
 sudo rabbitmqctl --help
添加使用者
 sudo rabbitmqctl add_user liwu coffehome

檢視使用者
 sudo rabbitmqctl list_users

改變使用者密碼
 sudo rabbitmqctl change_password liwu coffehome

改變使用者權限  ----給予超級管理者角色
 sudo rabbitmqctl set_user_tags liwu administrator

删除使用者
 sudo rabbitmqctl delete_user user
 sudo rabbitmqctl delete_user guest
 
使用rabbitmq,添加虛拟主機
 sudo rabbitmqctl add_vhost /liwu_vhost
檢視虛拟主機
 sudo rabbitmqctl list_vhosts
删除虛拟主機
 sudo rabbitmqctl delete_vhost /liwu_vhost
 
給虛拟主機的使用者授權
# rabbitmqctl set_permissions [-p vhost] [user] [permission ⇒ (modify) (write) (read)]
 sudo rabbitmqctl set_permissions -p /liwu_vhost liwu ".*" ".*" ".*"
檢視虛拟主機權限
 sudo rabbitmqctl list_permissions -p /liwu_vhost
檢視使用者具體權限
 sudo rabbitmqctl list_user_permissions liwu
删除權限
 sudo rabbitmqctl clear_permissions -p /liwu_vhost liwu
           

通路

之後,請修改guest的權限 (設定密碼 角色設定為None)

控制Linux上的系統限制

運作生産工作負載的RabbitMQ安裝可能需要系統限制和核心參數調整,以便處理大量并發連接配接和隊列。

需要調整的主要設定是打開檔案的最大數量,也稱為ulimit -n。

許多作業系統上的預設值對于消息傳遞代理來說太低(在多個Linux發行版上為1024)。

我們建議在生産環境中為使用者rabbitmq允許至少65536個檔案描述符。對于許多開發工作負載而言,4096應該足夠了。

有兩個限制:OS核心允許的最大打開檔案數(fs.file-max)和每使用者限制(ulimit -n)。

前者必須高于後者。使用systemd(最近的Linux發行版)在使用systemd的發行版上,

作業系統限制通過/etc/security/limits.conf中的配置檔案進行控制,例如:

#sudo vim /etc/security/limits.conf

ulimit -S -n 4096

#source /etc/security/limits.conf

#ulimit -n

端口

PORT 4369:Erlang利用端口映射器守護程序(epmd)來parsing叢集中的節點名稱。 節點必須能夠到達對方,并且端口映射器守護程序可以使群集正常工作。

端口35197由inet_dist_listen_min / max設定防火牆必須允許此範圍内的通信在群集節點之間傳遞

RabbitMQpipe理控制台:

  • 用于RabbitMQ版本3.x的PORT 15672
  • 用于RabbitMQ pre 3.x的PORT 55672

PORT 5672 RabbitMQ主端口。

對于一個節點叢集,它們必須在35197和5672上35197打開。

對于任何想要使用消息隊列的伺服器,隻需要5672

預設使用者guest,密碼guest。

預設情況下,這些憑據隻能在以localhost身份連接配接到代理時使用

使用者和角色權限

在 RabbitMQ 中無法通過 AMQP 建立 VirtualHost,可以通過以下指令來建立

rabbitmqctl add_vhost [vhostname]

通常在權限管理中主要包含三步:

建立使用者

rabbitmqctl add_user superrd superrd

配置權限

set_permissions [-p ] rabbitmqctl set_permissions -p /suanyun admin '.*' '.*' '.*'

其中, 的位置分别用正規表達式來比對特定的資源,如:

'^(amq.gen.*|amq.default)#39;

可以比對 server 生成的和預設的 exchange,’^$’不比對任何資源

  • exchange 和 queue 的 declare 與 delete 分别需要 exchange 和 queue 上的配置權限
  • exchange 的 bind 與 unbind 需要 exchange 的讀寫權限
  • queue 的 bind 與 unbind 需要 queue 寫權限 exchange 的讀權限

發消息(publish)需 exchange 的寫權限

  • 擷取或清除(get、consume、purge)消息需 queue 的讀權限

示例:我們賦予 superrd 在“/”下面的全部資源的配置和讀寫權限。

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

注意”/”代表 virtual host 為“/”這個“/”和 Linux 裡的根目錄是有差別的并不是 virtual host 為“/”可以通路是以的 virtual host,把這個“/”了解成字元串就行。

需要注意的是 RabbitMQ 會緩存每個 connection 或 channel 的權限驗證結果、是以權限發生變化後需要重連才能生效。

檢視權限

rabbitmqctl list_user_permissions admin

rabbitmqctl list_permissions -p /

配置角色

rabbitmqctl set_user_tags [user] [role]

RabbitMQ 中的角色分為如下五類:

none、management、policymaker、monitoring、administrator

management

使用者可以通過 AMQP 做的任何事外加:

    • 列出自己可以通過 AMQP 登入的 virtual hosts
    • 檢視自己的 virtual hosts 中的 queues, exchanges 和 bindings
    • 檢視和關閉自己的 channels 和 connections
    • 檢視有關自己的 virtual hosts 的“全局”的統計資訊,包含其他使用者在這些 virtual hosts 中的活動。

policymaker

management 可以做的任何事外加:

檢視、建立和删除自己的 virtual hosts 所屬的 policies 和 parameters

monitoring

management 可以做的任何事外加:

    • 列出所有 virtual hosts,包括他們不能登入的 virtual hosts
    • 檢視其他使用者的 connections 和 channels
    • 檢視節點級别的資料如 clustering 和 memory 使用情況
    • 檢視真正的關于所有 virtual hosts 的全局的統計資訊

administrator

policymaker 和 monitoring 可以做的任何事外加:

    • 建立和删除 virtual hosts
    • 檢視、建立和删除 users
    • 檢視建立和删除 permissions
    • 關閉其他使用者的 connections

如下示例将 superrd 設定成 administrator 角色。

rabbitmqctl set_user_tags superrd administrator