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

最新文章

  1. Fiddler 抓包工具总结
  2. SQL-geography &amp;&amp; Spatial result
  3. mysql 安装日志
  4. 用PHP获取系统时间时,时间比当前时间少8个小时
  5. spring中bean配置和bean注入
  6. nginx+tomcat实现动静分离
  7. Git的搭建和使用技巧完整精华版
  8. Mongodb 和Redis 的相同点和不同点
  9. 20151207jquery 学习笔记 Ajax
  10. 小笔记(一):ajax传递数组及将ajax返回数据赋值
  11. Swiper的简单实用方法
  12. 解决pip安装时 UnicodeDecodeError 问题
  13. Ubuntu 14.04 安装桌面
  14. 【Java Web】使用URLRewrite实现网站伪静态
  15. FFmpeg AVPacket
  16. python_IO编程
  17. table的复制 SqlServer 数据库添加临时表(select 字段1,字段2,字段3 into)
  18. 设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
  19. 177. [USACO Jan07] 有限制的素数
  20. java开发注解大全

热门文章

  1. Bitbucket入门手册
  2. Windows 服务 安装后自启动
  3. SpringMVC的理论
  4. vue基本语法概要(一)
  5. sk_buff内核api函数记录
  6. vSphere
  7. 2.Storm集群部署及单词统计案例
  8. Nginx 优化详解
  9. [Python] For 嵌套循环打印图形 nested loop-练习题答案
  10. ndk学习之c++语言基础复习----面向对象编程