RabbitMQ安裝指南

爲了語句通順易理解,我不會直譯
爲了翻譯效率,且水平有限,我不會所有翻譯
英文廢話較多,總結版請看:RabbitMQ快速安裝配置指南html

在支持RPM包管理器的Linux安裝(RHEL, CentOS, Fedora, openSUSE)

1. 下載服務端程序

Description Download
RPM for RHEL 7.x, CentOS 7.x, Fedora 19+ (supports systemd, from Bintray) rabbitmq-server-3.6.12-1.el7.noarch.rpm (Signature)
RPM for RHEL Linux 6.x, CentOS 6.x, Fedora prior to 19 (from Bintray) rabbitmq-server-3.6.12-1.el6.noarch.rpm (Signature)
RPM for RHEL Linux 7.x, CentOS 7.x, Fedora 19+ (supports systemd, from GitHub) rabbitmq-server-3.6.12-1.el7.noarch.rpm (Signature)
RPM for RHEL Linux 6.x, CentOS 6.x, Fedora prior to 19 (from GitHub) rabbitmq-server-3.6.12-1.el6.noarch.rpm (Signature)
RPM for openSUSE Linux (from Bintray) rabbitmq-server-3.6.12-1.suse.noarch.rpm (Signature)
RPM for SLES 11.x (from Bintray) rabbitmq-server-3.6.12-1.sles11.noarch.rpm (Signature)

2. 概述

Fedora系統自帶有rabbitmq-server,可是版本很舊。 因此最好就是從PackageCloud或者Bintray下載.rpm文件來安裝. 能夠在 Fedora package 找到對應每一個系統版本的rabbitmq-server。node

PackageCloudBintray這兩個Yum倉庫能夠找到rpm安裝包linux

3. 可用的rpm分發版本

好比RabbitMQ 3.6.3這個版本,它能在如下的支持rpm包管理器Linux分發版本上安裝運行:git

  • CentOS 6.x and 7.x (note: there are two separate RPM packages for 6.x and 7.x)
  • RedHat Enterprise Linux 6.x and 7.x (same as for CentOS, there are two separate packages)
  • Fedora 23 through 25 (use the RHEL 7.x package)

The packages may work on other RPM-based distributions if dependencies (see below) are satisfied (e.g. using the Wheezy backports repository) but their testing and support is done on a best effort basis.github

4. 安裝 Erlang

安裝RabbitMQ前須要安裝Erlang或OTP,具體支持的版本請看這裏。咱們強烈建議使用一個打包好的版本,如下有三個建議的安裝渠道:web

  • RabbitMQ提供的Erlang包It may not be as up to date as Erlang Solutions' packages, but it might be easiest to use if installing Erlang's dependencies is proving difficult.
  • Erlang Solutions提供的Erlang包。 They produce two sets of packages - ones which are split up and are more convenient to use if you can add a yum repository, and a monolithic package which might be easier if you have to download manually.
  • EPEL ("Extra Packages for Enterprise Linux"); part of the Red Hat / Fedora organisation, provides many additional packages, including Erlang. These are the most official packages, and are split into many small packages, but are not always up to date.

如下是可選的安裝Erlang的途徑:數據庫

4.1 從RabbitMQ安裝零依賴的Erlang

  1. 下載並安裝 the zero dependency Erlang RPM package for running RabbitMQ . 這個包只包含RabbitMQ必須的模塊。

4.2 從EPEL倉庫安裝Erlang

1)經過如下的方式能夠啓用EPEL(EPEL FAQ
For EL5:ubuntu

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
...
su -c 'yum install foo'

For EL6:segmentfault

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm'
...
su -c 'yum install foo'

For EL7:安全

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm'
...
su -c 'yum install foo'

For EL7:

yum install -y epel-release
...
su -c 'yum install foo'

2)使用'root'用戶執行一下命令便可安裝Erlang:

yum install erlang

4.3 從Erlang Solutions倉庫安裝Erlang

  1. Follow the instructions under "Installation using repository" at Erlang Solutions. Note that Erlang Solutions tend to provide cutting edge Erlang versions that may or may not be supported by RabbitMQ. Version locking (see below) is recommended when Erlang installed using this option.

