CentOS7.X環境下基於docker安裝部署RabbitMQ集羣

在之前的文章中我已經介紹過使用源碼來安裝RabbitMQ(可參考文章https://blog.51cto.com/8355320/2445237 ),安裝過程也比較繁瑣,今天因環境需求,需搭建RabbitMQ集羣,由於業務也都採取docker容器方式部署,因此也研究將RabbitMQ採用docker來部署,本文特將部署步驟記錄下來:
備註:docker的安裝部署,這裏就不在添加部署過程,可參考文章https://blog.51cto.com/8355320/2438741
搭建環境:
操作系統:CentOS7.6
內存大小:8GB
硬盤:200G
1、IP地址規劃
主機名 IP地址
RabbitMQ01 192.168.8.131
RabbitMQ02 192.168.8.132
RabbitMQ03 192.168.8.133
RabbitMQ04 192.168.8.134
2、RabbitMQ集羣安裝
(1)四個節點同時運行,下載RabbitMQ鏡像
[root@RabbitMQ01~]# docker pull rabbitmq:3-management
(2)四個節點分別運行,啓動RabbitMQ容器

[root@RabbitMQ01~]# docker run -d --restart=always --hostname rabbit01 --name rabbit-01 -p 25672:25672 -p 15672:15672 -p 5672:5672 -p 5671:5671 -p 4369:4369 --add-host rabbit02:192.168.8.132 --add-host rabbit03:192.168.8.133 --add-host rabbit04:192.168.8.134 -e RABBITMQ_ERLANG_COOKIE='rbmqcookie' rabbitmq:3-management
[root@RabbitMQ02~]# docker run -d --restart=always --hostname rabbit02 --name rabbit-02 -p 25672:25672 -p 15672:15672 -p 5672:5672 -p 5671:5671 -p 4369:4369 --add-host rabbit01:192.168.8.131 --add-host rabbit03:192.168.8.133 --add-host rabbit04:192.168.8.134 -e RABBITMQ_ERLANG_COOKIE='rbmqcookie' rabbitmq:3-management
[root@RabbitMQ03~]# docker run -d --restart=always --hostname rabbit03 --name rabbit-03 -p 25672:25672 -p 15672:15672 -p 5672:5672 -p 5671:5671 -p 4369:4369 --add-host rabbit01:192.168.8.131 --add-host rabbit02:192.168.8.132 --add-host rabbit04:192.168.8.134 -e RABBITMQ_ERLANG_COOKIE='rbmqcookie' rabbitmq:3-management
[root@RabbitMQ04~]#  docker run -d --restart=always --hostname rabbit04 --name rabbit-04 -p 25672:25672 -p 15672:15672 -p 5672:5672 -p 5671:5671 -p 4369:4369 --add-host rabbit01:192.168.8.131 --add-host rabbit02:192.168.8.132 --add-host rabbit03:192.168.8.133 -e RABBITMQ_ERLANG_COOKIE='rbmqcookie' rabbitmq:3-management

(3)、將節點添加至集羣服務中,我們將節點03設置爲集羣的master節點,其他爲子節點,注意配置兩個節點爲ram節點,另兩個爲disc節點,執行時注意命令的不同
節點01上執行:

[root@RabbitMQ01~]#  docker exec -it rabbit-01 bash
[rabbit@rabbit01]# rabbitmqctl stop_app
[rabbit@rabbit01]# rabbitmqctl reset
[rabbit@rabbit01]# rabbitmqctl join_cluster --ram rabbit@rabbit03
[rabbit@rabbit01]# rabbitmqctl start_app
[rabbit@rabbit01]# exit

節點02上執行:

[root@RabbitMQ02~]#  docker exec -it rabbit-02 bash
[rabbit@rabbit02]# rabbitmqctl stop_app
[rabbit@rabbit02]# rabbitmqctl reset
[rabbit@rabbit02]# rabbitmqctl join_cluster --ram rabbit@rabbit03
[rabbit@rabbit02]# rabbitmqctl start_app
[rabbit@rabbit02]# exit

節點04上執行:

[root@RabbitMQ04~]#  docker exec -it rabbit-01 bash
[rabbit@rabbit04]# rabbitmqctl stop_app
[rabbit@rabbit04]# rabbitmqctl reset
[rabbit@rabbit04]# rabbitmqctl join_cluster rabbit@rabbit03
[rabbit@rabbit04]# rabbitmqctl start_app
[rabbit@rabbit04]# exit

節點03上執行:

[root@RabbitMQ03~]# docker exec -it rabbit-03 bash
[rabbit@rabbit03]# rabbitmqctl stop_app
[rabbit@rabbit03]# rabbitmqctl reset
[rabbit@rabbit03]# rabbitmqctl start_app
[rabbit@rabbit03]# exit

3、配置添加ha-mode鏡像
Name:HA
Pattern:.
Definition:ha-mode = all
CentOS7.X環境下基於docker安裝部署RabbitMQ集羣

集羣啓動後的訪問主界面:
CentOS7.X環境下基於docker安裝部署RabbitMQ集羣

3、安裝配置nginx,以提供高可用
nginx的安裝,這裏略過,直接進入配置
[root@nginx~]# cd /usr/local/nginx/conf
[root@nginx~conf]# vi nginx.conf
其他配置略過

stream{
    upstream rabbitmq{
        server 192.168.8.131:5672 max_fails=2 fail_timeout=5s weight=2;
        server 192.168.8.132:5672 max_fails=2 fail_timeout=5s weight=2;
        server 192.168.8.133:5672 max_fails=2 fail_timeout=5s weight=2;
        server 192.168.8.134:5672 max_fails=2 fail_timeout=5s weight=2;
        }
    server{
        listen 5678;
        proxy_pass rabbitmq;
    }
}
[root@nginx~conf]#  vi rabbitmqstream.conf
upstream mqweb {
        ip_hash;
        server 192.168.8.131:15672;
        server 192.168.8.132:15672;
        server 192.168.8.133:15672;
        server 192.168.8.134:15672;
}
server {
listen 80;
server_name localhost;

  location / {
  proxy_pass http://rabbitmqstream/;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size    100m;
  client_body_buffer_size 256k;

  proxy_connect_timeout   60;
  proxy_send_timeout      60;
  proxy_read_timeout      60;

  proxy_buffer_size       256k;
  proxy_buffers           8 256k;
  proxy_busy_buffers_size 512k;
  proxy_temp_file_write_size 512k;
  }
}

 重新啓動nginx容器

[root@nginx~conf]# /usr/local/nginx/sbin/nginx -s reload
[root@nginx~conf]# /usr/local/nginx/sbin/nginx -s stop
[root@nginx~conf]# /usr/local/nginx/sbin/nginx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章