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