向往的开发环境搭建(一):RocketMQ Cluster
本文基于Docker虚拟化容器技术,实现一台虚拟机作为宿主机,安装Docker环境部署RocketMQ(2M-2S-Namesrv)集群环境
前言
- 前文回顾
- 继台式机组装完成后,便开始在脑子中有一个想法:搭建一个程序员必备 /向往的开发环境,最终的蓝图是希望能最大化利用台式机的性能,开机后即可拥有一套现成的本地“云”开发集群环境
- 第一篇便从最近学习的 RocketMQ 出发,基于 Docker 虚拟化容器技术,实现一台虚拟机作为宿主机,安装 Docker 环境部署 RocketMQ ( 2M-2S-Namesrv )集群环境
- 后续可能会考虑搭建 MySQL 主从、Redis 等中间件集群环境,用以分享学习交流~
虚拟机环境
官网下载 Centos7 ISO 镜像文件 【CentOS-7-x86_64-Minimal-2207-02】 清华大学CentOS-7镜像站
启动VamwarePro安装Centos7
配置虚拟机参数
- 4核/16G/80G-SSD
- IP: 192.168.2.246
静态IP配置,vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=”static”
IPADDR=192.168.2.246
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=119.29.29.29
```properties
TYPE=”Ethernet”
PROXY_METHOD=”none”
BROWSER_ONLY=”no”
BOOTPROTO=”static”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”ens33”
UUID=”deb20895-5574-4f53-89da-d5ccb3a68bf2”
DEVICE=”ens33”
ONBOOT=”yes”
IPV6_PRIVACY=”no”
IPADDR=192.168.2.246
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=119.29.29.291
2
3
4
5
6
7
8
9
10
11
12
13
14
### 安装Docker、Docker-Compose
```bash
# 安装docker
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
# 安装docker-compose
[root@localhost ~]# yum install docker-compose
# 查看docker-compose版本信息
[root@localhost ~]# docker-compose -v
双主双从(2M-2S-ASYNC)
异步复制性能最佳,但是存在节点故障时,Master无法正常写入Slave导致部分消息丢失
部署方式:
Docker
,共享宿主机配置集群配置:
2M-2S-ASYNC
、2Namesrv
宿主机创建配置文件,日志目录,用来映射容器中的路径
1 | # 创建日志目录文件夹 |
broker-a.conf
1 | #所属集群名字,同一个集群名字相同 |
broker-a-s.conf
1 | #所属集群名字 |
broker-b.conf
1 | #所属集群名字 |
broker-b-s.conf
1 | #所属集群名字 |
构建docker-compose.yml配置文件
1 | version: '2' |
主从节点配置信息
System Info | IP:PORT | BrokerId |
---|---|---|
namesrv1 |
192.168.2.246:9876 |
|
broker-a |
192.168.2.246:10911 |
0 |
broker-a-s |
192.168.2.246:12911 |
1 |
broker-b |
192.168.2.246:11911 |
0 |
broker-b-s |
192.168.2.246:13911 |
1 |
Docker容器分布
部署RocketMQ-Console
获取RocketMQ-Console镜像,连接NameServer中心,新版本以及迁移到新的Repo,名称为RockeMQ-Dashboard
1 | # 拉取控制台镜像 |
部署成功界面
遇到的问题
broker exited 253
- 最终定位下来问题原因,映射到宿主机的目录卷权限不够,无法应用broker等的配置文件,以及无法操作日志目录
宿主机普通用户每次操作docker命令都需要指定sudo,甚是麻烦
解决方案:加入docker组
```bash
sudo usermod -aG docker xxx1
2
3
4
5
6
- 一直报file path的问题,需要手动创建对应目录
- ```
mkdir /data/docker/rocketmq/store-a/commitlog/
mkdir /data/docker/rocketmq/store-a/consumequeue/
搭建集群的过程中确实有遇到一些莫名其妙的问题,例如 Namesrv 最开始部署了两台,9876/9877 ,最终却连不上 9877 ,后来便放弃,使用单节点 Namesrv