资讯专栏INFORMATION COLUMN

在Kubernetes中使用RabbitMQ 经验分享

IT那活儿 / 575人阅读
在Kubernetes中使用RabbitMQ 经验分享

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!




在实际工作中我们常常遇见部署各类中间件服务,例如Redis、etcd、memcache、RabbitMQ等,通过Kubernetes部署这些中间件,极大的提高了运维效率,本文是针对RabbitMQ在工作中的小结。







前提条件
要完成本文后续的操作还需要以下条件:
  • Kubernetes 1.19+
  • Helm 3.2.0+
  • PV provisioner support in the underlying infrastructure



安装Chart


helm install ops-test   --set 
auth.username=celery,auth.password=celery,auth.erlangCookie=
secretcookie,persistence.storageClass=rook-cephfs-
sc,replicaCount=3,persistence.size=1Gi bitnami/rabbitmq
1. 参数说明
  • auth.username  设置用户名
  • auth.password  设置密码
  • auth.erlangCookie 设置erlang cookie
  • persistence.storageClass 设置数据存储
  • replicaCount 设置副本数
详细参数请访问:
rabbitmq 8.29.0 · bitnami/bitnami (artifacthub.io)

2. 扩容

副本数增加到10个。
helm upgrade ops-test --set 
auth.username=celery,auth.password=celery,auth.erlangCookie=
secretcookie,persistence.storageClass=alicloud-nas-
sp,replicaCount=10 bitnami/rabbitmq


3. 缩容

副本数缩减到5个。
helm upgrade ops-test --set 
auth.username=celery,auth.password=celery,auth.erlangCookie=
secretcookie,persistence.storageClass=alicloud-nas-
sp,replicaCount=5 bitnami/rabbitmq
注意:当队列(Queues)类型是仲裁队列(Quorum Queues)时,要先删除member。
使用命令:
rabbitmq-queues delete_member [-p ]  
注意不要使Member太低,太低可能会导致仲裁队列故障。
4. 检查状态
安装成功后等待集群创建成功,可通过以下两种方式检查运行状态:

方式一:web方式


kubectl port-forward --address 0.0.0.0 --namespace default svc/ops-test-rabbitmq 15672:15672
访问 15672,通过webui访问管理页面。

方式二:命令行方式


kubectl exec -it ops-test-rabbitmq-2 /bin/bash
rabbitmqctl cluster_status




配置镜像队列
默认集群中的Queue只存在于它所创建的那个节点上,如果该节点挂了将会造成数据的丢失;使用镜像队列将会在所有其他节点上创建同样的队列,发送数据时所有的队列都会有消息。可以通过设置策略来设置镜像队列。
设置策略时有两个关键参数:ha-mode和ha-params。

1. 设置策略
登录集群中的任意节点,执行以下命令:
rabbitmqctl set_policy ha-all "^" {"ha-mode":"exactly","ha-params":4,"ha-sync-mode":"automatic"}
2. Queues详情
点进一个ops13, 在Detail标签中,Node是当前提供服务的主节点,Mirrors是副本节点,因为"ha-params"参数值为4,所以会有1个主节点,3副本节点。当Node节点出现问题时会从Mirrors中选举一个mirror成为新的Node,提供服务。
3. 故障切换
当Node失效后会从Mirrors中选择一个节点充当Node节点。



配置仲裁队列
仲裁队列(Quorum Queues)是RabbitMQ3.8.0版本的新的队列类型,它基于Raft共识算法实现的持久的FIFO队列。
仲裁队列类型是持久的镜像队列的一种替代方法,主要目标是解决集群中的数据安全。
1. 创建仲裁队列
在3.8.0版本可以使用。声明仲裁队列和声明普通队列方法一样,只需要把x-queue-type设置为quorum即可。
仲裁队列适用数据安全性很高的场景(例如订单系统、选举系统等)。
在创建队列的时候添加以下参数:
"x-queue-type": "quorum", # 声明队列类型为仲裁队列
"x-quorum-initial-group-size": 5 # 声明仲裁队列组成员数量,(默认为3,也是最小值),建议成员数量为奇数
添加成员:
rabbitmq-queues add_member [-p ]  
删除成员:
rabbitmq-queues delete_member [-p ]  


