1. 安裝Erlang
由於rabbitmq是基於erlang語言開發的,所以必須先安裝erlang。
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash yum -y install erlang
2. 安裝RabbitMQ Server
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash yum -y install rabbitmq-server
3. 更改系統限制
有兩個限制:操作系統內核允許的最大打開文件數(fs.file-max)和每個用戶的限制(ulimit -n)。前者必須高於后者。
我們建議在生產環境中為用戶Rabbitmq至少允許65536個文件描述符
查看內核允許的最大文件數
sysctl -n fs.file-max
不夠則修改/etc/sysctl.conf,然后運行sysvtl -p
修改rabbitmq進程允許的最大文件數,systemd編輯
/usr/lib/systemd/system/rabbitmq-server.service中的LimitNOFILE參數
[root@node2 ~]# cat /usr/lib/systemd/system/rabbitmq-server.service |grep LimitNOFILE # To override LimitNOFILE, create the following file: # LimitNOFILE=65536 LimitNOFILE=65536
如果是舊版的系統,沒有systemd的。可以修改
cat /etc/security/limits.conf ....... * soft nofile 65535 * hard nofile 65535
重啟服務后驗證限制
[root@node2 ~]# lsof -i:15672 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME beam.smp 129344 rabbitmq 96u IPv4 103591373 0t0 TCP *:15672 (LISTEN) [root@node2 ~]# cat /proc/129344/limits |grep "Max open files" Max open files 65536 65536 files
4. 啟動和關閉
systemctl start rabbitmq-server systemctl stop rabbitmq-server
5. 日志目錄
/var/log/rabbitmq/rabbit
日志每周輪詢一次,配置文件在: /etc/logrotate.d/rabbitmq-serve
6. 開啟WEB UI
rabbitmq-plugins enable rabbitmq_management
默認賬號密碼:guest guest(這個賬號只允許本機訪問)
7. 創建用戶
6.1 創建一個用戶,具有管理員權限
rabbitmqctl add_user admin password rabbitmqctl set_user_tags admin administrator
6.2 創建一個用戶和虛擬主機,並允許該用戶訪問該虛擬主機
rabbitmqctl add_user celery celery rabbitmqctl add_vhost celery_vhos rabbitmqctl set_user_tags celery celery_tag rabbitmqctl set_permissions -p celery_vhost celery ".*" ".*" ".*"
8. 默認端口
- 4369:epmd,RabbitMQ節點和CLI工具使用的對等發現服務
- 5672、5671:由不帶TLS和帶TLS的AMQP 0-9-1和1.0客戶端使用
- 25672:用於節點間和CLI工具通信(Erlang分發服務器端口),並從動態范圍分配(默認情況下限制為單個端口,計算為AMQP端口+ 20000)。除非確實需要這些端口上的外部連接(例如,群集使用聯合身份驗證或在子網外部的計算機上使用CLI工具),否則這些端口不應公開。有關詳細信息,請參見網絡指南。
- 35672-35682:由CLI工具(Erlang分發客戶端端口)用於與節點進行通信,並從動態范圍(計算為服務器分發端口+ 10000通過服務器分發端口+ 10010)分配。有關詳細信息,請參見網絡指南。
- 15672:HTTP API客戶端,管理UI和Rabbitmqadmin (僅在啟用了管理插件的情況下)
- 61613、61614:不帶TLS和帶TLS的STOMP客戶端(僅在啟用STOMP插件的情況下)
- 1883、8883 :(如果啟用了MQTT插件,則不帶TLS和具有TLS的MQTT客戶端
- 15674:STOMP-over-WebSockets客戶端(僅在啟用了Web STOMP插件的情況下)
- 15675:MQTT-over-WebSockets客戶端(僅在啟用Web MQTT插件的情況下)
- 15692:Prometheus指標(僅在啟用Prometheus插件的情況下)
參考文檔: