K8S系列——(二)、K8S部署RocketMQ集群

1、环境准备

要将RocketMQ部署到K8S上,首先你需要提前准备一个K8S集群环境,如图我已经准备好了一个版本为 v1.28.13 的 K8S 集群(其他版本也没问题):

角色 IP
Master 192.168.6.220
Node-1 192.168.6.221
Node-2 192.168.6.222

2、RocketMQ的部署方式

  • 2m-noslave: 多Master模式,无Slave 双主模式
  • 2m-2s-sync: 多Master多Slave模式,同步双写 双主双从+同步模式
  • 2m-2s-async:多Master多Slave模式,异步复制 双主双从+异步模式

3、RocketMQ发送消息方式

  • 同步发送: 指消息发送方发出数据后会在收到接收方发回响应之后才发下一个数据包
  • 异步发送: 指发送方发出数据后,不等接收方发回响应,接着发送下个数据包, 异步方式也需要Broker返回确认信息
  • 单向发送: 指只负责发送消息而不等待服务器回应且没有回调函数触发

4、RocketMQ三种消息发送模式使用场景

具体使用哪种模式,这主要是看应用场景

  • 同步发送:主要运用在比较重要一点消息传递/通知等业务
  • 异步发送:通常用于对发送消息响应时间要求更高/更快的场景
  • 单向发送:适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集,只发送消息不等待服务器响应,只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别

5、RocketMQ端口

  • rocketmq 默认端口:9876(即nameserver端口)
  • 非vip通道端口:10911
  • vip通道端口:10909
    • 10909是VIP通道对应的端口,在JAVA中的消费者对象或者是生产者对象中关闭VIP通道即可无需开放10909端口
本文部署的是RocketMQ的双主双从+同步模式
  • broker-a-master 主1
  • broker-b-master 主2
  • broker-a-slave 从1
  • broker-a-slave 从2
  • NameServer(注册中心)
  • rocketmq-console(可视化web界面)

6、安装NFS

因为系统当中的rocketmq、mysql、nacos、redis和file文件模块需要持久化的文件存储,所以我们要为这些持久化的文件存储创建目录。这次我打算使用nfs,需要准备一台nfs服务器,为了方便我就直接使用k8s的主节点来充当nfs服务器了。先来安装 nfs-utils 软件包(注意所有k8s节点都要安装)

6.1 更新软件包列表:

在终端中运行以下命令,更新你的软件包列表,以确保你可以获得最新的软件包版本。

bash 复制代码
 sudo apt update

6.2 安装NFS相关软件包:

在Ubuntu中,nfs-utils实际上是nfs-commonnfs-kernel-server这两个软件包的组合。你可以使用以下命令来安装这些软件包,3台机器上都要执行:

bash 复制代码
sudo apt install nfs-common nfs-kernel-server
  • nfs-common 包含客户端和服务器共用的工具和文件。
  • nfs-kernel-server 包含NFS服务器的相关工具和服务。

6.3启动并启用NFS服务:

安装完成后,启动NFS服务器,并将其设置为开机自启动:

bash 复制代码
sudo systemctl start nfs-server
sudo systemctl enable --now nfs-server

6.4验证安装:

你可以使用以下命令来验证NFS服务是否已经正常启动:

bash 复制代码
sudo systemctl status nfs-server

完成这些步骤后,nfs-utils(即nfs-commonnfs-kernel-server)应该已经在你的Ubuntu系统上成功安装并启动。

6.5创建共享目录

在k8s-master节点上,创建文件共享目录。

bash 复制代码
#HDD机械硬盘上的挂载目录
sudo mkdir -p /mnt/renpho/nfs/data/share
#SSD固态硬盘上的挂载目录
sudo mkdir -p /home/ec2-user/k8s/nfs/data/share/nacos

接下来我们需要将这些目录暴露给内网访问,先执行下面这行命令修改nfs的配置文件:

bash 复制代码
sudo cat >> /etc/exports << EOF
/mnt/renpho/k8s/nfs/data/share *(rw,sync,no_subtree_check,no_root_squash)
/home/ec2-user/k8s/nfs/data/share *(rw,sync,no_subtree_check,no_root_squash)
EOF

然后可以使用下面这行命令查看目录的暴露是否成功(注意修改nfs服务器地址):

bash 复制代码
showmount -e 192.168.6.220

7、部署RocketMQ集群

7.1制作镜像

7.2制作镜像

相关推荐
正经教主15 分钟前
【docker基础】第五课:Docker网络详解
运维·docker·容器
Waay2 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
松岩2 小时前
dcgm-exporter部分指标
kubernetes
我是谁??5 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
Patrick_Wilson5 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
运维瓦工5 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Plastic garden6 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
Plastic garden6 小时前
k8s(11) Pod 控制器,服务发现与存储管理
kubernetes
与海boy6 小时前
docker compose minio
docker·容器·eureka
星辰徐哥7 小时前
云原生核心特性:容器化、微服务与DevOps的通俗解读
微服务·云原生·devops