RabbitMQ安装与初始配置
目錄
- Erlang安裝
- RabbitMQ安裝
- 啟動/關(guān)閉/狀態(tài)查看
- 訪問端口
- 參考
- 用戶權(quán)限管理
- 用戶管理
- 權(quán)限管理
- 參考
- 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.rpmRabbitMQ安裝
在官網(wǎng)下載頁面找到和系統(tǒng)版本對應(yīng)的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啟動/關(guān)閉/狀態(tài)查看
#啟動/停止 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.#狀態(tài)查看 sudo rabbitmqctl status其中狀態(tài)查看會返回詳細(xì)的狀態(tài)信息:
[{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和與其機(jī)制類似的系統(tǒng)可能會阻止RabbtMQ綁定相應(yīng)端口,所以安裝完之后需要確保一下端口可以打開:
- 4369,epmd(Erlang Port Mapper Daemon),是Erlang的端口/結(jié)點(diǎn)名稱映射程序,用來跟蹤節(jié)點(diǎn)名稱監(jiān)聽地址,在集群中起到一個類似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,當(dāng)STOMP插件啟用的時候打開,作為STOMP客戶端端口(根據(jù)是否使用TLS選擇)
- 1883, 8883,當(dāng)MQTT插件啟用的時候打開,作為MQTT客戶端端口(根據(jù)是否使用TLS選擇)
- 15674,基于WebSocket的STOMP客戶端端口(當(dāng)插件Web STOMP啟用的時候打開)
- 15675,基于WebSocket的MQTT客戶端端口(當(dāng)插件Web MQTT啟用的時候打開)
參考
Installing on RPM-based Linux(Port Access)
RabbitMQ~開篇與環(huán)境部署
用戶權(quán)限管理
RabbitMQ有一個默認(rèn)的用戶"guest",密碼也是"guest",這個用戶默認(rèn)只能通過本機(jī)訪問,eg:http://localhost:15672/,在通過http訪問之前記得啟用management插件:
$rabbitmq-plugins enable rabbitmq_management要讓其他機(jī)器可以訪問,需要創(chuàng)建一個新用戶,為其分配權(quán)限。用戶權(quán)限可以通過rabbitmqctl執(zhí)行相關(guān)命令來維護(hù),rabbitmqctl是管理rabbitmq的命令行管理工具,下面介紹相關(guān)的命令:
用戶管理
- 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},用戶認(rèn)證
- set_user_tags {username} {tag ...},為用戶設(shè)置角色,tag可以是0個、一個、或多個,eg:rabbitmqctl set_user_tags chris administrator,設(shè)置為管理員;rabbitmqctl set_user_tags chris,清除chris與角色的關(guān)聯(lián)。
權(quán)限管理
RabbitMQ客戶端連接到一個服務(wù)端的時候,在它的操作指令中指定了一個虛擬主機(jī)。服務(wù)端首先檢查是否有訪問該虛擬主機(jī)的權(quán)限,沒有權(quán)限的會拒絕連接。
對于exchanges和queues等資源,位于某個虛擬主機(jī)內(nèi);不同虛擬主機(jī)內(nèi)即便名稱相同也代表不同的資源。當(dāng)特定操作在資源上執(zhí)行時第二級訪問控制開始生效。
RabbitMQ在某個資源上區(qū)分了配置、寫和讀操作。配置操作創(chuàng)建或者銷毀資源,或者更改資源的行為。寫操作將消息注入進(jìn)資源之中。讀操作從資源中獲取消息。
要執(zhí)行特定操作用戶必須授予合適的權(quán)限。
下面介紹相關(guān)命令:
- list_vhosts [vhostinfoitem ...],獲取vhosts列表
- add_vhost {vhost}, eg:rabbitmqctl add_vhost test
- delete_vhost {vhost}
- set_permissions [-p vhost] {user} {conf} {write} {read},給用戶分在對應(yīng)的vhost上分配相應(yīng)的權(quán)限。eg:rabbitmqctl set_permissions -p /myvhost chris "^chris-.*" ".*" ".*",這條指令,給用戶chris在myvhost分配了權(quán)限,權(quán)限包括:以"chris-"開頭的全部資源的配置權(quán)限,和所有資源的讀寫權(quán)限
- clear_permissions [-p vhost] {username},清除權(quán)限
- list_permissions [-p vhost],vhost權(quán)限分配列表
- list_user_permissions {username},user權(quán)限列表
參考
rabbitmqctl(1) manual page(User management, Access control)
System Limits
rabbitmq會維持大量的網(wǎng)絡(luò)連接,所以系統(tǒng)允許同時打開的最大文件數(shù)需要調(diào)整。推薦的允許同時打開的最大文件數(shù)為65535。有兩個地方需要設(shè)置:
- 系統(tǒng)每個用戶允許的最大同時打開文件數(shù),ulimit -n,可以通過ulimit -n size設(shè)置
- 系統(tǒng)允許的最大同時打開文件數(shù),fs.file-max
系統(tǒng)級限制查看與設(shè)置:
#查看 $ cat /proc/sys/fs/file-max 184289 $ cat /proc/sys/fs/file-nr 1024 0 184289 #已分配文件句柄的數(shù)目 分配了但沒有使用的句柄數(shù) 文件句柄最大數(shù)目#設(shè)置 $echo 284289 > /proc/sys/fs/file-maxulimit 命令詳解
ulimit用于shell啟動進(jìn)程所占用的資源,是shell內(nèi)建命令。
參數(shù)介紹:
-H 設(shè)置硬件資源限制.
-S 設(shè)置軟件資源限制.
-a 顯示當(dāng)前所有的資源限制.
-c size:設(shè)置core文件的最大值.單位:blocks
-d size:設(shè)置數(shù)據(jù)段的最大值.單位:kbytes
-f size:設(shè)置創(chuàng)建文件的最大值.單位:blocks
-l size:設(shè)置在內(nèi)存中鎖定進(jìn)程的最大值.單位:kbytes
-m size:設(shè)置可以使用的常駐內(nèi)存的最大值.單位:kbytes
-n size:設(shè)置內(nèi)核可以同時打開的文件描述符的最大值.單位:n
-p size:設(shè)置管道緩沖區(qū)的最大值.單位:kbytes
-s size:設(shè)置堆棧的最大值.單位:kbytes
-t size:設(shè)置CPU使用時間的最大上限.單位:seconds
-v size:設(shè)置虛擬內(nèi)存的最大值.單位:kbytesLinux
可以通過rabbitmqctl status查看當(dāng)前的限制狀態(tài),status中的file_descriptors描述了當(dāng)前的限制:
{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限制打開文件數(shù)量
日志
Rabbitmq默認(rèn)日志路徑:/var/log/rabbitmq/,路徑之下有兩類日志文件:
- rabbit@{hostname}.log,輸出rabbitmq運(yùn)行相關(guān)的信息,如網(wǎng)絡(luò)流量、用戶、交換器、隊列等信息
- rabbit@{hostname}-sasl.log,Erlang運(yùn)行相關(guān)信息
轉(zhuǎn)載于:https://www.cnblogs.com/chrischennx/p/7071471.html
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ安装与初始配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fft ocean注解
- 下一篇: NUC1373 Bank Interes