1. 程式人生 > >rabbitmq 集群搭建 單機多實例版

rabbitmq 集群搭建 單機多實例版

rabbitmq 集群 單機多實例版本

rabbitmq 是一個開源的AMQP實現,用ERLANG編寫,由於erlang天生支持分布式高並發的語言,這也是rabbitmq被許多開發者所喜愛。

AMQP概念,這裏不做介紹,可以google一下,概念很重要,概念很重要,概念很重要,重要的事說三遍。

下面開始集群搭建,rabbitmq集群分為單機,偽集群(單機多實例),集群(多機多實例),很多開發者想自己搭建一個集群,來測試一些mq特性。

本文主要介紹偽集群方式,也就是在一臺虛擬機上,搭建rabbitmq多實例,然後建立集群連接。而正規集群方式,其實都差不多。

單機多實例集群搭建開始

三個節點目錄結構
備註:節點目錄結構可自己創建,按照自己的習慣而已。

節點1:
path1 = /usr/local/software/rabbitmq/rabbitmq_server/

節點2:
path2 = /usr/local/software/rabbitmq/rabbitmq_server1/

節點3:
path3 = /usr/local/software/rabbitmq/rabbitmq_server2/

配置文件目錄:
分別在三個節點下創建配置文件:

例如,節點2創建配置文件:
在這個路徑下: /usr/local/software/rabbitmq/rabbitmq_server/etc/rabbitmq/
**創建配置文件:rabbitmq.conf、rabbitmq-env.conf**
創建後的文件應該顯示如下
    [root@bogon rabbitmq]# pwd
    /usr/local/software/rabbitmq/rabbitmq_server1/etc/rabbitmq
    [root@bogon rabbitmq]# ll
    總用量 12
    -rw-r--r--. 1 root root 23 6月  11 21:55 enabled_plugins
    -rw-r--r--. 1 root root 58 6月  11 21:37 rabbitmq.conf
    -rw-r--r--. 1 root root 45 6月  11 21:37 rabbitmq-env.conf

默認paht/etc/rabbitmq這個目錄下是沒有這這兩個配置文件的,需手動創建
** touch rabbitmq-env.conf**
rabbitmq-env.conf內容如下:
         NODE_PORT=5673
         NODENAME=rabbitmq-node1

** touch rabbitmq.config**
rabbitmq.config內容如下:
[ {rabbitmq_management, [{listener, [{port, 15673}]}]} ].

其它的節點目錄下,可以都創建一下,或者cp過去也可以,但是要註意更改兩個地方,一是NODE_PORT=5673更改端口,還有一個你也猜到了port, 15673需要更改。

檢查一下,三個節點下是否都有這兩個配置文件

**修改hosts文件:**
由於本機搭建是偽集群,所以不用配置 .erlang.cookie,只需配置本機的hosts文件
修改前需要知道本機的Hostname值:
[root@bogon rabbitmq]# hostname
bogon

修改host文件:
vim /etc/hosts
加入配置,ip則是本機ip,bogon是hostname,rabbtmq-node1則是節點名稱:
10.1.1.1 rabbitmq-node1@bogon
10.1.1.1 rabbitmq-node2@bogon
10.1.1.1 rabbitmq-node3@bogon

**關鍵節點**
啟動節點1
./rabbitmq_server1/sbin/rabbitmq-server -detached  (-detached 是後臺啟動方式)

啟動節點2:
./rabbitmq_server2/sbin/rabbitmq-server -detached  
停止節點服務,但不是節點down了。
cd root路徑下:
./rabbitmq_server2/sbin/rabbitmqctl stop_app
./rabbitmq_server2/sbin/rabbitmqctl reset (重置節點,擔心此節點加入過其他的集群)
./rabbitmq_server2/sbin/rabbitmqctl  join_cluster --ram rabbitmq-node1@bogon 
./rabbitmq_server2/sbin/rabbitmqctl start_app (重啟節點恢復應用)

此時查看節點狀態:
[root@bogon rabbitmq]# ./rabbitmq_server/sbin/rabbitmqctl cluster_status
Cluster status of node ‘rabbitmq-node1@bogon‘ ...
[{nodes,[{disc,[‘rabbitmq-node1@bogon‘]},{ram,[‘rabbitmq-node2@bogon‘]}]},
 {running_nodes,[‘rabbitmq-node2@bogon‘,‘rabbitmq-node1@bogon‘]},
 {cluster_name,<<"rabbitmq-node1@bogon">>},
 {partitions,[]},
 {alarms,[{‘rabbitmq-node2@bogon‘,[]},{‘rabbitmq-node1@bogon‘,[]}]}]

 會發現節點兩個節點已經是集群了,‘rabbitmq-node1‘節點是磁盤節點,‘rabbitmq-node2‘是內存節點

啟動節點3:
重復節點2的啟動步驟,成功加入到集群裏。

這樣集群就基本搭建完了。

問題:
1、第一次登陸rabbitmq_management圖形化界面,登陸不進去?
如果你安裝了圖形化界面工具,rabbitmq_management,可以訪問對應的節點。
第一次訪問的時候,默認用戶名和密碼都是guest,guest,默認事localhost,那麽我們用

授權,新建用戶設置。
cd  /usr/local/software/rabbitmq/rabbitmq_server1/sbin這個目錄
sh rabbitmqctl add_user admin admin
sh rabbitmqctl list_users
sh rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 
sh rabbitmqctl list_permissions -p /
sh rabbitmqctl set_user_tags  admin administrator
sh rabbitmqctl list_users

這樣就可以進入到頁面裏,用戶名admin,密碼admin
,可以試試其它的節點下,創建用戶。

查看rabbitmq_management頁面;

技術分享圖片

rabbitmq 集群搭建 單機多實例版