Docker

本文档详细介绍了如何在没有网络的情况下通过离线包安装Docker,并配置国内镜像加速。接着,展示了在两台服务器上部署RocketMQ双主双从同步复制集群的步骤,包括创建目录、配置文件修改、启动服务等。最后,提到了启动RocketMQ管理界面并检查服务状态的方法。
摘要由CSDN通过智能技术生成

一、下载 Docker 离线包

https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz

在这里可以选择自己需要的版本进行下载:
Index of linux/static/stable/

二、离线安装工具

GitHub - Jrohy/docker-install: auto install latest docker by online/offline (binary install)

按图示下载安装工具: 

在这里插入图片描述

三、安装
将前面下载的以下文件放入服务器的 /root/docker-install 文件夹下:

- [docker-install]
    - docker-20.10.6.tgz
    - install.sh
    - docker.bash
1
2
3
4
执行安装:

# 进入 docker-install 文件夹
cd docker-install

# 为 docker-install 添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz

由于国内网络问题,需要配置加速器来加速。
修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

之后重新启动服务:

# 重新加载docker配置
sudo systemctl daemon-reload

#重启docker服务
sudo systemctl restart docker

五、确认安装结果

docker info

docker run hello-world

RocketMQ (二) 双主双从同步复制集群方案

部署环境

作为测试环境,我们使用两台虚拟机来部署双主双从环境,具体结构如下:

整个集群由两个 name server 实例和四个 broker 实例组成

name server:

两台服务器分别启动两个name server
broker A 主从:

服务器1部署 broker A 主服务
服务器2部署 broker A 从服务
broker B 主从:

服务器2部署 broker B 主服务
服务器1部署 broker B 从服务

安装 Rocketmq

首先参照《RocketMQ (一) 安装》笔记,在两台虚拟机上安装 Rocketmq。或在一台虚拟机上装好后进行克隆。

建文件夹

在一台服务器上启动两个 broker 实例,需要为不同实例设置单独的数据存储目录。

为了方便起见,我们在两台服务器上都创建这四个实例所需要的的目录。

mkdir /usr/local/rocketmq/store/
mkdir /usr/local/rocketmq/store/broker-a
mkdir /usr/local/rocketmq/store/broker-a/commitlog
mkdir /usr/local/rocketmq/store/broker-b
mkdir /usr/local/rocketmq/store/broker-b/commitlog
mkdir /usr/local/rocketmq/store/broker-as
mkdir /usr/local/rocketmq/store/broker-as/commitlog
mkdir /usr/local/rocketmq/store/broker-bs
mkdir /usr/local/rocketmq/store/broker-bs/commitlog

配置

在 rocketmq/conf 目录下提供了四种集群方案的配置样例

  • 2m-2s-async:双主双从异步复制
  • 2m-2s-sync:双主双从同步复制
  • 2m-noslave:双主
  • dledger: raft主从切换

这里我们选择双主双从同步复制方案。

1. broker-a,a主服务器配置

a

在服务器1修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-a.properties

在样例配置文件中,添加三项配置:

listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-a主服务器的端口使用默认的10911。
storePathRootDir:数据存储目录
storePathCommitLog:提交日志存储目录
 

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

listenPort=10911
storePathRootDir=/usr/local/rocketmq/store/broker-a
storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog

2. broker-a slave,a从服务器配置

 as

在服务器2修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-a-s.properties

在样例配置文件中,添加三项配置:

listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-a slave从服务器的端口使用11911。
storePathRootDir:数据存储目录
storePathCommitLog:提交日志存储目录
 

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

listenPort=11911
storePathRootDir=/usr/local/rocketmq/store/broker-as
storePathCommitLog=/usr/local/rocketmq/store/broker-as/commitlog

3. broker-b,b主服务器配置

b

在服务器2修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-b.properties

在样例配置文件中,添加三项配置:

listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-b主服务器的端口使用默认的10911。
storePathRootDir:数据存储目录
storePathCommitLog:提交日志存储目录
 

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH

listenPort=10911
storePathRootDir=/usr/local/rocketmq/store/broker-b
storePathCommitLog=/usr/local/rocketmq/store/broker-b/commitlog

4. broker-b slave,b从服务器配置

bs

在服务器1修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-b-s.properties

在样例配置文件中,添加三项配置:

listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-b slave从服务器的端口使用11911。
storePathRootDir:数据存储目录
storePathCommitLog:提交日志存储目录
 

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

listenPort=11911
storePathRootDir=/usr/local/rocketmq/store/broker-bs
storePathCommitLog=/usr/local/rocketmq/store/broker-bs/commitlog

配置要点说明
四台服务器的集群名 brokerClusterName 相同。集群名称相同的服务器共同组成服务集群 。

从服务器通过名字与主服务器关联在一起,brokerName 与主服务器相同。

brokerId为0是主服务器。从服务器的值是非零值,例如如果有四个从服务器,他们的 brokerId 应该是 1,2,3,4。

brokerRole的值为 SYNC_MASTER 是同步复制的主服务器。如果是 ASYNC_MASTER 则为异步复制的主服务器。


同步复制:消息复制到从服务器后才向生产者发回反馈信息。
异步复制:消息发到主服务器就向生产者发回反馈信息,之后再向从服务器复制。

启动


 



1. 启动两个 name server

namesrv

在两台服务器上启动两个 name server,它们不用做任何集群的配置,都是作为独立服务运行,它们之间也不会进行数据复制。

所有broker服务启动后,要同时连接这两个 name server,向两个 name server 进行注册。

在两台服务器上都启动 name server:
 

nohup sh mqnamesrv &

2. 启动 broker a 的主从两台服务器

a

在服务器1上启动 broker a 主服务器

参数说明:

  • -n参数:指定name server地址列表,多个地址用分号分隔
  • -c参数:指定配置文件,使用指定的配置文件启动 broker
  • nohup sh mqbroker \
    -n '192.168.64.151:9876;192.168.64.152:9876' \
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties \
    &
    

    在服务器2上启动 broker a 从服务器

  • nohup sh mqbroker \
    -n '192.168.64.151:9876;192.168.64.152:9876' \
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties \
    &
    

    3. 启动 broker b 的主从两台服务器

  • b

 在服务器2上启动 broker b 主服务器

nohup sh mqbroker \
-n '192.168.64.151:9876;192.168.64.152:9876' \
-c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties \
&

在服务器1上启动 broker b 从服务器

nohup sh mqbroker \
-n '192.168.64.151:9876;192.168.64.152:9876' \
-c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties \
&

检查启动的服务

在两台服务器上分别查看java进程,确认两台服务器上是否各启动了三个java进程,分别运行name server和两个broker。

# 查看 java 进程
jps 

---------------------
12081 NamesrvStartup
15745 BrokerStartup
15595 BrokerStartup
16655 Jps

启动管理界面

# 进入 rocketmq-console 项目打包文件目录
cd /usr/local/rocketmq/RocketMQ-Externals/rocketmq-console/target/

# 启动管理界面
nohup java -jar rocketmq-console-ng-1.0.1.jar \
--server.port=8080 \
--rocketmq.config.namesrvAddr='192.168.64.151:9876;192.168.64.152:9876' \
&

查看集群状态

在这里插入图片描述

docker运行时虚拟机的启动内存不足时,调整内存

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值