日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置

發布時間:2023/11/28 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 服務器管理

我們使用 “節點” 來指代 RabbitMQ 實例,當我們談到 RabbitMQ 節點時指的是 RabbitMQ 應用程序和其所在的 Erlang 節點。

1.1 啟動節點

啟動節點有以下幾種方式

rabbitmq-server start 
或者
service rabbitmq-server start

或者以守護程序的方式在后臺運行:

./rabbitmq-server -detached

該命令會同時啟動應用程序和 Erlang 節點。

1.2 停止節點

在 RabbitMQ 的安裝目錄下執行以下命令時,rabbitmqctl 會和本地節點通信并指示其干凈的關閉。

rabbitmqctl stop 

該命令會同時關閉應用程序和 Erlang 節點。

1.3 啟動應用程序

啟動應用程序可輸入以下命令:

rabbitmqctl start_app

1.4 停止應用程序

僅停止應用程序可輸入以下命令:

rabbitmqctl stop_app

2. 管理用戶

RabbitMQ 權限系統使得單個用戶可以跨越多個 vhost 進行授權。但是必須創建多個控制條目。

2.1 創建用戶

RabbitMQ 配置遠程連接

遠程訪問 RabbitMQ 自己增加一個用戶,步驟如下:

  1. 創建一個admin用戶:
    sudo rabbitmqctl add_user admin 123123
  1. 設置該用戶為administrator角色:
    sudo rabbitmqctl set_user_tags admin administrator
  1. 設置權限
    sudo rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
  1. 重啟rabbitmq服務:
     sudo service rabbitmq-server restart

之后就能用admin用戶遠程連接rabbitmq server了。

注意:RabbitMQ 默認使用 5672 端口,如果是在云端部署的話需要確認云端的 5672 端口開啟。

3. 常用命令匯總

3.1 節點相關

rabbitmq-service start	// 啟動 RabbitMQ 節點
rabbitmq-service stop	// 關閉 RabbitMQ 節點
rabbitmq-server restart	// 重啟 RabbitMQ 節點

3.2 應用相關

rabbitmqctl start_app	// 啟動應用
rabbitmqctl stop_app 	// 停止應用
rabbitmqctl reset		// 重置應用
rabbitmqctl shutdown	// 關閉應用
rabbitmqctl status		// 查看狀態

rabbitmqctl reset 將 RabbitMQ 節點重置還原到最初狀態。包括從原來所在的集群中刪除此節點,從管理數據庫中刪除所有的配置數據,如己配置的用戶、vhost 等,以及刪除所有的持久化消息。執行 rabbitmqctl reset 命令前必須停止 RabbitMQ 應用(比如先執行 rabbitmqctl stop_app ) 。

3.3 用戶相關

在 RabbitMQ 中,用戶是訪問控制 ( Access Contro l) 的基本單元,且單個用戶可以跨越多
個 vhost 進行授權。針對一至多個 vhost,用戶可以被賦予不同級別的訪問權限,并使用標準的用戶名和密碼來認證用戶。

rabbitmqctl add_user {username} {password}		// 添加用戶
rabbitmqctl delete_user {username}		// 刪除用戶
rabbitmqctl change_password {username} {newpassword}	// 修改密碼
rabbitmqctl clear_password {username} 	// 清除用戶密碼
rabbitmqctl authenti?ate_user {username} {password} // 驗證用戶
rabbitmqctl set_user_tags {username} administrator	// 分配角色,設置用戶標簽
rabbitmqctl list_users 		// 列出所有用戶

將新虛擬主機授權給新用戶: rabbitmqctl set_permissions -p vhost_name username ‘.’ '.’ ‘.*’

用戶的角色分為 5 種類型:

  • none: 無任何角色。新創建的用戶的角色默認為 none。
  • management: 可以訪問Web 管理頁面
  • policymaker: 包含management 的所有權限,并且可以管理策略(Policy) 和參數(Parameter)。
  • monitoring: 包含 management 的所有權限,并且可以看到所有連接、信道及節點
    相關的信息。
  • administartor: 包含 monitoring 的所有權限,井且可以管理用戶、虛擬主機、權限、策略、參數等。administator 代表了最高的權限。

設置角色 rabbitmqctl set_user_tags {username} {tag …}
tag 參數用于設置0 個、1 個或者多個的角色,設置之后任何之前現有的身份都會被刪除。

rabbitmqctl set_user_tags  root policymaker , management