4.4 從Erlang Solutions安裝完整的Erlang

  1. Download and install the appropriate esl-erlang RPM from Erlang Solutions.
  2. Download and install the esl-erlang-compat RPM (direct download) produced by Jason McIntosh.

This is needed since Erlang Solutions' monolithic packages provide "esl-erlang"; this package just requires "esl-erlang" and provides "erlang".

4.5 Package Version Locking in Yum

yum version locking plugin is recommended to prevent unwanted Erlang upgrades. This is highly recommended when Erlang is installed via the Erlang Solutions repository.

5. 安裝RabbitMQ Server

5.1 rpm安裝

下載rabbitmq-server的rpm包後用'root'用戶執行一下命令安裝:

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
        yum install rabbitmq-server-3.6.12-1.noarch.rpm

Our public signing key is also available from Bintray:

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

5.2 用PackageCloud RPM倉庫安裝

PackageCloud installs packages via HTTPS and signs them using their GPG key. There are multiple ways to install:

  • Provided installation scripts
  • Using PackageCloud Chef cookbook
  • Using PackageCloud Puppet module
  • Manually

See PackageCloud RabbitMQ repository instructions

6. 運行 RabbitMQ Server

6.1 自定義RabbitMQ環境變量

RabbitMQ服務端應該使用默認設置啓動的,但你也能夠自定義RabbitMQ的環境變量. Also see how to configure components.

6.2 啓動服務端

剛安裝的RabbitMQ server默認是不會之後臺進程的方式啓動的。執行命令: chkconfig rabbitmq-server on 便可設置當系統啓動後之後臺進程方式運行。

開啓或關閉的命令:/sbin/service rabbitmq-server stop/start.

注意: 服務端是以名稱爲rabbitmq的系統用戶身份運行的。若是你修改了Mnesia數據庫的位置或日誌文件的位置,須要確保新目錄是rabbitmq這用戶的(該用戶具備訪問權限)。

RabbitMQ的服務端默認是不會之後臺進程的方式運行的。須要先設置後再啓動。官網提供的chkconfigservice命令都會重定向到systemctl命令,所以我直接列出systemctl的命令:

功能 命令
設置後臺運行 systemctl enable rabbitmq-server.service
檢查設置狀態 systemctl is-enabled rabbitmq-server.service
啓動 systemctl start rabbitmq-server.service
檢查運行狀態 systemctl status rabbitmq-server.service
中止 systemctl stop rabbitmq-server.service

7. 關於端口

SELinux(linux的安全子系統)及其它相似的機制會阻止RabbitMQ綁定端口。若是綁定端口失敗,RabbitMQ會啓動失敗。防火牆能夠阻止來自外部其它機器的訪問。因此請確保如下端口是能夠訪問的:

