RabbitMQ集群的两种模式

1)普通模式:默认的集群模式,队列消息只存在单个节点上

2)镜像模式:队列为镜像队列,队列消息存在每个节点上

配置同步:

配置同步:

1.Ha mode 同步模式,以下可选:

1)all 所有的节点都将被同步

2)exactly 指定个数的节点被同步

3)nodes 指定的名称的节点被同步

2.Ha params 上一项中的参数

3.Ha async mode 同步方式,自动或手动

创建rabbitmq集群的yaml文件

下面yaml中涉及的Kubernetes组件有:

  1. Service

    1. 提供http服务的service
    2. 提供StatfulSet的headless service
  2. StatefulSet
    1. 有状态pods的集合,真正提供rabbitmq的服务
[root@k8smaster centos]# cat rabbitmq.yaml
---
apiVersion: v1
kind: Service
metadata:
# Expose the management HTTP port on each node
name: rabbitmq-management
labels:
app: rabbitmq
spec:
ports:
- port: 15672
name: http
selector:
app: rabbitmq
type: NodePort # Or LoadBalancer in production w/ proper security
---
apiVersion: v1
kind: Service
metadata:
# The required headless service for StatefulSets
name: rabbitmq
labels:
app: rabbitmq
spec:
ports:
- port: 5672
name: amqp
- port: 4369
name: epmd
- port: 25672
name: rabbitmq-dist
clusterIP: None
selector:
app: rabbitmq
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: rabbitmq
spec:
serviceName: "rabbitmq"
replicas: 3
template:
metadata:
labels:
app: rabbitmq
spec:
containers:
- name: rabbitmq
image: rabbitmq:3.7-rc-management
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- >
if [ -z "$(grep rabbitmq /etc/resolv.conf)" ]; then
sed "s/^search \([^ ]\+\)/search rabbitmq.\1 \1/" /etc/resolv.conf > /etc/resolv.conf.new;
cat /etc/resolv.conf.new > /etc/resolv.conf;
rm /etc/resolv.conf.new;
fi;
until rabbitmqctl node_health_check; do sleep 1; done;
if [ -z "$(rabbitmqctl cluster_status | grep rabbitmq-0)" ]; then
touch /gotit
rabbitmqctl stop_app;
rabbitmqctl reset;
rabbitmqctl join_cluster rabbit@rabbitmq-0;
rabbitmqctl start_app;
else
touch /notget
fi;
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: RABBITMQ_ERLANG_COOKIE
value: "YZSDHWMFSMKEMBDHSGGZ"
- name: RABBITMQ_NODENAME
value: "rabbit@$(MY_POD_NAME)"
ports:
- containerPort: 5672

通过Pod的postStart来执行命令,把后面的两个Pod加入rabbitmq集群。

Pod的生命周期里有两个个hook部分:PostStart,PreStop

创建不同的rabbitmq集群,需要把yaml文件的很多处rabbitmq关键字替换掉。。。

也可以通过参数来生成yaml文件

kubectl create -f rabbitmq.yam
service "rabbitmq-management" created
service "rabbitmq" created
statefulset "rabbitmq" created
[root@k8smaster centos]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-7db9fccd9b-99h6b 1/1 Running 0 2d23h
rabbitmq-0 1/1 Running 0 57m
rabbitmq-1 1/1 Running 0 55m
rabbitmq-2 1/1 Running 0 51m

访问集群

[root@k8smaster centos]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d
rabbitmq ClusterIP None <none> 5672/TCP,4369/TCP,25672/TCP 105m
rabbitmq-management NodePort 10.107.192.23 <none> 15672:32201/TCP 105m

可以通过 宿主机主机ip:32219访问

默认用户名guest密码guest

之后补充.

参考:

http://www.yangguanjun.com/2018/08/06/rabbitmq-deploy-with-k8s/

https://segmentfault.com/a/1190000017338025

StatefulSet 基本使用

https://kubernetes.io/zh/docs/tutorials/stateful-application/basic-stateful-set/

RabbitMQ安装与初始配置

https://www.cnblogs.com/chrischennx/p/7071471.html

