k8s中搭建rabbitmq集群

时间:2024-05-20 08:23:09

本文介绍自建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配置文件大致内容截图

k8s中搭建rabbitmq集群

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 = [email protected]
cluster_formation.classic_config.nodes.2 = [email protected]
cluster_formation.classic_config.nodes.3 = [email protected]

 

三. k8s中部署

1.statefulset运行时,第一次运行需挂载配置文件,使初始化自定义用户
2.节点名默认为node名,需配置服务别名使节点间相互发现
3.暴露端口 15672,5672,4369,25672