注册
搭建DMDSC集群 手动部署方式和自动部署方式分享与对比
专栏/培训园地/ 文章详情 /

搭建DMDSC集群 手动部署方式和自动部署方式分享与对比

DM_myysp 2024/03/27 943 0 1
摘要

达梦数据共享集群DMDSC是一款具有高可用、自动负载均衡,高性能存储管理等自研的共享存储集群,同时达梦也提供了针对DSC的手动配置部署及自动部署方式,下面分别使用两种部署方式学下下DMDSC搭建。

手动配置搭建DSC测试

1.环境准备:

搭建环境:VMware Workstation 10 Pro

主机名 业务IP 心跳IP 硬盘大小 内存大小 操作系统
rac01 192.168.2.4 40.10.2.4 30G 1G 麒麟3.0
rac02 192.168.2.9 40.10.2.9 30G 1G 麒麟3.0

共享存储规划 30G
划分 大小
DMDCR 500M
DMVOTE 500M
DMLOG 8192M
DMDATA 剩余空间

软件环境:ky3.0
达梦数据库V8.1

2.共享存储配置:

1、初始化共享存储

执行CMD,然后运行。
D:
cd Program Files\VMware\VMware Workstation
vmware-vdiskmanager.exe -c -s 20Gb -a lsilogic -t 2 "D:\Virtual Machine\DMASM.vmdk"
Creating disk ' D:\Virtual Machine\DMASM.vmdk '
Create: 100% done.
Virtual disk creation successful.

2、两台虚拟机添加共享存储

两台虚拟机上进行下面操作
image.png
image.png
image.png
image.png
image.png
image.png

3、修改虚拟机配置

修改两台虚拟机vmx文件
在虚拟机的vmx文件最后添加如下配置信息:
scsi1.sharedBus= "virtual"
disk.locking= "false"
diskLib.dataCacheMaxSize= "0"
diskLib.dataCacheMaxReadAheadSize= "0"
diskLib.DataCacheMinReadAheadSize= "0"
diskLib.dataCachePageSize= "4096"
diskLib.maxUnsyncedWrites= "0"

4、启动两台虚拟机

分别查看fdisk -l 查看挂接状态,两边都能看到说明两台添加成功。
image.png

5、磁盘划分


分区说明:
1 DCR(DM Clusterware Registry)
DCR是DM集群注册表的简称,用于存储、维护集群配置的详细信息,整个集群环境共享DCR配置信息,包括DMDSC、DMASM、DMCSS资源,包括实例名、监听端口、集群中故障节点信息等。DCR必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个DCR磁盘。

2 表决磁盘(Voting Disk)
表决磁盘记录了集群成员信息,DM集群通过Voting Disk进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用Voting Disk来确定哪些DMDSC节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启动、节点故障、节点重加入等)DMCSS通过Voting Disk传递控制命令,通知节点执行相应命令。Voting Disk必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持裸设备。在一个集群环境中只能配置一个表决磁盘。


在共享磁盘上裸设备划分(单节点上执行)

  1. 输入 fdisk /dev/sdb
  2. 依次输入 n p 1 回车 +500M 回车,完成第一块磁盘划分
  3. 依次输入 n p 2 回车 +500M 回车,完成第二块磁盘划分
  4. 依次输入 n p 3 回车 +8192M 回车,完成第三块磁盘划分(最大大于2048*4=8192M以上,建议 16384M以上,例如20G)
  5. 依次输入 n p 4(默认选) 回车 回车 回车,完成第四块磁盘划分
    W保存,fdisk –l检查。
    如下划分为4块为正常。暂时只有一边能看到
    image.png
    只有一边能看到,以下为共享磁盘配置失败
    image.png
    image.png
    两边能同时看到分区,以下为共享磁盘配置成功
    image.png
    image.png

以下两节点都需要执行
partprobe /dev/sdb
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
保存后start_udev
image.png
两台虚拟机reboot 生效后。
查看:blockdev --getsize64 /dev/raw/raw1
image.png
image.png

3.数据库软件安装

1、两台虚拟机安装数据库软件:

安装目录:/home/dmdba/dm/
dsc配置文件目录:/home/dmdba/dm/dsc_config
上传dmdcr_cfg.ini (可按照规划提前配置好)

