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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ安装与初始配置

發布時間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ安装与初始配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • Erlang安裝
  • RabbitMQ安裝
  • 啟動/關閉/狀態查看
  • 訪問端口
    • 參考
  • 用戶權限管理
    • 用戶管理
    • 權限管理
    • 參考
  • System Limits
    • 參考
  • 日志

本文只討論linux下的Rabbitmq安裝。

Erlang安裝

rabbitmq依賴于Erlang,需先安裝,推薦安裝rabbitmq/erlang-rpm:

#clone源碼 git clone https://github.com/rabbitmq/erlang-rpm.git #make cd erlang-rpm make #需要等待較長時間 cd RPMS/x86_64 #其下有兩個rpm包 erlang-19.3.6-1.alios6.x86_64.rpm erlang-debuginfo-19.3.6-1.alios6.x86_64.rpm, 選擇前者安裝 #安裝 sudo rpm -ivh erlang-19.3.6-1.alios6.x86_64.rpm

RabbitMQ安裝

在官網下載頁面找到和系統版本對應的rabbitmq版本:

#安裝rabbitmq-server sudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm #此時可能報:Requires: socat, 以下是解決方法, 參考:http://www.cnblogs.com/ray30th/p/6651800.html sudo wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo sudo yum makecache sudo yum install socat #重新安裝rabbitmq-server sudo yum install rabbitmq-server-3.6.10-1.el6.noarch.rpm

啟動/關閉/狀態查看

#啟動/停止 start/stop $sudo /sbin/service rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server.$sudo /sbin/service rabbitmq-server stop Stopping rabbitmq-server: rabbitmq-server.#狀態查看 sudo rabbitmqctl status

其中狀態查看會返回詳細的狀態信息:

