安裝Erlang
RabbitMQ是使用Erlang所編寫的,所以RabbitMQ的執行依賴Erlang。為了簡單起見,這裡只安裝RabbitMQ官方提供的“零依賴”版Erlang
新建/etc/yum.repos.d/rabbitmq_erlang.repo
檔案並鍵入以下內容:
CentOS 8
[rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
CentOS 7
[rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=1 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 # PackageCloud's repository key and RabbitMQ package signing key gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
執行以下命令即可安裝:
yum install erlang
下載安裝包
RabbitMQ官方提供編譯好的二進位制安裝包,下載解壓後即可使用,非常方便,下載地址:
www.rabbitmq.com/install-generic-u...
選擇對應作業系統的版本即可。.xz
壓縮檔案解壓方法:
tar -xvJf rabbitmq-server-generic-unix-3.8.7.tar.xz
啟用管理外掛
RabbitMQ的管理外掛提供了一套基於HTTP的API,用於管理和監控RabbitMQ的節點和叢集,它同時提供了網頁介面和命令列工具rabbitmqadmin
。
要啟用管理外掛,只需要執行以下命令:
./sbin/rabbitmq-plugins enable rabbitmq_management
管理網頁的預設訪問埠是15672
,你可以使用下面的網址來訪問:http://{node-hostname}:15672/
。
RabbitMQ的命令檔案位於安裝目錄下的sbin
目錄中
- 啟動
./sbin/rabbitmq-server // 開啟 ./sbin/rabbitmq-server -detached // 守護執行緒開啟 ./sbin/rabbitmqctl reset // 重啟節點
- 關閉
./sbin/rabbitmqctl stop // 停止 ./sbin//rabbitmqctl stop_app // 停止應用 ./sbin/rabbitmqctl -n rabbit@server.example.com stop // 停止特定節點
- 查詢
./sbin/rabbitmqctl status // 檢視服務狀態 ./sbin/rabbitmqctl list_bindings // 檢視繫結 ./sbin/rabbitmqctl list_exchanges // 檢視交換器 ./sbin/rabbitmqctl list_queues // 檢視佇列
使用者管理
./sbin/rabbitmqctl list_users // 檢視使用者
./sbin/rabbitmqctl add_user developer 123456 // 新增使用者
./sbin/rabbitmqctl/delete_user developer // 刪除使用者
./sbin/rabbitmqctl change_password developer developer123456
角色管理
RabbitMQ中主要有administrator
,monitoring
,policymaker
,management
,impersonator
,none
幾種角色。每種角色的許可權如下:
- none:
不能進入Web Management,只能傳送和接收訊息,所以一般生產者和消費者預設角色就是這個。 - 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:
超級管理員,擁有最高的許可權,可以做任何事
給使用者分配角色:
./sbin/rabbitmqctl set_user_tags developer administrator monitoring
VirtualHost管理
RabbitMQ中的VirtualHost是一臺邏輯上獨立的伺服器,它提供了一種隔離機制,在多租戶使用的時候特別有用。每一個VHost都有自己的交換機、佇列、繫結和許可權控制,允許不同的Vhost之間擁有同名的佇列、交換機。拿MySQL來類比,VHost就相當於MySQL中的資料庫,佇列、交換機就相當於庫的表,每個庫都可以有自己的許可權配置。
VHost控制命令
./sbin/rabbitmqctl list_vhosts // 列舉所有Vhost
./sbin/rabbitmqctl add_vhost test // 新增Vhost
./sbin/rabbitmqctl delete_vhost test // 刪除Vhost
使用者許可權
給使用者分配許可權主要包括兩方面:
- 繫結到指定的Vhost上,只有繫結到Vhost上,使用者才能訪問該Vhost上的資源。
- 設定對佇列、交換機的許可權,這些許可權包括配置許可權和讀寫許可權。配置許可權會影響到交換機、佇列的宣告和刪除。讀寫許可權影響到從佇列裡取訊息,向交換機傳送訊息以及佇列和交換機的繫結(binding)操作。
例如: 將佇列繫結到某交換機上,需要具有佇列的可寫許可權,以及交換機的可讀許可權;向交換機傳送訊息需要具有交換機的可寫許可權;從佇列裡取資料需要具有佇列的可讀許可權。
設定使用者許可權的命令格式
./sbin/rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
一個例子
./sbin/rabbitmqctl set_permissions -p / developer ".*" ".*" ".*"
其它常用命令
./sbin/rabbitmqctl list_permissions [-p VHostPath] // 檢視(指定hostpath)所有使用者的許可權資訊
./sbin/rabbitmqctl list_user_permissions User // 檢視指定使用者的許可權資訊
./sbinrabbitmqctl clear_permissions [-p VHostPath] User // 清除使用者的許可權資訊
本作品採用《CC 協議》,轉載必須註明作者和本文連結