端口 用途
4369 epmd, a peer discovery service used by RabbitMQ nodes and CLI tools
5672, 5671 used by AMQP 0-9-1 and 1.0 clients without and with TLS
25672 used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details.
15672 HTTP API clients and rabbitmqadmin (only if the management plugin is enabled)
61613, 61614 STOMP clients without and with TLS (only if the STOMP plugin is enabled)
1883, 8883 ( MQTT clients without and with TLS, if the MQTT plugin is enabled
15674 STOMP-over-WebSockets clients (only if the Web STOMP plugin is enabled)
15675 MQTT-over-WebSockets clients (only if the Web MQTT plugin is enabled)

It is possible to configure RabbitMQ to use different ports and specific network interfaces.

8. 默認用戶

RabbitMQ默認用戶賬號及密碼都是`guest`. Unconfigured clients will in general use these credentials.默認只能從本機訪問。所以若是須要從其它機器訪問RabbitMQ,須要作些設置。

請看access control相關的內容,裏面會講解如何建立用戶,刪除guest用戶, 或設置容許guest用戶遠程訪問RabbitMQ.

9. 調整Linux系統的限制

RabbitMQ若是是在生產環境中運行的話,須要調整系統限制和內核限制,以應對大量併發鏈接和高容量的隊列。要調整的主要是容許打開文件的最大數量,即ulimit -n命令顯示的值。該默認值對消息中間件來講過低了(通常是1024)。咱們推薦在生產環境中對系統用戶rabbitmq(默認運行RabbitMQ server的用戶)至少要設置成65536,若是是開發環境則設置成4096。

實際上有兩種限制:操做系統內核容許打開文件的最大數量(fs.file-max)、每一個用戶容許打開文件的最大數量(ulimit -n)。前者必須高於後者。

9.1 用systemd來調整(新版的Linux)

在使用systemd工具的Linux系統中,操做系統的限制是經過配置這個文件來控制的:/etc/systemd/system/rabbitmq-server.service.d/limits.conf, 例如能夠設置成這樣(如無文件請自行新建):

[Service]
LimitNOFILE=300000

9.2 不用systemd來調整(舊版的Linux)

不用systemd工具來調整每一個用戶的限制的最直接方式是編輯rabbitmq-env.conf文件,編輯後,當RabbitMQ server重啓時會執行ulimit命令,從而達到設置每一個用戶容許打開文件的最大數量的目的:

ulimit -S -n 4096

以上經過執行ulimit命令設置的方式,屬於用soft limit方式設置,而soft limit不能高於hard limit(不少linux系統通常設置的hard limit值是4096)。hard limit能夠在配置文件/etc/security/limits.conf中設置。設置hard limit同時還須要啓用pam_limits.so模塊,最後還要從新登陸或重啓一下系統。

設置hard limit:

# 編輯文件
vi /etc/security/limits.conf

# 行末添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

啓用pam_limits.so模塊:

# 編輯文件
vi /etc/pam.d/login

# 行末添加:
session    required    pam_limits.so
# 這是告訴Linux在用戶完成系統登陸後,應該調用pam_limits.so模塊設置
# 系統對該用戶可以使用的各類資源數量的最大限制(包括用戶可打開的最大文件數限制)

最後要從新登陸或重啓系統,以使hard limit設置生效。

注意:運行中的RabbitMQ進程的限制值是沒法修改的。所以設置後須要重啓一下RabbitMQ:

systemctl daemon-reload
systemctl  restart rabbitmq-server.service

For more information about controlling fs.file-max with sysctl, please refer to the excellent Riak guide on open file limit tuning.

9.3 驗證調整是否成功

RabbitMQ management UI能夠經過網頁的形式查看剩餘可用的文件打開時數量。而如下是經過命令行方式查看:

# 查看RabbitMQ server的狀態,記住進程id:pid
rabbitmqctl status

# 查看設置的limits,$RABBITMQ_BEAM_PROCESS_PID用實際的進程id代替
cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits

9.4 用配置管理工具來調整

咱們也能夠用配置管理工具來調整系統限制的值(最大文件打開數量),如:Chef, Puppet, BOSH等。咱們的developer tools也列出了一些相關的模塊和項目,欲瞭解請前往查閱。

10. 管理消息中間件

咱們能夠用service工具來啓動或中止RabbitMQ server。也能夠用RabbitMQ提供的rabbitmqctl工具(管理員權限打開)。正常的話該工具已經加入到系統環境變量Path中的了,能夠直接調用。調用示例以下:

  • 中止:rabbitmqctl stop
  • 查看狀態:rabbitmqctl status

更多信息請看: info on rabbitmqctl.

10.1 日誌

RabbitMQ server的日誌輸入在RABBITMQ_LOG_BASE目錄下的RABBITMQ_NODENAME.log文件。多出來的日誌數據會寫入到RABBITMQ_NODENAME-sasl.log文件。

RabbitMQ server會採用append(新日誌寫入到日誌文件末端)的方式記錄日誌,因此日誌文件中記錄的是完整的歷史記錄。

你能夠用logrotate程序來作日誌滾動和日誌壓縮。默認狀況下logrotate的腳本會每週運行一次。處理/var/log/rabbitmq目錄下的日誌文件。如需配置logrotate,請查閱:/etc/logrotate.d/rabbitmq-server

相關文章
相關標籤/搜索