前提条件
本服务部署需要的全部组件按安装顺序排列如下:
- MySQL
- Zookeeper
- Docker
部署规划
本产品采用一键安装包的部署方式,安装包包含了后端运行所需的java应用。安装前需要检查、配置好安装所需的环境。安装后配置前端即可访问。
操作步骤
-
查看操作系统版本
cat /etc/os-release;
-
查看系统架构
uname -a;
-
创建目录并挂载磁盘
sudo mkdir -p /dts; # 创建目录 sudo fdisk -l # 查看磁盘,选一块未挂载的/dev/xxx sudo mkdir /dts # 创建挂载目录 sudo mkfs.xfs -f /dev/sde # 创建文件系统,例如选了sde这块盘 /dev/sde /dts xfs defaults 0 0 # 打开 /etc/fstab 文件末尾添加这一行 sudo mount -a # 挂载 df -h # 查看挂载结果
-
创建用户
-
执行以下命令,创建用户
sudo useradd dts;
-
执行以下命令,为用户设置密码
sudo passwd dts;
-
执行以下命令,修改目录权限
sudo chown -R dts:dts /dts;
-
执行以下命令,为用户添加sudoers权限,并设置免密登录
sudo vi /etc/sudoers;
打开该文件,添加以下行:
dts ALL=(ALL) NOPASSWD: ALL
保存退出。
-
为用户开放更多系统资源,打开/etc/security/limits.conf
sudo vi /etc/security/limits.conf
在文件末尾添加如下行:
dts soft nofile 65535 dts hard nofile 65535 dts soft nproc 65535 dts hard nproc 65535 dts soft stack unlimited dts hard stack unlimited dts soft as unlimited dts hard as unlimited
保存并退出。
-
执行以下命令,将dts用户加入root用户组
sudo usermod -a -G root dts;
-
-
解压安装包
-
将部署包拷贝到/dts目录下
sudo cp ctg-paas-dts-2.8.5_P9.tar.gz /dts;
-
修改压缩包权限
sudo chown dts:dts /dts/ctg-paas-dts-2.8.5_P9.tar.gz;
-
切换用户
sudo su dts;
-
进入主目录
cd /dts;
-
解压并进入解压后的目录内
tar zxvf ctg-paas-dts-2.8.5_P9.tar.gz && cd ctg-paas-dts-2.8.5_P9;
-
查看主目录结构
ls -l;
-
查看依赖包目录
ls -l ./pkg
-
-
安装jdk
说明dts基于java 11运行,因此要先安装jdk。
-
进入pkg目录
cd ./pkg;
-
如果是arm架构(鲲鹏机器),则执行如下命令解压
tar zxvf microsoft-jdk-11.0.12.7.1-linux-aarch64.tar.gz
-
如果x86架构(海光机器),则执行如下命令解压
tar zxvf open-jdk-11.0.18+10.tar.gz
-
重命名解压后的目录
mv jdk-11.0.12+7 jdk-11
-
配置java环境变量
vi ~/.bashrc
在文件末尾添加以下几行,保存并退出
export JAVA_HOME=/dts/jdk-11 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
让环境变量生效:
source ~/.bashrc;
查看java版本:
java -version;
-
-
安装telnet
dts的一键部署包,会用telnet命令检查程序是否安装成功,因此需要这个包。
先查看telnet是否有安装:
rpm -qa | grep telnet;
如果有输出,则不用再安装,否则执行以下安装命令,(以x86架构为例)
sudo rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm; sudo rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm; sudo rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm;
-
安装openssl10
sudo rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm;
-
后端部署
-
部署包目录架构
下面为执行tree命令输出:
ctg-paas-dts-2.8.5_P9-arrch64 ├── api │ └── V2_8_0_001__BASE_INIT.sql ├── arm64 │ └── install ├── config │ ├── application.yml │ ├── mysqlport.cnf │ ├── otter.properties │ └── start.sh ├── install ├── install.cfg ├── pkg │ ├── compat-openssl10-1.0.2o-3.el8.aarch64.rpm │ ├── docker-24.0.5.arrch64.tgz │ ├── manager.web.deploy-2.8.5_P9.tar.gz │ ├── microsoft-jdk-11.0.12.7.1-linux-aarch64.tar.gz │ ├── mysql-5.7.49-2023.q3.2.aarch64.tar.gz │ ├── ora2pg-ty4.tar.gz │ ├── telnet-0.17-76.el8.aarch64.rpm │ ├── telnet-server-0.17-76.el8.aarch64.rpm │ ├── xinetd-2.3.15-24.el8.aarch64.rpm │ └── zookeeper-3.4.13.tar.gz ├── start ├── stop ├── tools │ ├── aarch64 │ │ ├── go │ │ ├── jdk │ │ │ ├── copy-jdk-configs-3.7-3.ky10.noarch.rpm │ │ │ ├── giflib-5.2.1-1.ky10.aarch64.rpm │ │ │ ├── java-11-openjdk-11.0.6.10-4.ky10.ky10.aarch64.rpm │ │ │ ├── java-11-openjdk-devel-11.0.6.10-4.ky10.ky10.aarch64.rpm │ │ │ ├── java-11-openjdk-headless-11.0.6.10-4.ky10.ky10.aarch64.rpm │ │ │ ├── javapackages-filesystem-5.3.0-2.ky10.noarch.rpm │ │ │ ├── lksctp-tools-1.0.16-11.ky10.aarch64.rpm │ │ │ ├── lua-posix-33.3.1-12.ky10.aarch64.rpm │ │ │ ├── tzdata-java-2020a-1.p01.ky10.noarch.rpm │ │ │ ├── xorg-x11-fonts-others-7.5-24.ky10.noarch.rpm │ │ │ └── xorg-x11-font-utils-7.5-42.ky10.aarch64.rpm │ │ ├── mysql │ │ └── net │ │ └── telnet-0.17-76.ky10.aarch64.rpm │ ├── ELF │ │ └── mysql │ └── secureHandler └── uninstall
-
填写配置文件
配置文件install.cfg模板如下
{ "version": "DTS版本号", "deployPath": "DTS统一部署路径, 需确保目录已经存在且具备正常的读写权限", "db": { "mode": "common", "machine": [ { "username": "DTS管理库所在机器对应登录账号", "password": "DTS管理库所在机器对应登录账号, 明文", "ip": "DTS管理库所在机器对应IP", "port": "DTS管理库所在机器ssh端口" } ], "deploy": "是否部署新的管理库,int类型.如果复用已有库填0, 否则填1. 当取值0时, 上述username, password, port可不填", "auth": { "dbPort": "DTS管理库服务端口, int类型", "superPassword": "DTS管理库root账号对应初始密码, 明文. 如上述deploy取值0, 则可不填", "dbUser": "DTS管理库初始账号, 如上述deploy取值0, 则必须确保该账号已经存在", "dbPassword": "DTS管理库初始账号对应密码, 明文", "dbName": "DTS管理库初始schema" } }, "manager": { "mode": "common", "machine": [ { "username": "DTS控制台所在机器对应登录账号", "password": "DTS控制台所在机器对应登录账号, 明文", "ip": "DTS控制台所在机器对应IP", "port": "DTS控制台所在机器ssh端口" } ], "deploy": 1, "httpPort": "DTS控制台http服务端口, int类型", "httpsPort": "DTS控制台https服务端口, int类型", "conPort": "DTS控制台rpc服务端口, int类型", "specification": "DTS控制台规格信息, 可取值范围micro,min,standard,medium,large.注意:不同的规格在部署时需分配不同的内存,可提供不同的性能参数,具体规格说明见下面附录.一般情况下建议取值min", "prodInstId": "", "allowWebDomain": "" }, "zookeeper": { "mode": "common", "machine": [ { "username": "DTS调度节点(zookeeper)1所在机器对应登录账号", "password": "DTS调度节点(zookeeper)1所在机器对应登录账号, 明文", "ip": "DTS调度节点(zookeeper)1所在机器对应IP", "port": "DTS调度节点(zookeeper)1所在机器ssh端口" }, { "username": "DTS调度节点(zookeeper)2所在机器对应登录账号", "password": "DTS调度节点(zookeeper)2所在机器对应登录账号, 明文", "ip": "DTS调度节点(zookeeper)2所在机器对应IP", "port": "DTS调度节点(zookeeper)2所在机器ssh端口" }, { "username": "DTS调度节点(zookeeper)3所在机器对应登录账号", "password": "DTS调度节点(zookeeper)3所在机器对应登录账号, 明文", "ip": "DTS调度节点(zookeeper)3所在机器对应IP", "port": "DTS调度节点(zookeeper)3所在机器ssh端口" } ], "deploy": "是否部署新的zookeeper,int类型. 如复用已有zookeeper则填0, 否则填1. 当取值0时, 上述username, password, port可不填", "zkPort": "zookeeper对应服务端口,int类型", "zkElection": "zookeeper对应选举端口,int类型", "zkCommunication": "zookeeper对应通信端口,int类型" }, "scene": "standalone" }
先备份一下:
cp install.cfg install.cfg.sample;
填写配置文件。
arm架构额外操作:如果是arm架构,则将arm64目录下的install文件拷贝到当前目录(x86不做此步骤)
cp ./arm64/install ./
-
执行一键部署脚本
./install
如果部署失败,则执行
chmod +x uninstall; ./uninstall;
解决问题后,重新执行一键部署。
-
对接dcp
修改application.yml配置,注意需要修改的配置项如下,其他不用管
配置项 描述 填写示例 server.servlet.context-path 后端服务路径,和dcp约定,必须填写为/dts /dts spring.applicaton.name 在dcp中的组件标识,必须填写为dts dts spring.cloud.inetutils.preferred-networks 让dcp进行服务发现后的ip地址,如果dts所属服务器是多ip,要注意哪个ip是和dcp通的,这里就填写那个ip地址 182.42.233.200 spring.cloud.zookeeper.enabled 表示会去连zk,必须填写true true spring.cloud.zookeeper.connect-string dcp给出的zk的连接地址 182.42.233.200:2181 spring.cloud.zookeeper.discovery.root dcp给出的组件的注册路径 /services/gctest spring.cloud.zookeeper.max-retries 连接zk的重试次数,不配置默认为10 建议填写300 spring.cloud.zookeeper.max-sleep-ms 每次重试的等待时间,默认为500 建议填写1000 iam.server.responseApiUrl dcp给出的回单地址 http://182.42.233.200:9011/teledb-dcp/v1/workorder/notifyResult 示例如下:
server: servlet: context-path: /dts https: ssl: enabled: false port: 17971 key-store-type: PKCS12 key-store: keystore/dts_server.p12 key-store-password: * key-alias: dts_server enabled-protocols: TLSv1,TLSv1.1,TLSv1.2 ciphers: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA mybatis: type-aliases-package: com.chinatelecom.dts.shared.common.model mapper-locations: - classpath:dao/*.xml configuration: map-underscore-to-camel-case: true spring: application: name: dts cloud: inetutils: preferred-networks: 182.42.233.200 loadbalancer: ribbon: enabled: false compatibility-verifier: enabled: false zookeeper: enabled: true connect-string: 182.42.233.200:2181 max-retries: 300 max-sleep-ms: 1000 discovery: prefer-ip-address: true root: /services/gctest iam.server.url: http://172.31.208.10:8777/iam iam.server.syncApi: /openapi/v1/users/ctyun/sync iam.server.tenants: /openapi/v1/tenants iam.server.versionAgentUrl: /openapi/v1/versions/projectVersion iam.server.logUrl: http://172.31.208.10:8777 iam.server.responseApiUrl: http://182.42.233.200:9011/teledb-dcp/v1/workorder/notifyResult api: server: disable: true cluster: xxx:8901 key: TestApiServer digest: 45783632523044543459453955776E704767676F47773D3D
修改otter.properties配置中,otter.run.mode=private_dcp,表示私有云dcp运行环境,示例如下
otter.manager.monitor.email.host = smtp.chinatelecom.cn otter.manager.monitor.email.password = otter.manager.monitor.email.receiver = rc@wq.com otter.manager.monitor.email.security = tls otter.manager.monitor.email.stmp.port = 465 otter.manager.monitor.email.switch = off otter.manager.monitor.email.username = otter.run.mode = private_dcp otter.zookeeper.aclEnable = true otter.zookeeper.authConfig = dts:6f562b63312b6b5a6c4f38304c75436d4576693679413d3d otter.zookeeper.cluster.default = 182.42.233.200:17973 otter.zookeeper.sessionTimeout = 90000
停止manager服务
./stop.sh
启动manager服务
./start.sh
-
前端部署
dcp会给一个前端部署目录,只要把前端文件拷贝到该目录下即可。例如dcp给出的目录为/dcp/teledb-dcp-for-dms/teledb-dts,那么
cd /dcp/teledb-dcp-for-dms/teledb-dts;
拷贝前端压缩包到console目录
cp teledb-dts.zip /dcp/teledb-dcp-for-dms/teledb-dts;
解压teledb-dts.zip,解压后的文件目录名为teledb-dts
unzip teledb-dts-zip;
重命名teledb-dts
mv teledb-dts console;
-
导入ADAM镜像
前提是部署好docker服务,然后导入ADAM镜像,注意要在DTS工作节点运行的那台机器上导入
docker load --input ora2pg-ty4.tar latest
-
添加开机启动
- 给与可执行权限
sudo chmod +x auto-restart.sh;
- 打开/etc/cron.allow文件,在末尾添加上dts,允许dts用户执行crontab命令,保存退出
sudo vi /etc/cron.allow;
- 编辑crontab
crontab -e;
- 在末尾添加上自启命令,保存退出
@reboot /dts/dts-install/2.8.5/auto-restart.sh /dts/dts-install/2.8.5/manager > /dts/dts-install/2.8.5/restart.log 2>&1
- 给与可执行权限
安装后校验
从dcp控制台跳转访问dts服务,按F12观察网络请求是否正常,如果返回码是200,则表示部署成功。
卸载服务
- 进入部署文件夹目录下
cd ctg-paas-dts-2.8.5_P9;
- 执行指令卸载服务
chmod +x uninstall;