Print

【MVS】达梦数据迁移平台注册 DFMagent 系统服务自启动

17小时前 发表

问题描述

达梦数据迁移平台DFM的AGNET不能自启动问题;

 

环境简介:

DMDFM V5.02.12

操作系统:kylin v10 sp3

问题现象:

通过 DMDFM 远程部署节点 195 上的 DRSAgent ,已选择 【注册系统服务】,部署用户为 dmdba, 但在节点 195 系统上无 Agent 自启动系统服务存在,导致 DRSAgent 需要手动启动。

过程分析

 

查看DMDFM 服务端上 DFMAGENT 服务注册过程如下:

root用户执行如下命令注册系统服务

# /home/dmdba/dmdrs5/scripts/root/root_installer.sh

查看root_installer.sh文件内容如下,需要使用service_installer.sh文件

 

[dmdba@DSCMON dm8]$ cat /home/dmdba/dmdrs5/scripts/root/root_installer.sh

#!/bin/sh

 

#run by root

RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'`

if [ ${RUID} != "0" ]

then

         echo "必须以 root身份执行此脚本!"

        exit 1

fi

 

 

echo "创建DmServiceDFDB服务"

"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/db/bin/DmServiceDFDB"

 

echo "创建DfmWebService服务"

"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/web/DfmWebService"

 

echo "创建DfmAgentService服务"

"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/agent/DfmAgentService"

 

echo "启动DmServiceDFDB服务"

systemctl start DmServiceDFDB.service

 

echo "启动DfmWebService服务"

systemctl start DfmWebService.service

 

echo "启动DfmAgentService服务"

 

systemctl start DfmAgentService.service

 

 

其执行输出如下:

[root@DSCMON drs]# /home/dmdba/dmdrs5/scripts/root/root_installer.sh

创建DmServiceDFDB服务

Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDFDB.service → /usr/lib/systemd/system/DmServiceDFDB.service.

创建服务(DmServiceDFDB)完成

创建DfmWebService服务

Created symlink /etc/systemd/system/multi-user.target.wants/DfmWebService.service → /usr/lib/systemd/system/DfmWebService.service.

创建服务(DfmWebService)完成

创建DfmAgentService服务

Created symlink /etc/systemd/system/multi-user.target.wants/DfmAgentService.service → /usr/lib/systemd/system/DfmAgentService.service.

 

创建服务(DfmAgentService)完成

远端 agent 目录下的service_installer.sh 内容为空。但在 DMDFM 服务端上service_installer.sh 有内容,且 DFMAgent 服务注册正常,能自启动。

[root@DMDSC-1 agent]# ll service_installer.sh

 

-rwxr--r-- 1 dmdba dmdba         0  7月  5 20:51 service_installer.sh

分析结论:目标端上service_installer.sh 为空导致 DFMAgent 注册系统服务失败

解决方法

 

问题解决-手动创建 systemd 单元文件

 

将各个节点的原文件DfmAgentServiceagent_XXX 重命名为通用名,便于批量更改;

 

注意:以root 用户执行如下操作:

 

# 查看当前节点的启动文件脚本名

ll /home/dmdba/dmdrs/agent/DfmAgentServiceagent*

如: /home/dmdba/dmdrs/agent/DfmAgentServiceagent_195

 

# 复制重命名为标准文件名并授权

cp /home/dmdba/dmdrs/agent/DfmAgentServiceagent_195 /home/dmdba/dmdrs/agent/DfmAgentServiceagent

 

chown dmdba:dmdba /home/dmdba/dmdrs/agent/DfmAgentServiceagent

 

创建systemd服务单元文件:

# vi /usr/lib/systemd/system/DfmAgentServiceagent.service

 

[Unit]

Description=DfmAgentServiceagent

 

[Service]

Type=forking

PIDFile=/home/dmdba/dmdrs/agent/pids/DfmAgentServiceagent.pid

ExecStart=/home/dmdba/dmdrs/agent/DfmAgentServiceagent start

ExecReload=/home/dmdba/dmdrs/agent/DfmAgentServiceagent restart

ExecStop=/home/dmdba/dmdrs/agent/DfmAgentServiceagent stop

PrivateTmp=true

User=dmdba

 

[Install]

 

WantedBy=multi-user.target

 

 

生效命令

# 重载systemd配置

systemctl daemon-reload

 

# 清理残留pid文件

rm -f /home/dmdba/dmdrs/agent/pids/*.pid

 

# 重启服务

systemctl restart DfmAgentServiceagent.service

 

# 查看状态

systemctl status DfmAgentServiceagent.service

 

# 设置为自动启动

 

systemctl enable DfmAgentServiceagent.service