本文介紹自建rabbitmq docker鏡像,並在k8s集羣中搭建rabbitmq集羣
一..rabbitmq二進制安裝包在虛機上的部署
二.製作docker鏡像
三.使用自建rabbitmq鏡像在k8s中部署集羣
一.rabbitmq二進制安裝包在虛機上部署:
1.1下載並安裝相關包
esl-erlang_21.0-1_centos_7_amd64.rpm --yum 安裝
rabbitmq-server-generic-unix-3.7.14.tar.xz --解壓縮
1.2
啓動:/opt/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management
/opt/rabbitmq/sbin/rabbitmq-server
二.製作docker鏡像
2.1 基礎鏡像使用帶supervisor的程序,rabbitmq啓動用supervisor管理
2.2 supervisor配置文件大致內容截圖
2.3 dockerfile
FROM BASE-IMAGE COPY code/esl-erlang_21.0-1_centos_7_amd64.rpm /tmp/ COPY code/rabbitmq-server-generic-unix-3.7.14.tar.xz /tmp/ RUN set -eux && \ ls /tmp && \ echo "$INET_YUM mirrors.tuna.tsinghua.edu.cn" >> /etc/hosts && \ yum install -y socat && \ yum install -y epel-release && \ cd /tmp/ && \ rpm -i --nodeps esl-erlang_21.0-1_centos_7_amd64.rpm && \ mkdir /opt/rabbitmq/ &&\ tar xvf rabbitmq-server-generic-unix-3.7.14.tar.xz -C /opt/rabbitmq/ &&\ mv /opt/rabbitmq/rabbitmq_server-3.7.14/* /opt/rabbitmq/ COPY code/.erlang.cookie /root/ COPY code/supervisor*.ini /etc/supervisor/conf.d
2.3 啓動
基礎鏡像中使用了CMD 創建容器時啓動supervisor,所以在上面dockerfile中沒有cmd命令
supervisor管理的好處:在容器中可以更改rabbitmq配置並關閉,開啓它而不會影響到容器的運行;官方rabbitmq鏡像在容器內關閉rabbitmq進程後容器也會down
2.4 配置
rabbitmq.conf文件需掛載到/opt/rabbitmq_server-3.7.14/etc/rabbitmq/rabbitmq.conf
更改默認用戶名密碼爲非guest:
default_user = guest
default_pass = guest
集羣自動發現配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit1@hostname
cluster_formation.classic_config.nodes.2 = rabbit2@hostname
cluster_formation.classic_config.nodes.3 = rabbit3@hostname
三. k8s中部署
1.statefulset運行時,第一次運行需掛載配置文件,使初始化自定義用戶
2.節點名默認爲node名,需配置服務別名使節點間相互發現
3.暴露端口 15672,5672,4369,25672