2. Queues详情

登陆管理页面,找到队列类型是quorum的队列,在Detail标签中可以看到当前队列的member成员、Online成员和Leader节点。

3. 故障切换

当Leader 节点出现故障不能提供服务时会从所有Online节点中选择一个成为新的Leader节点。
如果Online节点不多时,可以添加member成员:
rabbitmq-queues add_member [-p ]  
当member成员不可用时,可以删除成员:
rabbitmq-queues delete_member [-p ]  




本文作者:王玉坤

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129560.html

相关文章

  • kubernetes部署rabbitmq集群

    摘要:创建运行访问想获取最新内容,请关注微信公众号 dockerfile FROM rabbitmq:3.6.8 ENV RABBITMQ_USE_LONGNAME=true AUTOCLUSTER_LOG_LEVEL=debug AUTOCLUSTER_CLEANUP=true CLEANUP_INTERVAL=60 CLEANUP_WARN_ON...

    xiangzhihong 评论0 收藏0
  • 实录分享|kubernetes 腾讯游戏的应用实践

    摘要:大家好今天我分享的主题与游戏行业相关,为大家介绍的是在腾讯游戏中的应用实践。随着技术的兴起,我们开始调研在游戏容器化方面的应用。也就是说,将不同游戏业务部署到同一台母机,采用绑定核的方式。在母机上架部署时,创建设备和设备并将它们进行关联。 今天小数的推送内容来自腾讯互娱高级工程师黄惠波,让我们一起来看看吧~~~ 黄惠波,腾讯互娱高级工程师目前主要负责游戏计算资源容器化平台的研发工作,包...

    DangoSky 评论0 收藏0
  • Spring Boot 配置多源的 RabbitMQ

    摘要:简介是开发中很平常的中间件,本文讲述的是怎么在一个项目中配置多源的,这里不过多的讲解的相关知识点。但是需要配置多个源时,第二个及其以上的就需要单独配置了,这里我使用的都是单独配置的。源码个人日拱一卒,不期速成 简介 MQ 是开发中很平常的中间件,本文讲述的是怎么在一个Spring Boot项目中配置多源的RabbitMQ,这里不过多的讲解RabbitMQ的相关知识点。如果你也有遇到需要...

    paulquei 评论0 收藏0
  • Rancher Labs亮相SCALE15x:三大演讲福利放送

    摘要:为期四天的第届已落下帷幕,这是美国规模最大的开源软件和用户的盛会之一。月日,第十五届在加州落下帷幕。作为银牌赞助商在展位迎来了一众热情而来的开源技术爱好者,并且受组委会之邀进行了三个主题演讲。 为期四天的第15届SCALE(The Southern California Linux Expo)已落下帷幕,这是美国规模最大的开源软件和Linux用户的盛会之一。 Rancher Labs的...

    pf_miles 评论0 收藏0
  • Rancher Labs亮相SCALE15x:三大演讲福利放送

    摘要:为期四天的第届已落下帷幕,这是美国规模最大的开源软件和用户的盛会之一。月日,第十五届在加州落下帷幕。作为银牌赞助商在展位迎来了一众热情而来的开源技术爱好者,并且受组委会之邀进行了三个主题演讲。 为期四天的第15届SCALE(The Southern California Linux Expo)已落下帷幕,这是美国规模最大的开源软件和Linux用户的盛会之一。 Rancher Labs的...

    Eastboat 评论0 收藏0
  • Kubernetes到“云原生全家桶”,网易如何让业务部署提效280%?

    摘要:近日,网易云轻舟微服务团队接受了的采访,分享了网易云在云原生领域尤其是方面的实践经验。影响根据网易云团队的数据,使研发效率提高了以上,部署效率提高了。无论是否使用网易云产品,网易云都鼓励其他公司尝试。 近日,网易云轻舟微服务团队接受了CNCF的采访,分享了网易云在云原生领域尤其是Kubernetes方面的实践经验。以下为案例全文:showImg(https://segmentfault...

    zhunjiee 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<