centos7 rabbitMQ叢集搭建
阿新 • • 發佈:2018-12-21
資料參考網址
http://blog.csdn.net/woogeyu/article/details/51119101
http://www.cnblogs.com/lion.net/p/5725474.html
https://segmentfault.com/a/1190000010693696#articleHeader4
https://segmentfault.com/a/1190000010702020
rabbitMQ叢集搭建注意問題
不同於單機多節點的情況,在多機環境,如果要在cluster叢集內部署多個節點,需要注意兩個方面: 1 保證需要部署的這幾個節點在同一個區域網內 2 需要有相同的Erlang Cookie,否則不能進行通訊,為保證cookie的完全一致,採用從一個節點copy的方式複製到其他節點。
時間同步:
yum install ntpdate
ntpdate time.nist.gov
環境準備
192.168.138.131 centos-01
192.168.138.132 centos-02
192.168.138.133 centos-03
各節點都要安裝RabbitMQ(叢集前提) RabbitMQ 安裝需要依賴 Erlang 環境
yum install wget $ cd /opt $ wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm $ yum install erlang-19.0.4-1.el7.centos.x86_64.rpm
安裝 RabbitMQ
$ cd /opt $ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm $ yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm cd /sbin/ rabbitmq-plugins enable rabbitmq_management (管理介面開啟) rabbitmq-server -detached (後臺啟動)或者 service rabbitmq-server start service rabbitmq-server status rabbitmqctl stop
放開5672與15672埠
firewall-cmd --permanent --zone=public --add-port=5672/tcp
firewall-cmd --permanent --zone=public --add-port=15672/tcp
systemctl restart firewalld.service
訪問http://ip:15672/ 賬戶:guest 密碼: guest登陸不進去解決
cd /var/log/rabbitmq/
less [email protected]
這裡顯示的是沒有找到配置檔案,我們可以自己建立這個檔案
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
建立rabbitmq.config
cd /etc/rabbitmq/
touch rabbitmq.config
vi rabbitmq.config
編輯內容如下:
[{rabbit, [{loopback_users, []}]}].
注意:這裡的意思是開放使用,rabbitmq預設建立的使用者guest,密碼也是guest,這個使用者預設只能是本機訪問,localhost或者127.0.0.1,從外部訪問需要新增上面的配置。
開機自啟動
chkconfig rabbitmq-server on
設定不同節點間同一認證的Erlang Cookie 使用以下命令將centos-01中的/var/lib/rabbitmq/.erlang.cookie 複製到其他節點。在centos-01節點執行以下命令:
cd /var/lib/rabbitmq/
ll -a .erlang.cookie (該檔案是隱藏檔案)
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie
會提示輸入yes 和 密碼
由於檔案是400的許可權,所以在centos-02以及centos-03節點執行以下命令:
chmod 600 /var/lib/rabbitmq/.erlang.cookie
介面
在centos-01節點增加使用者,並且為使用者賦予許可權
rabbitmqctl add_user pyps pyps
rabbitmqctl set_user_tags pyps administrator
rabbitmqctl set_permissions -p / pyps '.*' '.*' '.*'
通過http://192.168.138.131:15672 使用者名稱為:pyps 密碼為:pyps聯入第一臺配置成功的RabbitMQ伺服器。其他節點暫不配置
組成叢集
這個centos-01節點也可以不執行,直接在節點伺服器執行下邊的指令碼,不過得保證這個rabbitmq服務是正常啟動的
centos-01 $ rabbitmqctl stop_app
按照順序執行 先centos-02,centos-03
centos-02 $ rabbitmqctl stop_app # 停止rabbitmq服務
centos-02 $ rabbitmqctl join_cluster [email protected] # centos-02和centos-01構成叢集, centos-02必須能通過centos-01的主機名ping通
centos-02 $ rabbitmqctl start_app # 開啟rabbitmq服務
centos-03 $ rabbitmqctl stop_app # 停止rabbitmq服務
centos-03 $ rabbitmqctl join_cluster [email protected] # centos-03和centos-01構成叢集, centos-02必須能通過centos-01的主機名ping通
centos-03 $ rabbitmqctl start_app
#要複製佇列內容到叢集裡的每個節點,需要建立映象佇列
RabbitMQ映象功能:(在普通叢集的中任意節點啟用策略,策略會自動同步到叢集節點)
rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
例如下面的命令,^message 這個規則要根據自己修改,這個是指同步"message"開頭的佇列名稱,我們配置時使用的應用於所有佇列,所以表示式為"^"。
rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'
分別檢視下每個節點
rabbitmqctl cluster_status
每個節點
firewall-cmd --permanent --zone=public --add-port=25672/tcp
systemctl restart firewalld.service
或者關閉防火牆
systemctl stop firewalld.service
安裝HAProxy
選擇開源的HAProxy為RabbitMQ叢集做負載均衡器,在CentOS 7.0中安裝HAProxy。
1安裝epel(清華大學開源軟體映象站)
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
2 安裝HAProxy
yum list |grep haproxy
yum -y install haproxy.x86_64
HA-Proxy version 1.5.18
3 配置HAProxy(這臺機器centos-03 192.168.138.133)
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak (備份)
vi /etc/haproxy/haproxy.cfg
####################################################################
listen private_monitoring
bind 192.168.138.133:8989
mode http
option httplog
log global
stats enable
stats refresh 30s
stats show-node
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth admin:admin
####################################################################
listen rabbitmq_local_cluster
bind 192.168.138.133:5670
option tcplog
mode tcp
timeout client 3h
timeout server 3h
option clitcpka
balance roundrobin
server rabbit131 192.168.138.131:5672 check inter 5s rise 2 fall 3
server rabbit132 192.168.138.132:5672 check inter 5s rise 2 fall 3
server rabbit133 192.168.138.133:5672 check inter 5s rise 2 fall 3
啟動訪問http://192.168.138.133:8989/haproxy?stats無顯示頁面 解決辦法
(當前版本HA-Proxy version 1.5.18) 低於1.7.5版本需要執行
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq! #儲存退出
reboot
放開5670與8989埠
firewall-cmd --permanent --zone=public --add-port=5670/tcp
firewall-cmd --permanent --zone=public --add-port=8989/tcp
firewall-cmd --permanent --zone=public --list-ports
systemctl restart firewalld.service
service haproxy status #檢視狀態
service haproxy start #啟動
service haproxy stop #關閉
service haproxy restart #重啟
chkconfig haproxy on #設定開機啟動
各節點 啟用stomp plugin命令程式碼 websocket使用了rabbitmq stomp協議 需要啟動他
rabbitmq-plugins enable rabbitmq_web_stomp
rabbitmq-plugins enable rabbitmq_web_stomp_examples