RabbitMQ是基於Erlang語言開發並運行的,所以安裝RabbitMQ的第一步是安裝Erlang運行環境
1:安裝erlang,我們採用yum方式安裝
第一步:添加源
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
[root@rabbitmq-01]# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
[root@rabbitmq-01]# rpm --import http://packages.erlang-solutions.com/rpm/erlang_solutions.asc
第二步:看一下新安裝的源
[root@rabbitmq-01]# cat /etc/yum.repos.d/erlang_solutions.repo
[erlang-solutions]
name=Centos $releasever - $basearch - Erlang Solutions
baseurl=http://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=0
gpgkey=http://packages.erlang-solutions.com/debian/erlang_solutions.asc
enabled=1
第三步:安裝erlang
# 默認安裝最新的18.3-1版本
[root@rabbitmq-01]# yum install erlang erlang-wx
# 同事需要18.0的,按照源的地址在網頁上下載
# http://packages.erlang-solutions.com/rpm/centos/7/x86_64/
# erlang-18.0-1.el7.centos.x86_64.rpm 和 erlang-wx-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/rpm/centos/7/x86_64/erlang-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# wget http://packages.erlang-solutions.com/rpm/centos/7/x86_64/erlang-wx-18.0-1.el7.centos.x86_64.rpm
[root@rabbitmq-01]# yum install -y erlang-18.0-1.el7.centos.x86_64.rpm erlang-wx-18.0-1.el7.centos.x86_64.rpm
- 1
第四步:安裝rabbitmq
你可以在RabbitMQ官方(http://www.rabbitmq.com/)下載各種RabbitMQ的安裝版本,我這裏用rpm文件進行安裝即可。安裝完成後,可以使用15672端口訪問RabbitMQ的管理界面(默認的用戶名和密碼都是guest)。
[root@rabbitmq-01]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
第五步:安裝
[root@rabbitmq-01]# wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.5.4/rabbitmq-server-3.5.4-1.noarch.rpm
[root@rabbitmq-01]# yum install -y rabbitmq-server-3.5.4-1.noarch.rpm
第六步:啓動及開啓遠程web訪問功能
[root@rabbitmq-01 sbin]# service rabbitmq-server start //需要在/usr/sbin中執行
[root@rabbitmq-01 sbin]# rabbitmq-plugins enable rabbitmq_management //開啓web功能
The following plugins have been enabled
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@localhost... started 6 plugins.
# 重啓rabbitmq服務生效
[root@rabbitmq-01 sbin]# systemctl restart rabbitmq-server
這是web功能頁面......................................................................................................................................................
第七步:集羣搭建
以上是單機版的:集羣就是把幾個單機的集合在一起。
個RABBITMQ集 羣中可以共享user,virtualhosts,queues(開啓Highly Available Queues),exchanges等。但message只會在創建的節點上傳輸。當message進入A節點的queue中後,consumer從B節點拉取時,RabbitMQ會臨時在A、B間進行消息傳輸,把A中的消息實體取出並經過B發送給consumer。所以consumer應儘量連接每一個節點,從中取消息。
RABBITMQ的集羣節點包括內存節點、磁盤節點。內存節點的元數據僅放在內存中,性能比磁盤節點會有所提升。不過,如果在投遞message時,打開了message的持久化,那麼內存節點的性能只能體現在資源管理上,比如增加或刪除隊列(queue),虛擬主機(vrtual hosts),交換機(exchange)等,發送和接受message速度同磁盤節點一樣。一個集羣至少要有一個磁盤節點。
環境:有三臺主機,主機名和IP如下
主機名 IP
kafka-01 10.0.2.7
kafka-02 10.0.2.8
kafka-03 10.0.2.9
按以上6步把其他兩臺機器的環境搭起來
第八步erlang.cookie
殺掉kafka-02 和kafka-03 的rabbitmq進程:
#ps –ef|grep rab|awk ‘{print $2}’|xargs kill -9。–用service rabbitmq-servier stop停會有遺留進程。
登陸kafka-02(kafka-021上的rabbitmq服務不能關),執行
#cd /var/lib/rabbitmq –進入erlang.cookie所在目錄,只有ls –al能看見此文件
#chmod 777 .erlang* –該文件默認爲400權限,爲方便傳輸,先修改權限,非必須操作
#scp .erlang.cookie rabbitmq@kafka-02 :/var/lib/rabbitmq –將此文件傳給另外兩條主機
#scp .erlang.cookie rabbitmq@kafka-03:/var/lib/rabbitmq
#chmod 400 .er* –恢復文件權限
分別在kafka-02 和kafka-023上執行
#service rabbitmq-server start
第八步:組建集羣
查詢kafka-021節點名稱
#rabbitmqctl cluster_status
Cluster status of node rabbit@kafka-021…
[{nodes,[{disc,[rabbit@kafka-021]}]},{running_nodes,[rabbit@ kafka-021]}]
…done.
kafka-02 加入kafka-021節點.
以下在kafka-02 和kafka-03機器上執行
# rabbitmqctl stop_app –關掉kafka-02 服務
# rabbitmqctl join_cluster rabbit@kafka-01 — kafka-02加入kafka-01, kafka-02 必須能通過kafka-01的主機名ping通kafka-01。
# rabbitmqctl start_app –啓動kafka-02 服務
同理組建kafka-03
更改節點屬性
#rabbitmqctl stop_app –停止rabbitmq服務
#rabbitmqctl change_cluster_node_type disc/ram –更改節點爲磁盤或內存節點
#rabbitmqctl start_app –開啓rabbitmq服務
安裝到此結束