1. 程式人生 > 其它 >RabbitMQ叢集搭建和使用

RabbitMQ叢集搭建和使用

原文地址:https://www.cnblogs.com/java-spring/p/8855862.html

RabbitMQ叢集搭建和使用

一.環境準備

1選擇RabbitMQ的版本

http://www.rabbitmq.com/changelog.html

:不同版本的Linux選擇的RabbitMQ版本也不同,參照

http://www.rabbitmq.com/install-rpm.html

檢視CentOS版本:more /etc/redhat-release

2、RabbitMQ依賴於Erlang,兩者版本需匹配,版本對照表如下:

http://www.rabbitmq.com/which-erlang.html

2.1選擇Erlang的版本

http://www.erlang.org/downloads

.安裝單機RabbtiMQ

2.1安裝Erlang

2.1.1安裝Erlang依賴

yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf

2.1.2下載解壓縮

wget複製的下載連結地址

wgethttp://erlang.org/download/otp_src_20.3.tar.gz

tar -xvf otp_src_20.3.tar.gz

2.1.3安裝Erlang

轉到解壓目錄下cd otp_src_20.3挨個執行一下命令

./configure

make install

2.2安裝RabbitMQ

2.2.1下載RabbitMQ

wget複製的下載連結地址

wgethttps://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server-3.7.4-1.el6.noarch.rpm

2.2.2安裝RabbitMQ

rpm --importhttps://www.rabbitmq.com/rabbitmq-release-signing-key.asc

rpm -i --nodeps rabbitmq-server-3.7.4-1.el6.noarch.rpm

在/opt/rabbitmq資料夾下

檢視安裝包:rpm -qa | grep -irabbitmq-server-3.7.4-1.el6.noarch

刪除安裝包:rpm -erabbitmq-server-3.7.4-1.el6.noarch

2.2.3新建檔案,指定節點名

檔案路徑: /etc/rabbitmq/rabbitmq-env.conf

檔案內容: NODENAME=rabbit@節點名

節點名設為機器名稱即可

2.2.4啟動RabbitMQ

進入/usr/lib/rabbitmq/bin/

執行rabbitmq-server

按Ctrl+C,等一下就退出了

2.2.5 Web管理後臺

載入外掛:rabbitmq-plugins enable rabbitmq_management

再次執行rabbitmq-server

頁面訪問:http://IP:15672/

.RabbtiMQ使用者管理

3.1參考連結

https://www.cnblogs.com/java-zhao/p/5670476.html

3.2新增一個使用者

rabbitmqctl add_user 使用者名稱使用者密碼

3.3給使用者賦角色

rabbitmqctl set_user_tags 使用者名稱角色名

3.4給使用者賦許可權

rabbitmqctl set_permissions -p "/" 使用者名稱".*" ".*" ".*"

3.5刪除使用者

rabbitmqctl delete_user 使用者名稱

3.6檢視使用者

rabbitmqctl list_users

注: 預設使用者為guest guest,可新建使用者

給檔案賦許可權:

chmod 777 /資料夾名字/檔名字或者*

.RabbitMQ叢集搭建

4.1環境準備

多臺(3臺)安裝RabbitMQ Server的伺服器,伺服器IP分別為ip1,ip2,ip3,以選擇ip1伺服器為主節點為例

4.2保持.erlang.cookie一致

1)複製ip1伺服器中的.erlang.cookie

(.erlang.cookie 存在於/var/lib/rabbitmq/.erlang.cookie 和~/.erlang.cookie中)

2)保持ip1,ip2,ip3伺服器中的/var/lib/rabbitmq/.erlang.cookie和~/.erlang.cookie一致

4.3後臺啟動各個節點

rabbitmq-server -detached

這樣就成功了,網頁訪問一下能成功就行

切記:啟動後不要關閉,否則會出現錯誤

4.4檢視各節點狀態

rabbitmqctl status

4.5配置各節點的hosts檔案

檔案路徑:vi /etc/hosts

檔案內容:(注:名稱為2.2.3中的節點名)

10.170.1.22linux02

10.170.1.23linux03

4.6建立叢集

*以ip1伺服器為主節點為例,在ip2,ip3上執行相同的如下操作

ip1伺服器要啟動著(在/usr/lib/rabbitmq/bin下執行rabbitmq-server),然後在ip2和ip3上做以下操作

rabbitmqctl stop_app

rabbitmqctl reset//可以不做

rabbitmqctl join_cluster rabbit@名稱1

rabbitmqctl start_app

4.7檢視叢集的狀態資訊

rabbitmqctl cluster_status

4.8映象佇列

1).登入web後臺管理頁面

2).Admin -> Policies -> Add/update a policy

3).填寫內容(例如:

Name:Mirror_RabbitMQ

Pattern:^//"^"表示所有,最好手動輸入,不要貼上

Definition:HAmode=exactly

HAprarms=2

HAsyncmode=automatic)

4).Add policy

新增一個,其他的也都會有該策略

以下不用做

4.9退出叢集

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

4.10移除節點

1)關閉要移除的節點A

rabbitmqctl stop_app

2)在其他節點B移除節點A

rabbitmqctl forget_cluster_node rabbit@rabbitName

.負載均衡-HAProxy

5.1安裝epel

rpm -ivhhttps://mirrors.tongji.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm

5.2安裝HAProxy

yum -y install haproxy

5.1/5.2每臺伺服器都安裝

5.3修改配置檔案

1)配置檔案路徑:vi /etc/haproxy/haproxy.cfg

注:此配置需要在每臺伺服器上做一下,裡面標紅的IP必須和該配置檔案所在的伺服器IP一致

