(SERIES7)DM Data Watch数据守护集群安装部署

1 安装前准备

1.1 软硬件配置建议

  最好确保各节点间的操作系统、CPU等服务器配置保持一致,否则可能会严重影响集群的整体性能,尤其是故障切换后可能存在响应服务请求慢的情况;
  心跳系统对MAL的影响程度较大,如果网络丢包或延迟过大,则会影响系统对于节点状态的判断,严重影响MAL系统的处理能力,导致整个集群响应变慢。为保证集群稳定性,对网络环境的建议配置如下:

  • 使用千兆或千兆以上网络;
  • 集群间的心跳同步数据时,尽量使用两个交换机构建内网,以实现冗余和负载均衡
  • 两个网卡(使用bond方式等)联结成一个逻辑网卡使用。一般来说,这对外提供一个统一的虚拟网络接口,以提高带宽和冗余度;在Linux中,存在负载均衡(balance-rr)、主动-备用(active-backup)、链路聚合(802.3ad)等方式。

Vote DiskDCR Disk / DCRV的简述:

  • Vote Disk:主要用于集群仲裁和故障检测,确保在网络分区或节点故障时保持集群的一致性和高可用性;它通过投票机制来决定哪些节点可以继续运行;
  • DCR Disk(Disk Configuration Repository Disk):主要用于存储和管理集群配置和状态信息,帮助集群管理系统进行监控、配置和故障恢复。它确保集群在节点故障或重启后能够快速恢复正常运行。
  • DCR V(Disk Configuration Repository Volume,磁盘配置存储卷):是用于存储和管理高可用性集群系统中关键配置和状态信息的磁盘卷,基本功能同DCR Disk,只是作业单位不同。

1.2 集群规划

  官方文档给出的当在A / B机器上使用两个独立显卡分别承担独立的业务网络IP和心跳网络IP情形下的理论集群规划表如下。在A机器和B机器之外配置确认监视器IP为192.168.1.4。监视器一般设置在独立于主备节点之外的机器上:

表1-1 集群规划

A 机器 B 机器
业务 IP 172.16.1.1 172.16.1.2
心跳 IP 192.168.1.1 192.168.1.2
实例名 GRP1_RT_01 GRP1_RT_02
实例端口 5236 5236
MAL 端口 5336 5336
MAL 守护进程端口 5436 5436
守护进程端口 5536 5536
OGUID 45331 45331
守护组 GRP1 GRP1
安装目录 /home/dmdba/dmdbms /home/dmdba/dmdbms
实例目录 /dmdata/data /dmdata/data
归档上限 51200 51200

  通常,心跳IP会配置在一个独立的网络 / 虚拟局域网VLAN上,该网络与业务网络隔离,以确保心跳信号的可靠传输,其实现方式包括独立网卡(适用于数据中心等高可用集群)、VLAN和软件定义网络SDN等,我们这里为简化配置,选择在同一宿主机上用不同的Container的端口映射实现。

1.3 集群架构

  搭建的主备集群架构如下图1-1:

在这里插入图片描述

图1-1 此次准备搭建的主备集群架构

1.4 切换模式说明

表1-2 故障切换方式及对应参数配置

故障切换方式 dmarch dmwatcher dmmonitor 监视器要求
故障手动切换 ARCH_WAIT_APPLY=0 DW_MODE=MANUAL MON_DW_CONFIRM=0 1. 配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。
故障自动切换 ARCH_WAIT_APPLY=0 DW_MODE=AUTO MON_DW_CONFIRM=1 1. 配置手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。
2. 配置自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。

  对ARCH_WAIT_APPLY参数解释如下:

  • 该配置用于指定:当备库收到Redo日志后,是否在重演完成之后再响应主库;
  • 有两个值可选:当值为0时,备库在收到后立即响应(高性能模式);当值为1时,备库在重演完成后响应(事务一致模式)。
  • 配置为及时归档(Timely Archiving)时,默认值为0;配置为实时归档(Real-time Archiving)时,默认值为1
  • 故障手动切换情境下 ARCH_WAIT_APPLY 只能为 0。故障自动切换情境下 ARCH_WAIT_APPLY 可以为 0,也可以为 1。

  ARCH_WAIT_APPLY 参数设置的判断依据为业务是否要查询备机最新数据。如果需要,则配置为 1(较大性能衰减);如果不需要,则配置为 0。

2 集群搭建

  这里我们使用Docker容器来模拟集群的搭建。
  由图1-1所知,在实际生产环境中本次需要用到3台机器,分别作为主库、备库和监视器;而通过Docker,我们可以在同一台主机上创建3个Container来模拟实现,分别用数据库实例A,数据库实例B和监视器C指代。

