RabbitMQ安裝


部署安裝RabbitMQ前,先了解下基本概念:(RabbitMQ+Python入門經典] 兔子和兔子窩

RabbitMQ是一個在AMQP基礎上完整的,可復用的企業消息系統。他遵循Mozilla Public License開源協議。

MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消 息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。說的籠統點是queue+socket實現

安裝Erlang

在安裝RabbitMQ之前,我們需要安裝Erlang,官方建議使用打包版本,有三個建議的來源:
  1、使用官方生成的一個軟件包(https://github.com/rabbitmq/erlang-rpm),它只提供運行RabbitMQ所需要的組件,它可能會也可能不適合運行其他基於Erlang的軟件或第三方RabbitMQ插件
  2、使用Erlang官方下載一個rpm包(https://www.erlang-solutions.com/resources/download.html),這個包通常是最新的
  3、使用EPEL源來安裝,這種方式安裝的包並不總是最新的

這里我選擇第1種方式:

vim /etc/yum.repos.d/rabbitmq-erlang.repo
    [rabbitmq-erlang]
    name=rabbitmq-erlang
    baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
    gpgcheck=1
    gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    repo_gpgcheck=0
    enabled=1

yum install erlang

 

安裝RabbitMQ服務器

wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el7.noarch.rpm
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.7.0-1.el7.noarch.rpm

 

啟動服務器

systemctl enable rabbitmq-server
systemctl start rabbitmq-server

 

配置RabbitMQ

在大多數系統上,一個節點應該能夠啟動並運行所有的默認值
生產環境配置后面再詳解
注意:服務器設置為以系統用戶rabbitmq運行 。如果更改節點數據庫或日志的位置,則必須確保文件由該用戶所有(並且還要更新環境變量)

 

端口訪問

SELinux和類似的機制可能會阻止RabbitMQ綁定到一個端口。發生這種情況時,RabbitMQ將無法啟動
防火牆可以防止節點和CLI工具相互通信。確保可以打開以下端口:
4369:epmd, RabbitMQ節點和CLI工具使用的對等發現服務
5672,5671:  由AMQP 0-9-1和1.0客戶端使用
25672:     由Erlang分配用於節點間和CLI工具通信,並且從動態范圍分配(AMQP端口+20000)
15672:     HTTP API客戶端和rabbitmqadmin(僅當管理插件啟用時)
61613,61614:STOMP客戶端沒有和使用TLS(只有STOMP插件已啟用)
1883年,8883:(MQTT客戶端沒有和TLS,如果MQTT插件已啟用)
15674:STOMP-over-WebSockets客戶端(僅在啟用了Web STOMP插件的情況下)
15675:MQTT-over-WebSockets客戶端(僅在啟用了Web MQTT插件的情況下)

 

默認的用戶訪問

默認將創建一個用戶guest,密碼guest。默認情況下,只有在以localhost身份連接到代理時才能使用這些憑證

 

調整系統限制

運行生產工作負載的RabbitMQ安裝可能需要系統限制和內核參數調整,以便處理體面的並發連接和隊列。需要調整的主要設置是打開文件的最大數量,也稱為ulimit -n
許多操作系統上的默認值對於消息傳遞代理來說太低(例如,在幾個Linux發行版上為1024)。我們建議在生產環境中為用戶rabbitmq至少允許65536個文件描述符。4096對於大多數開發工作量來說應該是足夠的
有兩個限制操作系統內核允許的最大打開文件數(fs.file-max)和每用戶限制(ulimit -n)。前者必須高於后者

fs.file-max設置

# vim /etc/sysctl.conf,添加:
    fs.file-max = 65535
# sysctl -p

每用戶限制(ulimit -n)

# vim /etc/security/limits.conf
    在最后一行添加如下命令
    root soft nofile 65535
    root hard nofile 65535
    * soft nofile 65535
    * hard nofile 65535
     
# vim /etc/rc.local
    ulimit -SHn 65535 

修改rabbitmq配置

修改rabbitmq配置
    修改/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service
    在[Service]中,增加LimitNOFILE=30000(具體數值根據需要)
執行systemctl daemon-reload
重啟rabbitmq服務
rabbitmqctl status

 

修改日志和數據存放路徑

原來的默認位置是/var下, 以下數據在log里面可以查到,一般log 在/var/log.rabbitmq/rabbitmq@usrename.log 中

 

home dir : /var/lib/rabbitmq
config file(s) : (none)      #默認沒有 rabbitmq.conf,可以在/etc/rabbitmq.conf
cookie hash : QuwI6ycYrkUgnpRXQvBoAg==
log(s) : /var/log/rabbitmq/rabbit@c1.log
           : /var/log/rabbitmq/rabbit@c1_upgrade.log
database dir : /var/lib/rabbitmq/mnesia/rabbit@c1

 創建數據文件和日志文件存放位置的目錄

mkdir /data/rabbitmq/mnesia -p
mkdir /data/rabbitmq/log -p
chown -R rabbitmq.rabbitmq /data/rabbitmq

創建或新增參數配置文件

[root@c1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/data/rabbitmq/log

重啟rabbitmq服務

 

配置文件

 Rabbitmq的配置文件有三個,位於/etc/rabbitmq/

  • enabled_plugins  (設置允許的插件列表)
  • rabbitmq.conf  (設置rabbitmq的運行參數)
  • rabbitmq-env.conf  (rabbitmq的環境參數配置)
該配置文檔的格式為erlang的列表格式如

[rabbitmq_management,rabbitmq_visualiser].
enabled_plugins
tcp_listerners :設置rabbimq的監聽端口,默認為[5672]。
disk_free_limit :磁盤低水位線,若磁盤容量低於指定值則停止接收數據,默認值為
{mem_relative, 1.0},即與內存相關聯1:1,也可定制為多少byte.
vm_memory_high_watermark:設置內存低水位線,若低於該水位線,則開啟流控機制,默認值是0.4,即內存總量的40%。
hipe_compile :將部分rabbimq代碼用HighPerformance Erlang compiler編譯,可提升性能,該參數是實驗性,若出現erlang vm segfaults,應關掉。
force_fine_statistics, 該參數屬於rabbimq_management,若為true則進行精細化的統計,但會影響性能。
rabbitmq.conf
RABBITMQ_NODE_PORT  端口設置,默認為5672
RABBITMQ_NODENAME   節點名稱,默認為rabbit
MNESIA_BASE 后端存儲目錄,默認為/var/lib/rabbitmq/mnesia
LOG_BASE 日志目錄,默認為/var/log/rabbitmq/
rabbitmq-env.conf

 

rabbitmq自帶管理后台,安裝后需要配置開啟

 查看插件

rabbitmq-plugins list

開啟網頁監控插件, 開啟15672端口

rabbitmq-plugins enable rabbitmq_management

網頁管理后台默認只允許本地訪問(guest/guest),因此目前我們訪問http://ip:15672是無法登錄的,現在需要添加遠程登錄用戶

# rabbitmqctl add_user <username> <password>
rabbitmqctl add_user heboan  heboanpwd

設置遠程登錄(配置權限、寫權限、讀權限)

rabbitmqctl set_permissions -p "/" heboan ".*" ".*" ".*"

設置用戶為管理員

rabbitmqctl set_user_tags heboan administrator

登錄http://<your server ip>:15672  用戶 heboan 密碼 heboanpwd, 然后把guest用戶刪除

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM