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制作镜像

相关推荐
小袁搬码2 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
qq_312920113 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon3 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
条纹布鲁斯4 小时前
dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
docker·kubernetes
CP-DD6 小时前
Docker 容器化开发 应用
运维·docker·容器
老司机张师傅6 小时前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
登云时刻7 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(一)
redis·kubernetes·bootstrap
运维&陈同学7 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
吴半杯8 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
Code_Artist10 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器