k8s中搭建rabbitmq集羣

本文介紹自建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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章