kubernets安装rabbitmq集群.的更多相关文章

  1. docker-compose安装rabbitmq集群(主从集群---》镜像集群)

    docker-compose安装rabbitmq集群(主从集群--->镜像集群) yls 2020/5/11 创建docker-compose.yml 文件 version: '3' servi ...

  2. k8s中安装rabbitmq集群

    官方文档地址:https://www.rabbitmq.com/kubernetes/operator/quickstart-operator.html 要求 1.k8s版本要1.18及其以上 2.能 ...

  3. CentOS7安装RabbitMQ集群

    实验环境 RabbitMQ 集群 server1.example.com    IP: 10.10.10.11    Node: diskserver2.example.com    IP: 10.1 ...

  4. 集群架构和CentOS7安装RabbitMQ集群(单机版)

    1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...

  5. CentOS7安装rabbitmq集群(二进制)

    一.RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡. RabbiMQ模式 RabbitMQ模式大概分为以下三种: ...

  6. Windows安装RabbitMQ集群的几个注意点

    记录一下RabbitMQ在windows平台下安装的几个注意点- -,好记性不如烂笔头 安装过程与Linux安装一致,教程参照官网集群配置:此处只列举出几个注意点: 1. erlang的版本需要一致, ...

  7. 安装rabbitmq集群

    一.安装 erlang.rabbitmq 在10.0.0.45.10.0.0.57.10.0.0.58三个节点上安装,然后开启 RabbitMQ 监控插件 以下在root用户操作 1./etc/hos ...

  8. kubernetes安装rabbitmq集群

    1.准备K8S环境 2.下载基础镜像,需要安装两种插件:autocluster.rabbitmq_management 方法一: 下载已有插件镜像 [root@localhost ~]#docker ...

  9. 运维-安装rabbitmq 集群

    服务器:   online-platform-rabbitmq-01 online-platform-rabbitmq-02 online-platform-rabbitmq-03 绑定HOSTS: ...

随机推荐

  1. (十一)SpringBoot之文件上传以及

    一.案例 1.1 配置application.properties #主配置文件,配置了这个会优先读取里面的属性覆盖主配置文件的属性 spring.profiles.active=dev server ...

  2. (三)调用web服务

    (二)发布第一个WebService服务与DSWL文档解析讲解了如何发布一个web服务,本章主要讲述如何调用一个web服务. 这里有三种方式: 使用代理模式调用,需要将服务端的接口类拷贝到客户端中.( ...

  3. Uwl.Admin开源框架(一)

    1.前言 作为一个忠实的软粉,一直期待微软出跨平台,一直在等待.Net Core,因为刚毕业对于.Net的很多东西不是很熟知,就开始了.Net Core的摸索,一路上坎坎坷坷,对于新技术一直很期待,就 ...

  4. JDBC 学习复习8 C3P0数据源使用

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. c3p0与dbcp区别 dbcp ...

  5. C++编译 C # 调用方法

    C++编译    C # 调用方法 编译时使用  public ref class ABC {   ... }; 调用时  右键---引用 --- 添加dll引用  即可

  6. Laravel with 查询指定的字段(非复制的哦)

    问题: 在with里面指定查询字段,结果是null. 在模型里面指定查询字段,结果是null. 解决办法: 在查询指定字段的时候要顺带着查询关联的外键,例: // user 表 id name // ...

  7. 【Linux】Linux基本命令

    一.Linux关机 shutdown -h 10 10min后关机 shutdown -h 10:00   10:00关机 shutdown -h now 或 halt 或 poweroff 立即关机 ...

  8. C语言字符串格式化输出

    %ms:将字符串全部输出,如果字符串长度小于m,在左边用空格将输出宽度补齐为m: %.ns:如果n大于字符串长度,将字符串全部输出,否则,输出前n个字符: %m.ns:如果n不大于m,输出指定字符串的 ...

  9. 补充:HTML标签和CSS

    角标标签: 上角标:sup 下角标:sub <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  10. Spring的使用及Spring3.2控制器增强@ControllerAdvice

    在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component. @Controller.@Service等这些注解的类,则把这 ...