前提條件
本服務部署需要的全部組件按安裝順序排列如下:
- 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給出的回單地址 //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: //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: //172.31.208.10:8777 iam.server.responseApiUrl: //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;