rabbitmq安裝步驟

簡介

rabbitmq依賴于erlang虛擬機,因此需要先安裝erlang虛擬機。需要注意的是erlang虛擬機與rabbitmq是有對應關系的,所以安裝的時候注意版本匹配。具體可以查看如下的鏈接:
http://www.rabbitmq.com/which-erlang.html
我所使用的版本是rabbitmq3.7.8以及otp_src_21.0
可以直接在 http://erlang.org/download/ 下載

erlang安裝

在安裝erlang之前,需要先安裝一下以下的幾個包:

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
./configure --prefix=/data/program/erlang-21.0 --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make -j4 & make install

安裝完erlang之后,可以配置以下的環境變量。如果只是提供rabbitmq的運行環境,也可以不進行配置

vim /etc/profile
export ERL_HOME=/data/program/erlang-21.0/
export PATH=$PATH:$ERL_HOME/bin

rabbitmq安裝

下載Binary包,解壓到指定的目錄下,并rabbitmq用戶。修改sbin/rabbitmq-defaults文件,指定安裝目錄。在文件的最開始增加

RABBITMQ_HOME="/data/program/rabbitmq-server-3.7.8"
ERL_DIR="/data/program/erlang-21.0/bin/"

這兩個目錄分別指定了rabbitmq的安裝目錄以及erlang的程序可執行目錄。
  除了這兩個參數,也可以指定其他的必要參數.此外,也可以在如下的配置文件中進行配置.從3.7.0開始,配置文件改為key-value的格式,以下鏈接是一個樣例配置
https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example

vim etc/rabbitmq/rabbitmq.conf
#文件內容如下
log.file.level = warning
#也可以對IP進行監聽
listeners.tcp.local    = 127.0.0.1:5672

etc/rabbitmq/rabbitmq-env.conf是一個shell文件,用于覆蓋變量

啟動:

sudo adduser -s /sbin/nologin rabbitmq
sudo chown -R rabbitmq /data/program/rabbitmq-server-3.7.8/
sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmq-server

增加-detached參數,可以以deamon的方式運行
狀態查看:

sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl status

停止:

sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl stop

ps
如果出現ERROR: epmd error for host "yourhostname": timeout
原因是:主機名和ip不匹配,需要更改hostname或者/etc/hosts文件

使用客戶端時,記得使用相同的用戶,例如rabbitmq,否則會導致erlang cookie不一致,客戶端無法連接

集群搭建

假定有兩個機器,分別為host1和host2,ip分別為ip1和ip2。首先需要分別在兩臺機器上面配置host,使得這兩個機器可以通過hostname直接互相通信。分別在兩個機器上面添加如下的host

ip1 host1
ip2 host2

將host2加入host1組成一個集群,安裝上面的命令啟動rabbitmq的話可以在rabbitmq賬號的home目錄下獲取到一個.erlang.cookie文件,該文件是隱藏的。將host1的該文件拷貝到host2的對應目錄下,只有rabbitmq啟動之后,該文件才會生成。該文件是用來做集群間的通訊認證的。如果有多個結點,確保多個結點的該文件內容一致。在各個結點上面啟動rabbitmq之后,需要在從節點上面執行如下的命令,在本文中是在host2上面執行:

sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl stop_app
sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl reset
sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl join_cluster rabbit@host1 --ram
sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl start_app

其中--ram參數用于指定隊列保存在內存中,這種方式性能會好一些,默認是保存在disc中,將會進行持久化。配置之后可以通過如下命令

sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl cluster_status

通過這種方式設置之后的集群,主要是起到了分散壓力的作用。客戶端連上之后,rabbitmq將自動將不同的隊列分散到不同的節點。對于一些較為敏感的數據,需要確保數據的安全性,可以通過rabbitmq提供的鏡像模式確保高可用。為了達到該目的,在繼續搭建完成之后,可以通過如下的命令搭建鏡像機器

sudo -u rabbitmq /data/program/rabbitmq-server-3.7.8/sbin/rabbitmqctl set_policy ha-all-policy "^" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'

該命令可以根據不同的參數,指定具體的隊列是否采用鏡像,或者將隊列同步到多少個子節點。
此外,對于該命令的一些詳細的配置可以參考http://www.rabbitmq.com/ha.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • rabbitmq有3種模式,集群模式2種? 單機模式:即單機情況不做集群,就單獨運行一個rabbitmq而已。...
    嗷大彬彬閱讀 4,063評論 1 9
  • RabbitMQ 原理介紹及安裝部署 標簽:RabbitMQ 安裝 簡介 RabbitMQ 是一個用 Erlang...
    神仙CGod閱讀 8,599評論 0 60
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,203評論 2 33
  • 整體架構 部署步驟 基于 Docker 基本概念內存節點只保存狀態到內存,例外情況是:持久的 queue 的內容將...
    mvictor閱讀 12,772評論 5 30