centos搭建rabbitmq集羣

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)。

配置rabbitmq的yum源
[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 enabledmochiwebwebmachine rabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_managementApplying 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-02kafka-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服務

我是一張圖

安裝到此結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章