博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes部署rabbitmq集群
阅读量:6827 次
发布时间:2019-06-26

本文共 4501 字,大约阅读时间需要 15 分钟。

hot3.png

1.准备K8S环境

2.下载基础镜像,需要安装两种插件:autocluster、rabbitmq_management

方法一:

下载已有插件镜像

[root ~]#docker pull registry.cn-hangzhou.aliyuncs.com/wise2c/kubernetes-rabbitmq-autocluster

下面是自定义的Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/wise2c/kubernetes-rabbitmq-autocluster:latest RUN rabbitmq-plugins enable --offline rabbitmq_management

构建新镜像(在当前目录新建Dockerfile)

docker build -t  . rabbitmq:new

方法二:

下载原始镜像

下面是自定义的Dockerfile(需要下载autocluster-0.6.1.ez插件)

复制代码
FROM rabbitmq:3.6.8ENV RABBITMQ_USE_LONGNAME=true \    AUTOCLUSTER_LOG_LEVEL=debug \    AUTOCLUSTER_CLEANUP=true \    CLEANUP_INTERVAL=60 \    CLEANUP_WARN_ONLY=false \    AUTOCLUSTER_TYPE=k8s \    LANG=en_US.UTF-8ADD plugins/*.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.8/plugins/RUN rabbitmq-plugins enable --offline autoclusterRUN rabbitmq-plugins enable --offline rabbitmq_management
复制代码

构建新镜像(在当前目录新建Dockerfile)

docker build -t  . rabbitmq:new

3.kubernetes配置文件(serviceAccount.yaml、service.yaml、deployment.yaml)

创建serviceAccount,这样autocluster可以通过serviceAccount去访问rabbitmq-service的endpoints

复制代码
---apiVersion: v1kind: ServiceAccountmetadata:  name: rabbitmq   namespace: default---kind: RoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata:  name: endpoint-reader  namespace: default rules:- apiGroups: [""]  resources: ["endpoints"]  verbs: ["get"]---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata:  name: endpoint-reader  namespace: defaultsubjects:- kind: ServiceAccount  name: rabbitmqroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: endpoint-reader
复制代码

创建service.yaml

复制代码
---apiVersion: v1kind: Servicemetadata:  labels:    app: rabbitmq  name: rabbitmqspec:  ports:  - port: 5672    name: port-5672    targetPort: 5672    protocol: TCP    nodePort: 5672  - port: 4369    name: port-4369    targetPort: 4369    protocol: TCP  - port: 5671    name: port-5671    targetPort: 5671    protocol: TCP  - port: 15672    targetPort: 15672    nodePort: 15672    name: port-15672    protocol: TCP  - port: 25672    name: port-25672    targetPort: 25672    protocol: TCP  type: NodePort  selector:    app: rabbitmq
复制代码

创建deployment.yaml,在此之前需要先生成cookie文件

[root@localhost ~]echo $(openssl rand -base64 32) > erlang.cookie[root@localhost ~]kubectl -n cat create secret generic erlang.cookie --from-file=erlang.cookie
复制代码
apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: rabbitmqspec:  replicas: 3  template:    metadata:      labels:        app: rabbitmq    spec:      containers:      - name: rabbitmq        image: rabbitmq:new        ports:          - containerPort: 5672            name: port-5672          - containerPort: 4369            name: port-4369          - containerPort: 5671            name: port-5671          - containerPort: 15672            name: port-15672          - containerPort: 25672            name: port-25672        env:          - name: HOSTNAME            valueFrom:             fieldRef:              fieldPath: status.podIP          - name: MY_POD_IP            valueFrom:             fieldRef:              fieldPath: status.podIP          - name: AUTOCLUSTER_CLEANUP            value: "true"          - name: RABBITMQ_USE_LONGNAME            value: "true"          - name: AUTOCLUSTER_LOG_LEVEL            value: "debug"          - name: CLEANUP_INTERVAL            value: "60"          - name: CLEANUP_WARN_ONLY            value: "false"          - name: AUTOCLUSTER_TYPE            value: "k8s"          - name: LANG            value: "en_US.UTF-8"          - name: RABBITMQ_ERLANG_COOKIE            valueFrom:             secretKeyRef:              name: erlang.cookie              key: erlang.cookie
复制代码

[root ~]# kubectl create -f serviceAccount.yaml

[root ~]# kubectl create -f service.yaml

[root ~]# kubectl create -f deployment.yaml

启动后出现报错: 

=INFO REPORT==== 8-Aug-2018::06:18:41 ===
autocluster: (cleanup) No partitioned nodes found.
 
 解决办法:需要将其他两个节点加入到第一个节点中
[root ~]#kubectl exec -it rabbitmq-84c7bb6bf9-6jq88 /bin/bash -n default
root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl stop_app
root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl join_cluster  rabbit@rabbitmq1
root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl start_app

若出现节点无法加入集群的问题

root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl reset
root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl join_cluster  rabbit@rabbitmq1
root@rabbitmq-84c7bb6bf9-6jq88:/#rabbitmqctl start_app
 
测试访问地址:http://K8S地址:15672

 20181102更新

部署单节点rabbitmq,使用自带管理界面插件的镜像,在docker hub上搜索rabbitmq,下载镜像docker pull rabbitmq:3.6-management

转载于:https://my.oschina.net/lionel45/blog/2991233

你可能感兴趣的文章
浏览器的重绘与重排
查看>>
Web开发必知的八种隔离级别
查看>>
酷炫的显示主页面
查看>>
org.apache.catalina.startup.Catalina start之过程分析
查看>>
CAA如何进行干涉检查?
查看>>
silverlight vs flash
查看>>
我的友情链接
查看>>
对大文本域进行BASE64编码解码
查看>>
我的友情链接
查看>>
关于cisco交换机的config.text和startup-config
查看>>
可执行JAR读写内外文件
查看>>
libsvm for python学习(2)
查看>>
Windows+Apache搭建PHP开发环境
查看>>
lamp环境测试php问题
查看>>
Handbook of Constraints Programming——Chapter4 Backtracking Search Algorithms-Preliminaries
查看>>
[转载] 信息系统项目管理师视频教程——14 项目进度管理
查看>>
linux 解压文件
查看>>
区块链学习指南
查看>>
LINUX-软件安装(四)
查看>>
JavaScript学习总结(5)——Javascript面向(基于)对象编程
查看>>