[root@rac01 dsc_config]# pwd
/home/dmdba/dm/dsc_config
[root@rac01 dsc_config]# cat dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 10
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 10.41.6.151 #心跳地址
DCR_EP_PORT = 9342
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.41.6.152 #心跳地址
DCR_EP_PORT = 9343
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 10
[GRP_ASM]
DCR_EP_NAME = ASM0 #ASM 的节点名必须和 dmmal.ini 里的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.1.151 #业务地址,绑定 VIP 的网卡对应的物理 IP 地址
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1 #ASM 的节点名必须和 dmmal.ini 里的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.1.152 #业务地址,绑定 VIP 的网卡对应的物理 IP 地址
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_RAC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 10
[GRP_RAC]
DCR_EP_NAME = RAC0 #DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236 #DB 的 DCR_EP_PORT与 dm.ini 中的 PORT_NUM 不一致时,DB 端口以 DCR_EP_PORT 为准
DCR_CHECK_PORT = 9741
[GRP_RAC]
DCR_EP_NAME = RAC1 #DB 的节点名必须和 dm.ini 里的 INSTANCE_NAME 保持一致
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236 #DB 的 DCR_EP_PORT与 dm.ini 中的 PORT_NUM 不一致时,DB 端口以 DCR_EP_PORT 为准
DCR_CHECK_PORT = 9742

2、初始化磁盘组:

其中一个节点执行
cd /home/dmdba/dm/dmdbms/bin/
./dmasmcmd
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'
init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dm/dsc_config/dmdcr_cfg.ini' identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/dm/dsc_config/dmdcr_cfg.ini'
image.png
校验 DCR是否成功:
check dcrdisk '/dev/raw/raw1' 校验 DCR 磁盘信息是否正常,根据打印success来判断
image.png
注意:初始化成功不代表里面配置完全正确,这里遇到过初始化成功但是dmdcr_cfg.ini里面由于备注忘记带#导致后面asm初始化失败的情况,建议初始化完成后使用下面命令检查参数是否一致
核对检查:
./dmasmcmd
export dcrdisk '/dev/raw/raw1' to '/home/dmdba/dm/dmdcr_cfg01.ini'

3、配置dmasvrmal.ini

cd /home/dmdba/dm/dsc_config
vi dmasvrmal.ini 两节点配置文件必须相同
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 10.41.6.151 #心跳IP
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 10.41.6.152 #心跳IP
MAL_PORT = 7237

4、配置 dmdcr.ini

配置 dmdcr.ini 。AB虚拟机DMDCR_SEQNO不同,其他相同,rac01虚拟机值为0,rac02虚拟机为1
这里做测试重启参数都注释掉了,实际中按需求配置
cd /home/dmdba/dm/dsc_config
vi dmdcr.ini

DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dm/dsc_config/dmasvrmal.ini
DMDCR_SEQNO = 0

#ASM重启参数,命令行方式启动
#DMDCR_ASM_RESTART_INTERVAL = 5
#DMDCR_ASM_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmasmsvrd start
#DB重启参数,命令行方式启动
#DMDCR_DB_RESTART_INTERVAL = 5
#DMDCR_DB_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserverd start
#DMDCR_AUTO_OPEN_CHECK= 30

5、创建DMASM磁盘组

两台虚拟机前台启动CSS,ASM

cd /home/dmdba/dm/dmdbms/bin/
./dmcss DCR_INI=/home/dmdba/dm/dsc_config/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dm/dsc_config/dmdcr.ini
image.png
image.png

使用dmdba用户
image.png
image.png

#######启动监视器查看
cd /home/dmdba/dm/dmdbms/bin/
./dmcssm ini_path=/home/dmdba/dm/dsc_config/dmcssm.ini
image.png
image.png

然后创建DMASM磁盘组
cd /home/dmdba/dm/dmdbms/bin/
./dmasmtool DCR_INI=/home/dmdba/dm/dsc_config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

要在控制节点上连接,否则报无效参数
image.png

6、初始化实例

[root@rac01 dsc_config]# cat dminit.ini
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_size = 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 2048
page_size= 32
extent_size=16
case_sensitive=Y
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
[RAC0]
config_path = /home/dmdba/dm/dsc_config/rac0_config
port_num = 5236
mal_host = 10.41.6.151
mal_port = 9340
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log
[RAC1]
config_path = /home/dmdba/dm/dsc_config/rac1_config
port_num = 5236
mal_host = 10.41.6.152
mal_port = 9341
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log

终端执行如下命令:
cd /home/dmdba/dm/dmdbms/bin
./dminit control=/home/dmdba/dm/dsc_config/dminit.ini
注意:LOG总大小不要超过DMLOG目录大小,否则初始化失败。
image.png
image.png
image.png
初始化完成后,拷贝生成的rac1_config目录到rac02节点对应目录
image.png

根据需要修改dm.ini值(这里开启归档和修改内存为1024)

7、配置两台虚拟机归档目录和dmarch.ini