設置用戶權限 rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP
查詢所有權限 rabbitmqctl list_permissions [-p vhost]
指定用戶權限 rabbitmqctl list_user_permissions {user_name}
清除用戶權限 rabbitmqctl clear_permissions [-p vhost] {user_name}
其中 vhost 用于設置禁止用戶訪問的虛擬主機的名稱, 默認為"/" ; username 表示禁止訪問特定虛擬主機的用戶名稱。

添加權限: rabbitmqctl set_permissions -p / username “." ".” “.*”
修改用戶角色:rabbitmqctl set_user_tags username administrator

權限設置說明:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath:授予用戶訪問權限的 vhost 名稱,可以設置為默認值,即 vhost 為 “/”。
user:可以訪問指定vhost 的用戶名。
Conf:一個正則表達式 match 哪些配置資源能夠被該用戶訪問。
Write:一個正則表達式 match 哪些配置資源能夠被該用戶讀寫。
Read:一個正則表達式 match 哪些配置資源能夠被該用戶訪問讀。

注:可配直指的是隊列和交換器的創建及刪除之類的操作;可寫指的是發布消息;可讀指
與消息有關的操作,包括讀取消息及清空整個隊列等。

3.4 vhost 相關

rabbitmqctl add_vhost  {vhost_name}	// 添加vhost,新增虛擬主機
rabbitmqctl delete_vhost	// 刪除vhost
rabbitmqctl list_vhost 		// 列出所有的vhost

3.5 權限相關

rabbitmqctl set_permissions [-p]	// 設置用戶對應的權限
rabbitmqctl list_user_permissions	// 列出用戶的權限
rabbitmqctl list_permissions [-p] 	// 列出vhost的權限
rabbitmqctl clear_permissions [-p]	// 清除用戶的權限

3.6 隊列相關

rabbitmqctl list_queues [-p] 		// 列出vhsot中對應的queue
rabbitmqctl list_exchanges [-p]		// 列出vhsot中對應的交換機
rabbitmqctl list_bindings [-p] 		// 列出對應的綁定信息
rabbitmqctl list_connections 		// 列出對應的連接數
rabbitmqctl list_channels 			// 列出對應的信道
rabbitmqctl list_consumers 			// 列出對應的消費者 
rabbitmqctl list_queues -p vhost_test1 //列出queues
rabbitmqctl list_queues -p vhost_test1 name messages consumers memory //查看queues對應統計信息

4. 實踐

4.1 使用 docker 創建一個 RabbitMQ 容器

  1. 拉取 RabbitMQ 鏡像
wohu@wohu:~$ docker pull rabbitmq
Using default tag: latest
latest: Pulling from library/rabbitmq
7ddbc47eeb70: Pull complete 
c1bbdc448b72: Pull complete 
8c3b70e39044: Pull complete 
45d437916d57: Pull complete 
916459a32f87: Pull complete 
aba97e76a6d7: Pull complete 
6cfc7646d503: Pull complete 
5e8c71984192: Pull complete 
16722d38aada: Pull complete 
b3a7c7a8fb05: Pull complete 
Digest: sha256:3c0ebabfb9e8b53b18d4ee060019718f47df17dc4a333f1ae1715963216216bd
Status: Downloaded newer image for rabbitmq:latest
  1. 創建 RabbitMQ 容器
wohu@wohu:~$ docker run -d --log-opt max-size=100m --restart=always --hostname wohu -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -p 5672:5672 -p 8081:15672 rabbitmq:latest 
2aca4e39bb8d5d1fd2373740497c72a1e1ec1638ce98f74dc6aec27c554f1ff2

參數說明:

參數含義
–log-opt max-size=100m指定日志文件大小上限
–log-opt max-file=3指定日志文件個數
–hostname wohu更改容器主機名為 wohu,否則默認顯示數字和字母的混合
–restart=alwaysdocker 服務重啟時,容器能夠自動啟動
-v /etc/localtime:/etc/localtime讓容器共享主機的 localtime
-v /etc/timezone:/etc/timezone讓容器共享主機的 timezone
-p 5672:5672將主機 5672 端口映射到容器端口 5672

說明:
docker 日志默認位置在 /var/lib/docker/containers/containeid 目錄下面的 containeid-json.log 文件中

  1. 進入 RabbitMQ 容器,添加賬戶
wohu@wohu:~$ docker exec -ti 2a /bin/bash        
root@wohu:/# rabbitmqctl list_users
Listing users ...
user	tags
guest	[administrator]
root@wohu:/# rabbitmqctl add_user admin 123123
Adding user "admin" ...
root@wohu:/# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
root@wohu:/# rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
Setting permissions for user "admin" in vhost "/" ...
root@wohu:/# exit
exit
  1. 重啟容器,查看是否創建成功