2)在配置檔案中追加如下內容:

#---------------------------------------------------------------------

# RabbitMQ叢集負載均衡

#---------------------------------------------------------------------

# 1.HAProxy統計頁面配置

#通過訪問http://10.170.1.18:1080/haproxy/stats賬號密碼admin:admin檢視統計資訊

listen haproxy_front10.170.1.18:1080

mode http

stats refresh 30s

stats uri /haproxy/stats

stats realm Haproxy Manager

stats auth admin:admin

# 2.rabbitmq叢集負載均衡配置

#通過10.170.1.18:5678接入rabbitmq

listen rabbitmq_cluster10.170.1.18:5678

option tcplog

mode tcp

timeout client 3h

timeout server 3h

balance roundrobin

server node1 10.170.1.18:5672 check inter 5s rise 2 fall 3

server node2 10.170.1.16:5672 check inter 5s rise 2 fall 3

# 3.rabbitmq叢集web管理頁面均衡配置

#訪問http://10.170.1.18:15678/接入rabbitmq web管理頁面

listen rabbitmq_admin10.170.1.18:15678

balance roundrobin

server node1 10.170.1.18:15672

server node2 10.170.1.16:15672

5.4重啟HAproxy

service haproxy restart

然後網頁訪問http://10.170.1.23:15678

六.主備-Keepalived

6.1安裝Keepalived

yum install keepalived

6.2建立監控指令碼

指令碼路徑:vi /etc/keepalived/check_haproxy.sh

指令碼內容:

#!/bin/bash

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

fi

sleep 2

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

service keepalived stop

fi

6.1/6.2主備機都需要做

6.3修改主機Keepalived配置檔案

檔案路徑:vi /etc/keepalived/keepalived.conf(這個檔案先刪除,然後在新建即可)

檔案內容:

#Keepalived配置檔案

global_defs {

router_id NodeA #路由ID,主備的ID不能相同

}

#自定義監控指令碼

vrrp_script chk_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 5

weight 2

}

vrrp_instance VI_1 {

state MASTER#Keepalived的角色。Master表示主伺服器,從伺服器設定為BACKUP

interface eth0 #指定監測網絡卡

virtual_router_id 1

priority 100 #優先順序,BACKUP機器上的優先順序要小於這個值

advert_int 1 #設定主備之間的檢查時間,單位為s

authentication { #定義驗證型別和密碼

auth_type PASS

auth_pass root123

}

track_script {

chk_haproxy

}

virtual_ipaddress { #虛擬地址(可以隨便設,主備保持一致即可),可以設定多個

192.1.170.180

}

}

6.4修配備機Keepalived配置檔案

檔案路徑:vi /etc/keepalived/keepalived.conf(這個檔案先刪除,然後在新建即可)

#Keepalived配置檔案

global_defs {

router_id NodeB #路由ID,主備的ID不能相同

}

#自定義監控指令碼

vrrp_script chk_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 5

weight 2

}

vrrp_instance VI_1 {

state BACKUP#Keepalived的角色。Master表示主伺服器,從伺服器設定為BACKUP

interface eth0 #指定監測網絡卡

virtual_router_id 1

priority 50 #優先順序,BACKUP機器上的優先順序要小於這個值

advert_int 1 #設定主備之間的檢查時間,單位為s

authentication { #定義驗證型別和密碼

auth_type PASS

auth_pass root123

}

track_script {

chk_haproxy

}

virtual_ipaddress { #虛擬地址,可以設定多個

192.1.170.180

}

}

6.5啟動Keepalived

service keepalived start

6.6檢視Keepalived執行情況(可不看)

1)檢視Keepalived日誌輸出

tail -f /var/log/messages -n 200

2)檢視新增的虛擬IP

ip add show

3)MASTER模擬異常關閉

service keepalived stop

對應的MASTER上的虛擬IP也會消失

MASTER關閉後,BACKUP成為新的MASTER

6.7程式碼訪問RabbitMQ

1)IP 為Keepalived中配置的虛擬IP

2)PORT 為RabbitMQ的PORT 預設為5672

3)賬號密碼同RabbitMQ

七.執行在記憶體或者硬碟中

注意:叢集搭建完畢後,測試中是隻在備機上修改成功了,主機上修改不成功

在/usr/lib/rabbitmq/bin下執行,rabbitmq預設安裝在這裡

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type ram

rabbitmqctl start_app

注:disc-硬碟,ram-記憶體

八、springboot連線rabbitMQ叢集配置

spring:

# 訊息佇列配置

rabbitmq:

host:192.1.170.180#虛擬地址

port:5672

username:****

password:****

listener:

simple:

acknowledge-mode:AUTO

參考連結

[ 1] http://www.rabbitmq.com/tutorials/tutorial-one-java.html

RabbitMQ佇列模式介紹

[2] https://www.cnblogs.com/xmzJava/p/8036591.html

Springboot Rabbitmq整合

[3] https://www.cnblogs.com/lylife/p/5584019.html

Rabbitmq+haproxy+keepalived實現高可用叢集搭建

[4] http://blog.csdn.net/woogeyu/article/details/51119101

RabbitMQ分散式叢集架構

[5] https://www.cnblogs.com/lion.net/p/5725474.html

RabbitMQ3.6.3叢集搭建+HAProxy1.6做負載均衡

[6 ] http://blog.csdn.net/u013256816/article/details/77171017

RabbitMQ負載均衡(3)——Keepalived+HAProxy實現高可用的負載均衡

[7] http://blog.csdn.net/u014308482/article/details/52947492

RabbitMQ常用命令