[root@rac01 rac0_config]# cat dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/rac/arch_0
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 5120
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = RAC1
ARCH_INCOMING_PATH = /dbarch/rac/arch_0_remote
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 5120
[root@rac02 rac1_config]# more dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/rac/arch_1
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 5120
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = RAC0
ARCH_INCOMING_PATH = /dbarch/rac/arch_1_remote
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 5120

检查并创建对应的归档和远程归档目录:
mkdir -p /dbarch/rac/arch_1 /dbarch/rac/arch_1_remote

4.前台启动两节点dmserver

客户端配置dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DSC=(192.168.2.4:5236,192.168.2.9:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(1000)
loadBalance=(true)
loadBalanceFreq=(60000)
loadBalancePercent=(10)
LOGIN_ENCRYPT=0
前台启动:
./dmserver /home/dmdba/dm/dsc_config/rac0_config/dm.ini dcr_ini=/home/dmdba/dm/dsc_config/dmdcr.ini

./dmserver /home/dmdba/dm/dsc_config/rac1_config/dm.ini dcr_ini=/home/dmdba/dm/dsc_config/dmdcr.ini
1 前台启动css
image.png
2 前台启动asm
image.png
image.png

5.客户端测试连接

使用disql连接登录两节点,两边日志提示SYSTEM IS READY后可正常对外提供服务

6.启停脚本

复制上面三个脚本修改里面的ini路径,这里没有设置开机自启,可以编写个脚本手动实现启停
[root@rac01 dm_shell]# cat dsc_start.sh
#!/bin/bash
/home/dmdba/dm/dm_shell/DmCSSService start
sleep 10
/home/dmdba/dm/dm_shell/DmASMSvrService start
sleep 20
/home/dmdba/dm/dm_shell/DmService start
[root@rac01 dm_shell]# cat dsc_stop.sh
#!/bin/bash
/home/dmdba/dm/dm_shell/DmService stop
sleep 10
/home/dmdba/dm/dm_shell/DmASMSvrService stop
sleep 20
/home/dmdba/dm/dm_shell/DmCSSService stop

启停原则:
启动顺序:DmCSSService →DmASMSvrService →DmService
停止顺序:DmService →DmASMSvrService →DmCSSService
注:两节点同时进行,单启一节点无法对外提供服务

7.配置启动dmcssm 监视器

生产环境建议配置监听器到第三台服务器,本次测试为rac01节点
[root@rac01 bin]# cat /home/dmdba/dm/dsc_config/dmcssm.ini
CSSM_OGUID = 63635
CSSM_CSS_IP = 10.41.6.151:9341
CSSM_CSS_IP = 10.41.6.152:9343
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 1024
注:CSSM_OGUID和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
启动:
./dmcssm INI_PATH=/home/dmdba/dm/dsc_config/dmcssm.ini

自动部署工具

使用自动部署脚本工具-DSC集群自动部署工具,可进行自动化DMDSC部署,首先需要部署的机器上(可以是当中一台节点或者一台同网络工作站),满足python版本大于 2.7以上;glibc要大于2.7以上才能正常运行。

1、python版本不满足要求

image.png
Python查看版本后,更新升级后,满足要求
image.png

2、 glibc版本不满要求

image.png
image.png
查看系统能支持的所有glibc版本
image.png
使用满足要求的glibc版本安装,make && make install
image.png
strings /lib64/libc.so.6 |grep GLIBC_
image.png
安装完成后,再执行安装脚本。

3、开始执行自动部署

开始执行自动安装,首先要保证两节点无其他dmserver服务,dmdba用户提前创建好。
输入01,执行
image.png
输入11,执行
image.png
输入12 执行如下:
image.png
输入13 执行如下
image.png

再一次输入141,143,15执行
image.png

输入161执行报错,原因为test.conf里之前sys_path写成 +DATA/data ,改成实际对应data即可
image.png

修改dminit.ini重新初始化
image.png
输入164,执行
image.png
输入145,执行
image.png

最后进行验证,两边同时启动DSC
Cat /etc/dm_svc.conf
image.png
两边能同时连上库
image.png

4、监视器中查看:正常状态

./dmcssm INI_PATH=/home/dmdba/dm/rac_config/DSC0/dmcssm.ini

5、最后安全停止关机

image.png
对于自动停止 DmAsm服务器停止超时问题,可以将脚本中kill -10 改为kill -9即可。

总结:通过手动配置搭建,配置文件较多,如果前期没有规划好,配置中出现小错误很难检查出来;
通过脚本工具搭建,可以快速方便进行搭建,但一定要注意搭好后自己的检查下各配置文件中参数,这些参数因为不是手动配置,所以最好还要再做一次确认。
最后, 无论使用哪种注意排查各个阶段运行日志,可能会有错误信息,做好最后的集群确认。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服