wohu@wohu:~$ docker restart 2a
2a
wohu@wohu:~$ docker exec -ti 2a /bin/bash
root@wohu:/# rabbitmqctl list_vhosts
Listing vhosts ...
name
/
root@wohu:/# rabbitmqctl list_users
Listing users ...
user	tags
admin	[administrator]
guest	[administrator]
  1. 開啟 RabbitMQ 頁面管理插件
    輸入 rabbitmq-plugins list 查看插件列表
root@wohu:/# rabbitmq-plugins list
Listing plugins with pattern ".*" ...Configured: E = explicitly enabled; e = implicitly enabled| Status: * = running on rabbit@wohu|/
[  ] rabbitmq_amqp1_0                  3.8.1
[  ] rabbitmq_auth_backend_cache       3.8.1
[  ] rabbitmq_auth_backend_http        3.8.1
[  ] rabbitmq_auth_backend_ldap        3.8.1
[  ] rabbitmq_auth_backend_oauth2      3.8.1
[  ] rabbitmq_auth_mechanism_ssl       3.8.1
[  ] rabbitmq_consistent_hash_exchange 3.8.1
[  ] rabbitmq_event_exchange           3.8.1
[  ] rabbitmq_federation               3.8.1
[  ] rabbitmq_federation_management    3.8.1
[  ] rabbitmq_jms_topic_exchange       3.8.1
[  ] rabbitmq_management               3.8.1
[  ] rabbitmq_management_agent         3.8.1
[  ] rabbitmq_mqtt                     3.8.1
[  ] rabbitmq_peer_discovery_aws       3.8.1
[  ] rabbitmq_peer_discovery_common    3.8.1
[  ] rabbitmq_peer_discovery_consul    3.8.1
[  ] rabbitmq_peer_discovery_etcd      3.8.1
[  ] rabbitmq_peer_discovery_k8s       3.8.1
[  ] rabbitmq_prometheus               3.8.1
[  ] rabbitmq_random_exchange          3.8.1
[  ] rabbitmq_recent_history_exchange  3.8.1
[  ] rabbitmq_sharding                 3.8.1
[  ] rabbitmq_shovel                   3.8.1
[  ] rabbitmq_shovel_management        3.8.1
[  ] rabbitmq_stomp                    3.8.1
[  ] rabbitmq_top                      3.8.1
[  ] rabbitmq_tracing                  3.8.1
[  ] rabbitmq_trust_store              3.8.1
[  ] rabbitmq_web_dispatch             3.8.1
[  ] rabbitmq_web_mqtt                 3.8.1
[  ] rabbitmq_web_mqtt_examples        3.8.1
[  ] rabbitmq_web_stomp                3.8.1
[  ] rabbitmq_web_stomp_examples       3.8.1
root@wohu:/# 

開啟插件 rabbitmq-plugins enable rabbitmq_management

root@wohu:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@wohu:
rabbitmq_management
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatch
Applying plugin configuration to rabbit@wohu...
The following plugins have been enabled:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchstarted 3 plugins.
  1. 頁面訪問
    啟動成功之后訪問 http://ip:8081/#/, 即可看到 RabbitMQ 的管理頁面.
  2. 制作鏡像
    將添加賬戶和開啟頁面管理插件的容器做成一個鏡像文件.
wohu@wohu:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
2aca4e39bb8d        rabbitmq:latest     "docker-entrypoint.s…"   3 hours ago         Up 3 hours          4369/tcp, 5671/tcp, 25672/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:8081->15672/tcp   silly_torvalds
wohu@wohu:~$ docker commit -m "add admin account and enable web management" -a "wohu" 2aca4e39bb8d rabbitmq_web
sha256:f8c3c0b1bf6ca6c030d08e08aaa50c1444d01fc46668a5789c43dd87035e5451
wohu@wohu:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
rabbitmq_web        latest              f8c3c0b1bf6c        5 seconds ago       150MB
rabbitmq            latest              72469b528c2d        9 days ago          150MB
  1. 將鏡像文件保存在本地
wohu@wohu:~$ docker save -o web_rabbitmq.tar  rabbitmq_web
wohu@wohu:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
rabbitmq_web        latest              f8c3c0b1bf6c        About a minute ago   150MB
rabbitmq            latest              72469b528c2d        9 days ago           150MB
wohu@wohu:~$ ls
web_rabbitmq.tar
  1. 在其它機器上再導入該鏡像文件,就可以使用已將添加的 admin 賬戶和 web 管理功能
wohu@wohu:~$ docker load -i web_rabbitmq.tar 

總結

以上是生活随笔為你收集整理的RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。