[{pid,2022},{running_applications,[{rabbit,"RabbitMQ","3.6.10"},{os_mon,"CPO CXC 138 46","2.4.2"},{rabbit_common,"Modules shared by rabbitmq-server and rabbitmq-erlang-client","3.6.10"},{ranch,"Socket acceptor pool for TCP protocols.","1.3.0"},{ssl,"Erlang/OTP SSL application","8.1.3"},{public_key,"Public key infrastructure","1.4"},{crypto,"CRYPTO","3.7.4"},{compiler,"ERTS CXC 138 10","7.0.4"},{asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"},{xmerl,"XML parser","1.3.14"},{syntax_tools,"Syntax tools","2.1.1"},{mnesia,"MNESIA CXC 138 12","4.14.3"},{sasl,"SASL CXC 138 11","3.0.3"},{stdlib,"ERTS CXC 138 10","3.3"},{kernel,"ERTS CXC 138 10","5.2"}]},{os,{unix,linux}},{erlang_version,"Erlang/OTP 19 [erts-8.3.5] [source] [64-bit] [smp:2:2] [async-threads:64] [hipe] [kernel-poll:true]\n"},{memory,[{total,53336792},{connection_readers,0},{connection_writers,0},{connection_channels,0},{connection_other,0},{queue_procs,2832},{queue_slave_procs,0},{plugins,0},{other_proc,20729016},{mnesia,60688},{metrics,184080},{mgmt_db,0},{msg_index,42608},{other_ets,2138344},{binary,116568},{code,21389077},{atom,891849},{other_system,7962978}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"0.0.0.0"}]},{vm_memory_high_watermark,0.4},{vm_memory_limit,1660447948},{disk_free_limit,50000000},{disk_free,94489919488},{file_descriptors,[{total_limit,65435},{total_used,2},{sockets_limit,58889},{sockets_used,0}]},{processes,[{limit,1048576},{used,152}]},{run_queue,0},{uptime,15},{kernel,{net_ticktime,60}}]

訪問端口

SELinux和與其機制類似的系統可能會阻止RabbtMQ綁定相應端口,所以安裝完之后需要確保一下端口可以打開:

  • 4369,epmd(Erlang Port Mapper Daemon),是Erlang的端口/結點名稱映射程序,用來跟蹤節點名稱監聽地址,在集群中起到一個類似DNS的作用。
  • 5672, 5671, AMQP 0-9-1 和 1.0 客戶端端口,used by AMQP 0-9-1 and 1.0 clients without and with TLS(Transport Layer Security)
  • 25672,Erlang distribution,和4369配合
  • 15672,HTTP_API端口,管理員用戶才能訪問,用于管理RbbitMQ,需要啟用management插件,rabbitmq-plugins enable rabbitmq_management,訪問http://server-name:15672/
  • 61613, 61614,當STOMP插件啟用的時候打開,作為STOMP客戶端端口(根據是否使用TLS選擇)
  • 1883, 8883,當MQTT插件啟用的時候打開,作為MQTT客戶端端口(根據是否使用TLS選擇)
  • 15674,基于WebSocket的STOMP客戶端端口(當插件Web STOMP啟用的時候打開)
  • 15675,基于WebSocket的MQTT客戶端端口(當插件Web MQTT啟用的時候打開)

參考

Installing on RPM-based Linux(Port Access)
RabbitMQ~開篇與環境部署

用戶權限管理

RabbitMQ有一個默認的用戶"guest",密碼也是"guest",這個用戶默認只能通過本機訪問,eg:http://localhost:15672/,在通過http訪問之前記得啟用management插件:

$rabbitmq-plugins enable rabbitmq_management

要讓其他機器可以訪問,需要創建一個新用戶,為其分配權限。用戶權限可以通過rabbitmqctl執行相關命令來維護,rabbitmqctl是管理rabbitmq的命令行管理工具,下面介紹相關的命令:

用戶管理

  • list_users,用戶列表
  • add_user {username} {password},添加用戶
  • delete_user {username},刪除用戶
  • change_password {username} {newpassword},修改密碼
  • clear_password {username},刪除密碼,密碼刪除后就不能訪問了。This user now cannot log in with a password (but may be able to through e.g. SASL EXTERNAL if configured)
  • authenticate_user {username} {password},用戶認證
  • set_user_tags {username} {tag ...},為用戶設置角色,tag可以是0個、一個、或多個,eg:rabbitmqctl set_user_tags chris administrator,設置為管理員;rabbitmqctl set_user_tags chris,清除chris與角色的關聯。
#用戶列表查看 $sudo rabbitmqctl list_users Listing users guest [administrator] #添加用戶 $sudo rabbitmqctl add_user chris 123 Creating user "chris" #為用戶分配權限 $sudo rabbitmqctl set_user_tags chris administrator Setting tags for user "chris" to [administrator] #然后就可以通過http://host:15672 登錄management界面管理rabbitmq了,但此時用戶chris還沒有訪問隊列資源的權限

權限管理

RabbitMQ客戶端連接到一個服務端的時候,在它的操作指令中指定了一個虛擬主機。服務端首先檢查是否有訪問該虛擬主機的權限,沒有權限的會拒絕連接。

對于exchanges和queues等資源,位于某個虛擬主機內;不同虛擬主機內即便名稱相同也代表不同的資源。當特定操作在資源上執行時第二級訪問控制開始生效。

RabbitMQ在某個資源上區分了配置、寫和讀操作。配置操作創建或者銷毀資源,或者更改資源的行為。寫操作將消息注入進資源之中。讀操作從資源中獲取消息。

要執行特定操作用戶必須授予合適的權限。

下面介紹相關命令:

  • list_vhosts [vhostinfoitem ...],獲取vhosts列表
  • add_vhost {vhost}, eg:rabbitmqctl add_vhost test
  • delete_vhost {vhost}
  • set_permissions [-p vhost] {user} {conf} {write} {read},給用戶分在對應的vhost上分配相應的權限。eg:rabbitmqctl set_permissions -p /myvhost chris "^chris-.*" ".*" ".*",這條指令,給用戶chris在myvhost分配了權限,權限包括:以"chris-"開頭的全部資源的配置權限,和所有資源的讀寫權限
  • clear_permissions [-p vhost] {username},清除權限
  • list_permissions [-p vhost],vhost權限分配列表
  • list_user_permissions {username},user權限列表
$sudo rabbitmqctl set_permissions -p / chris ".*" ".*" ".*" Setting permissions for user "chris" in vhost "/" #此時用戶chris才有訪問隊列資源的權限

參考

rabbitmqctl(1) manual page(User management, Access control)

System Limits

rabbitmq會維持大量的網絡連接,所以系統允許同時打開的最大文件數需要調整。推薦的允許同時打開的最大文件數為65535。有兩個地方需要設置:

  • 系統每個用戶允許的最大同時打開文件數,ulimit -n,可以通過ulimit -n size設置
  • 系統允許的最大同時打開文件數,fs.file-max

系統級限制查看與設置:

#查看 $ cat /proc/sys/fs/file-max 184289 $ cat /proc/sys/fs/file-nr 1024 0 184289 #已分配文件句柄的數目 分配了但沒有使用的句柄數 文件句柄最大數目#設置 $echo 284289 > /proc/sys/fs/file-max

ulimit 命令詳解

ulimit用于shell啟動進程所占用的資源,是shell內建命令。

參數介紹:
-H 設置硬件資源限制.
-S 設置軟件資源限制.
-a 顯示當前所有的資源限制.
-c size:設置core文件的最大值.單位:blocks
-d size:設置數據段的最大值.單位:kbytes
-f size:設置創建文件的最大值.單位:blocks
-l size:設置在內存中鎖定進程的最大值.單位:kbytes
-m size:設置可以使用的常駐內存的最大值.單位:kbytes
-n size:設置內核可以同時打開的文件描述符的最大值.單位:n
-p size:設置管道緩沖區的最大值.單位:kbytes
-s size:設置堆棧的最大值.單位:kbytes
-t size:設置CPU使用時間的最大上限.單位:seconds
-v size:設置虛擬內存的最大值.單位:kbytesLinux

可以通過rabbitmqctl status查看當前的限制狀態,status中的file_descriptors描述了當前的限制:

{file_descriptors,[{total_limit,65435},{total_used,2},{sockets_limit,58889},{sockets_used,0}]},{processes,[{limit,1048576},{used,330}]}

參考

rabbitmqctl(1) manual page (Controlling System Limits on Linux)
linux限制打開文件數量

日志

Rabbitmq默認日志路徑:/var/log/rabbitmq/,路徑之下有兩類日志文件:

  • rabbit@{hostname}.log,輸出rabbitmq運行相關的信息,如網絡流量、用戶、交換器、隊列等信息
  • rabbit@{hostname}-sasl.log,Erlang運行相關信息

轉載于:https://www.cnblogs.com/chrischennx/p/7071471.html

總結

以上是生活随笔為你收集整理的RabbitMQ安装与初始配置的全部內容,希望文章能夠幫你解決所遇到的問題。

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