使用docker搭建RabbitMQ集群


參考使用docker搭建RabbitMQ集群

docker運行RabbitMQ容器

docker run -d --hostname rabbit01 --name myrabbit01 -p 5672:5672 -p 15672:15672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=886291 rabbitmq:management

docker run -d --hostname rabbit02 --name myrabbit02 -p 5673:5672 --link myrabbit01:rabbit01 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

docker run -d  --hostname rabbit03 --name myrabbit03 -p 5674:5672 --link myrabbit01:rabbit01 --link myrabbit02:rabbit02 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

參數說明

  • -d:以后台進程運行
  • –hostname rabbit01:RabbitMQ主機名稱
  • –name:容器名稱
  • -p:端口映射(宿主機端口:容器內端口),5672:amqp訪問端口,15672:http訪問端口

注意點

  1. 使用:http://宿主ip:15672 訪問,用戶名密碼使用默認:guest/guest。
  2. 多個容器之間使用“–link”連接,此屬性不能少;
  3. Erlang Cookie值必須相同,也就是RABBITMQ_ERLANG_COOKIE參數的值必須相同,原因見下文“配置相同Erlang Cookie”部分;

組建RabbitMQ集群

啟動了3個節點,1個磁盤節點和2個內存節點。

#設置節點1,加入到集群:
docker exec -it myrabbit01 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

#設置節點2,加入到集群:
docker exec -it myrabbit02 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit01
rabbitmqctl start_app
exit

#設置節點3,加入到集群:
docker exec -it myrabbit03 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit01
rabbitmqctl start_app
exit

參數--ram表示設置為內存節點,忽略此參數默認為磁盤節點。

配置相同Erlang Cookie

RabbitMQ是用Erlang實現的,Erlang Cookie相當於不同節點之間相互通訊的秘鑰,Erlang節點通過交換Erlang Cookie獲得認證。

添加鏡像策略

#進入jt_rabbitmq01的容器內
docker exec -it jt_rabbitmq01 bash
#執行下面命令
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'


免責聲明!

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



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