2.1 配置A机器

2.1.1 创建Business和Heartbeat网络

  创建自定义网络并指定子网的命令如下:

[dmdba@VM-8-6-centos ~]$ docker network create --subnet=172.16.1.0/24 dmwatch-test-business
870c978be7747a6922eece5ad9eb960e30190fd0cf4891d16126f9b21eb43e43
[dmdba@VM-8-6-centos ~]$ docker network create --subnet=192.168.1.0/24 dmwatch-test-heartbeat
f0c46f65d5ee0529fead4335f5c34b8c803a248edf8a66f643849412a52c6348
[dmdba@VM-8-6-centos ~]$ docker network ls
NETWORK ID     NAME                     DRIVER    SCOPE
a43284433c5f   bridge                   bridge    local
870c978be774   dmwatch-test-business    bridge    local
f0c46f65d5ee   dmwatch-test-heartbeat   bridge    local
1879a5df6908   docker_gwbridge          bridge    local
665f2e7911f3   host                     host      local
1s23qjcabtlz   ingress                  overlay   swarm
9f5805c8eb61   none                     null      local

  此时已成功创建业务网络和心跳网络dmwatch-test-businessdmwatch-test-heartbeat。创建完成后可以使用如下命令查看网络详情:

[dmdba@VM-8-6-centos ~]$ docker network inspect dmwatch-test-business
[
    {
   
        "Name": "dmwatch-test-business",
        "Id": "870c978be7747a6922eece5ad9eb960e30190fd0cf4891d16126f9b21eb43e43",
        "Created": "2024-08-27T17:27:30.85677936+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
   
            "Driver": "default",
            "Options": {
   },
            "Config": [
                {
   
                    "Subnet": "172.16.1.0/24",
                    "Gateway": "172.16.1.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
   
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
   },
        "Options": {
   },
        "Labels": {
   }
    }
]

[dmdba@VM-8-6-centos ~]$ docker network inspect dmwatch-test-heartbeat
[
    {
   
        "Name": "dmwatch-test-heartbeat",
        "Id": "f0c46f65d5ee0529fead4335f5c34b8c803a248edf8a66f643849412a52c6348",
        "Created": "2024-08-27T17:29:18.804362399+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
   
            "Driver": "default",
            "Options": {
   },
            "Config": [
                {
   
                    "Subnet": "192.168.1.0/24",
                    "Gateway": "192.168.1.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
   
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
   },
        "Options": {
   },
        "Labels": {
   }
    }
]

  可见两个子网的第一个可用设备地址分别都已经作为subnet的Gateway使用,故我们的部署需要从至少第二个可用IP开始分配。根据实际情况调整1.2小节中的集群规划如下:

表2-1 按实际情况调整后的集群规划

A 机器 B 机器
业务 IP 172.16.1.2 172.16.1.3
心跳 IP 192.168.1.2 192.168.1.3
实例名 GRP1_RT_01 GRP1_RT_02
实例端口 5236 5236
MAL 端口 5336 5336
MAL 守护进程端口 5436 5436
守护进程端口 5536 5536
OGUID 45331 45331
守护组 GRP1 GRP1
安装目录 /home/dmdba/dmdbms /home/dmdba/dmdbms
实例目录 /dmdata/data /dmdata/data
归档上限 51200 51200

2.1.2 创建数据库实例并启动服务

  执行如下命令创建数据库实例并启动服务。通过该docker run命令,在初始化时指定连接到dmwatch-test-business:

docker run -d --restart=always --name=GRP1_RT_01 --network dmwatch-test-business --ip 172.16.1.2  --privileged=true -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e PAGE_SIZE=32 -e EXTENT_SIZE=32 -e LOG_SIZE=2048 -e UNICODE_FLAG=1 -e INSTANCE_NAME=GRP1_RT_01 -v GRP1_RT_01:/opt/dmdbms/data dm8_single:dm8_20240715_rev232765_x86_rh6_64

  初始化完成后,Container已经连接到business网络。此时再将容器与heartbeat网络连接并验证,有:

docker network connect --ip 192.168.1.2 dmwatch-test-heartbeat GRP1_RT_01

docker inspect GRP1_RT_01
#只截取Networks部分返回值
"Networks": {
   
                "dmwatch-test-business": {
   
                    "IPAMConfig": {
   
                        "IPv4Address": "172.16.1.2"
                    },
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "02:42:ac:10:01:02",
                    "NetworkID": "870c978be7747a6922eece5ad9eb960e30190fd0cf4891d16126f9b21eb43e43",
                    "EndpointID": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值