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 復制的下載鏈接地址

wget http://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 復制的下載鏈接地址

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

2.2.2 安裝RabbitMQ

rpm --import https://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 -i rabbitmq-server-3.7.4-1.el6.noarch

刪除安裝包:rpm -e rabbitmq-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.22 linux02

10.170.1.23 linux03

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 -ivh https://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_front 10.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_cluster 10.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_admin 10.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常用命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM