特定场景下docker安装达梦8主备集群

一、Docker安装

说明:本文档针对的场景是以下两点:
(1)只能使用hosts作为容器运行的网络,不允许自定义网络。
(2)主库、备库、监视器是分布在三个不在同一宿主机的docker环境

1.1、准备docker离线安装包
编写此文档时用来验证的环境为Centos7.6.1810,在本地搭建了离线yum源,经过验证,可直接解压使用此文档的附件“docker安装包”内的“docker-19.03.9.tgz”文件,如果在其他环境不行,建议检查依赖包是否安装并配置正确。

1.2、开始安装

1.2.1、解压docker离线安装包,执行命令:

tar xvf docker-19.03.9.tgz

1.2.2、移动安装包文件,执行命令:

mv docker/* /usr/bin/

1.2.3、配置系统加载项,执行:

vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

1.3、启动docker

chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker

2、集群规划

在这里插入图片描述

3、集群环境配置

3.1、导入主备镜像文件
进入存放主备镜像离线包的目录,使用docker命令导入主备镜像,执行:

docker load -i dmwatcher_v8.1.1.190_x86_rh6_64_ent_docker.tar

导入过程如下,导入结束后,可使用docker images命令查看导入的镜像。
在这里插入图片描述3.2、重命名镜像文件(可选)
镜像导入成功后,如果需要修改镜像名称,可使用docker tag来进行,如

docker tag 192.168.101.88:5000/dmwatcher:v8.1.1.190_x86_rh6_64_ent_docker dmwatcher:v8.1.1.190

此处即是将镜像重命名为dmwatcher:v8.1.1.190,执行完成以后,同样可以使用docker images命令来查看到新的镜像名称,如图
在这里插入图片描述可以看到,目前在docker里面,存在两个镜像,重命名前和重命名后的均存在,后续容器的运行需要指定镜像,因此需要确认镜像名是否配置正确。
3.3、修改host文件
因为在此方案中,容器的运行使用的是host网络,所以需要在/etc/hosts文件中配置映射关系,否则容器运行后可能拿到的地址是127.0.0.1,而非本机的真正IP地址。三台服务器均需修改,在此以主库130服务器为例,需要在hosts中添加如下:

192.168.152.130   host   localhost

其他两台类似操作,添加结束保存即可。
3.4、关闭selinux
容器运行需要对/proc/self/attr/keycreate有写权限,因此需要将SELINUX配置为disable,或者执行setenforce 0也可,否则容器运行时会报如下错误:
在这里插入图片描述

4、运行容器

4.1、容器运行参数说明
使用Docker命令运行达梦主备集群容器,里面带有很多参数,有些参数是Docker运行的参数,有些参数是达梦主备镜像ENV的参数,其中ENV相关参数,上面运行主备集群容器只用到了一部分,其他没指定的ENV参数都是用的默认值,下面分别详细说明这两类参数:
在这里插入图片描述4.2、运行监视器
首先需要启动监视器,执行命令(复制后请先保存到文本文件):

docker run -d --restart=always --name dmwatcher_monitor --privileged=true --net host -e DMWATCHER_ROLE=monitor -e CLUSTER_IPS="192.168.152.132,192.168.152.130,192.168.152.131" -e LD_LIBRARY_PATH=/opt/dmdbms/bin -v /data/dw_data/dmwatcher_monitor:/opt/dmdbms/data dmwatcher:v8.1.1.190

执行成功后,可使用命令docker ps -a 查询到该容器的ID,再使用命令docker logs ID -f便能查看到监视器的日志内容。
4.3、运行备库
其次运行备库,执行命令(复制后请先保存到文本文件):

docker run -d --restart=always --name dmwatcher_standby --privileged=true --net host -e DMWATCHER_ROLE=standby -e DW_NO=2  -e CLUSTER_IPS="192.168.152.132,192.168.152.130,192.168.152.131" -e LD_LIBRARY_PATH=/opt/dmdbms/bin -v /data/dw_data/dmwatcher_standby:/opt/dmdbms/data dmwatcher:v8.1.1.190

执行成功后,同样可以使用docker logs ID -f查看到备库的运行日志,不过此时日志会有如下提示,请忽略,这个错误提示的原因是:备库在等待主库发来的文件,但是主库还没启动运行(实际上即使主库运行了也会因为未知的情况无法主动发送文件到备库),报错如下:
在这里插入图片描述4.4、运行主库

docker run -d --restart=always --name dmwatcher_primary --privileged=true --net host -e PAGE_SIZE=16 -e CASE_SENSITIVE=1 -e DMWATCHER_ROLE=primary -e CLUSTER_IPS="192.168.152.132,192.168.152.130,192.168.152.131" -e DW_NO=1  -e LD_LIBRARY_PATH=/opt/dmdbms/bin -v /data/dw_data/dmwatcher_primary:/opt/dmdbms/data dmwatcher:v8.1.1.190

同样,执行docker logs ID -f指令也可查看主库的日志,如果日志出现如下内容,可进行下一步。
在这里插入图片描述4.5、拷贝主库文件到备库及监视器
在上一步中可以看到,此时主库其实已经准备将两个压缩文件发送给备库131服务器了,但是因为未知原因,导致一直在这里卡顿,所以,解决办法就是手动完成这个步骤,将容器映射到属主机的路径下的两个文件拷贝到备库的指定映射路径下,该路径可以从运行参数-v的值看到。在此的路径为:
备库:/data/dw_data/dmwatcher_standby
监视器:/data/dw_data/dmwatcher_monitor
需要拷贝的文件在主库:/data/dw_data/dmwatcher_primary,如下:
在这里插入图片描述
手动将两个tar文件使用scp指令拷贝到备库及监视器的指定路径下即可,在此不再赘述。
拷贝到备库结束后,如果查看备库的日志如下,说明备库已经接收到发来的两个文件,将会执行下一步安装部署工作,如图:
在这里插入图片描述4.6、重启监视器
监视器拿到主库发送的两个文件后,也会自主解压部署,部署完毕后,需要手动重启一次监视器,执行命令:

docker ps -a   #查询到容器ID
docker restart ID  #重启监视器

4.7、重启备库
备库解压完后,会自动进行部署,不过此时需要注意查看备库的运行日志,一个很常见的场景是备库的没有OGUID值而报错,这个时候就需要对备库执行如下:

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
SP_SET_OGUID(453331);
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);

正常执行完成后,修改数据库模式为standby,打开数据库即可。
4.8、修改主库参数及文件
通过查看主库当前的状态可以看到,首先主库会一直卡在向备库发送压缩文件,其次,主库自身此时还存在以下几个方面的问题:
①实例名不正确,需要和备库dmmal.ini文件中的对应参数保持一直。
②ARCH_INI和MAL_INI的值均为0,需要修改为1,打开对应的功能。
③主库缺少dmmal.ini、dmarch.ini、dmwatcher.ini三个文件,需要参照备库进行添加。
所有文件均在/data/dw_data/dmwatcher_primary/DAMENG下进行修改和添加。
4.9、重启主库
上一步骤修改配置完成后,手动重启一次主库容器,执行:

Docker restart ID

重启过程中,着重注意查看日志文件,如果提示OGUID没有配置,参考第4.7步完成配置,并修改主库模式为primary。
4.10、确认部署结果
主库、备库、监视器重启完毕以后,可以在监视器内查看到当前的集群状态,如图所示,即可表示部署完成:
在这里插入图片描述至此,在docker环境部署主备集群的步骤已经完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用 Docker 搭建8集群,需要按照以下步骤进行: 1. 安装 DockerDocker Compose 2. 下载8集群安装包,并解压缩到指定目录下,例如 /opt/dm8-cluster。 3. 在 /opt/dm8-cluster 目录下创建 docker-compose.yml 文件,内容如下: ``` version: '3' services: dm8_primary: image: dm8_image container_name: dm8_primary volumes: - ./dm8_primary:/opt/dmdbms environment: - DM8_HOME=/opt/dmdbms - DM8_PRIMARY=Y ports: - "5236:5236" networks: dm8_network: ipv4_address: 172.20.0.2 dm8_standby: image: dm8_image container_name: dm8_standby volumes: - ./dm8_standby:/opt/dmdbms environment: - DM8_HOME=/opt/dmdbms - DM8_STANDBY=Y - DM8_PRIMARY_IP=172.20.0.2 ports: - "5236:5236" networks: dm8_network: ipv4_address: 172.20.0.3 networks: dm8_network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 ``` 其中,dm8_primary 为8节点的 Docker 容器,dm8_standby 为8节点的 Docker 容器。dm8_image 为8的 Docker 镜像,可以使用官方提供的镜像,也可以自己构建镜像。dm8_primary 和 dm8_standby 都挂载了本地目录到容器内,用于存储数据库文件。DM8_HOME 环境变量指定了8的安装目录,DM8_PRIMARY 和 DM8_STANDBY 环境变量分别表示是否为节点和节点,DM8_PRIMARY_IP 环境变量指定了节点的 IP 地址。容器内的 5236 端口映射到宿机的 5236 端口,用于客户端访问。最后,将两个容器连接到 dm8_network 网络中。 4. 构建 Docker 镜像 在 /opt/dm8-cluster 目录下执行以下命令构建 Docker 镜像: ``` docker build -t dm8_image . ``` 其中,dm8_image 为镜像名称,最后的 . 表示 Dockerfile 文件路径为当前目录。 5. 启动容器 在 /opt/dm8-cluster 目录下执行以下命令启动容器: ``` docker-compose up -d ``` 其中,-d 表示在后台运行容器。 6. 验证集群 使用客户端连接到节点的 5236 端口,验证集群是否正常工作。可以先停止节点的容器,观察节点是否自动切换为节点。然后再启动节点的容器,观察节点是否重新建立复制关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值