Skip to content

Commit

Permalink
[Improvement][datasophon-init] datasophon-init Process improvement an…
Browse files Browse the repository at this point in the history
…d documentation optimization (#413)

* [Improvement][datasophon-init] 流程完善

* [Improvement][datasophon-init] 流程完善
  • Loading branch information
liu-hai authored Sep 14, 2023
1 parent 947b5c7 commit 3b54112
Show file tree
Hide file tree
Showing 8 changed files with 115 additions and 86 deletions.
99 changes: 55 additions & 44 deletions datasophon-init/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,46 +18,28 @@
</p>
<h3>觉得不错的话,star fork下,欢迎社区开发者共建DataSophon</h3>

# dataSophon-init使用说明
# dataSophon-init模块使用说明

前言:当前版本是根据centos8.5和openEuler-22.03进行开发适配的,其它类型和版本的操作系统目前没有进行详细的测试验证可能存在兼容性问题,需要对shell脚本和本地YUM离线安装包进行适配
1、将datasophon-init整个目录的内容放到规划的集群主节点的/data目录下(mkdir /data);
2、将packages.tar.gz 离线依赖库移到主节点的 /data/datasophon-init下并解压;下载链接:https://pan.baidu.com/s/1iqudVwDgg2x_OO35VLkkSg 提取码:6zrz
3、在未连接互联网的情况下预备安装datasophon的服务器已经配置好离线yum源,能够通过yum命令安装依赖包(此步骤为必须,因为初始化脚本中使用了"yum -y install xxxx"的方式安装依赖,如果没有yum源会导致安装失败 );
离线YUM源配置方法(Ps:能连公网的用户就不用配置离线yum源了,直接配置为公共的源,该步骤都是在主节点上操作):
详情可查看配置脚本:init-private-yum-library-${initOS}.sh
①首先创建目录 'mkdir -p /data/private-yum-library_temp'然后将和操作系统匹配的操作系统iso文件移动到/data/目录下;
②在/data目录下创建private-yum-library目录:'mkdir -p /data/private-yum-library';
③执行挂载操作系统命令:mount -o loop /data/openEuler-22.03-LTS-SP2-everything-x86_64-dvd.iso /data/private-yum-library_temp,这种挂载重启服务器之后会失效,所以我们挂载完成后将ios内的文件全部拷贝出来做离线yum源用;
④在private-yum-library目录下创建两个子目录 repo 和 epel;
⑤将private-yum-library_temp目录下的文件全部拷贝到/data/private-yum-library/repo目录下:cp -r /data/private-yum-library_temp/* /data/private-yum-library/repo,另外不同操作系统挂载后所产生的目录不同,比如centos8的repo有两个BaseOS和AppStream;
⑥将原本的yum源的配置文件进行备份 :mkdir -p /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak;
⑦剩下的工作就交给脚本工具自己去处理了,epel目录是为了给需要自行配置离线eprl源的用户准备的,如果能配置epel建议进行配置,因为很多操作系统额外的很多工具包都在对应的epel中;
## 一、使用前须知
当前组件的版本是根据centos8.5和openEuler-22.03进行开发适配的,其它类型和版本的操作系统目前没有进行详细的测试验证可能存在兼容性问题,需要对shell脚本和本地YUM离线安装包进行适配,主要是因为不同的操作系统一些依赖包不一样;

4、集群NTP时钟默认使用Chrony,如使用其它的方式请自行安装配置,并将sbin/init.sh 脚本中的 initALL() 方法中的‘initAllNtpChronyService’ 和 ‘checkNtpChronyService’方法注释掉避免重复安装;
5、脚本的初始化需要用到python环境,主要用到pssh进行集群间的命令执行控制,目前packages目录中pssh.tar.gz中已经内置了三个安装包:
pssh-2.3.1-5.el7.noarch.rpm 需要python2.7的支持;
pssh-2.3.1-29.el8.noarch.rpm 需要python3.6的支持;
pssh-2.3.4-1.el9.noarch.rpm 需要python3.9的支持;
Centos7和8中的repo中已经存在对应的rpm格式的pssh包了,目前openEuler22.03中还没有pssh相关的安装包,
其它版本pssh的rpm包下载工具地址:http://rpmfind.net/linux/rpm2html/search.php?query=pssh,可以根据操作系统和python版本进行适配
6、服务器操作系统的iso文件建议使用everything版本的,这样包含的依赖包更全一点;
## 二、组件说明

# dataSophon-init目录结构如下:
### dataSophon-init目录结构如下:
[root@localhost datasophon-init]# ls -l
总用量 8
drwxr-xr-x 2 root root 4096 8月 10 17:09 bin
drwxr-xr-x 2 root root 99 7月 28 16:10 config
drwxr-xr-x 8 root root 4096 8月 9 13:47 packages
drwxr-xr-x 2 root root 189 7月 27 11:35 remove
drwxr-xr-x 3 root root 50 8月 10 20:02 sbin
drwxr-xr-x 2 root root 70 8月 7 10:54 sql
drwxr-xr-x 2 root root 70 8月 7 10:54 sql


## 上面的各个目录解释如下:
### 上面的各个目录解释如下:

* bin:datasophon 服务器集群环境配置初始化程序脚本(单个模块初始化脚本所在目录,无需手动管理);
* config:datasophon 服务器集群环境一键初始化所需配置文件目录,需要用户手动修改;
* bin:datasophon服务器集群环境配置初始化程序脚本(单个模块初始化脚本所在目录,无需手动管理);
* config:datasophon服务器集群环境一键初始化所需配置文件目录,需要用户手动修改;
* packages:初始化过程需要的依赖安装包存放目录;
* remove:卸载环境脚本;
* sbin:一键初始化环境脚本所在目录;
Expand All @@ -66,16 +48,16 @@ drwxr-xr-x 2 root root 70 8月 7 10:54 sql

### 在 config 目录下面有三个配置文件:
* init.properties:主要配置私有化 yum 源安装节点信息、namp 安装节点信息、mysql 数据库安装节点信息、修复机器总数、服务器操作系统类型、以及修复模块日志存放位置。用户根据需要自行修改相关配置项;
* init-host-info.properties:节点全量修复,需要配置此文件,具体配置所有节点内网 Ip、密码、端口号以及主机名;
* init-host-info-add.properties:集群新增节点时,需要配置此文件,具体配置新增节点内网 Ip、密码、端口号以及主机名;
* init-host-info.properties:节点全量初始化,需要配置此文件,具体配置所有节点内网 Ip、密码、端口号以及主机名;
* init-host-info-add.properties:集群新增节点初始化时,需要配置此文件,具体配置新增节点内网 Ip、密码、端口号以及主机名;

### init.properties 说明
#### init.properties 说明

* yum.repo.need:填写是否需要部署私有化yum源(true:需要/false:不需要,如服务器不能连接外网必须部署私有化yum源);
* yum.repo.need:填写是否需要部署私有化yum源(true:需要/false:不需要,如服务器不能连接外网必须部署私有化yum源用来离线安装所需的rpm依赖);
* yum.repo.host.ip:填写即将部署私有化yum源的节点的内网IP(即执行init脚本的节点IP,推荐在主节点上进行);
* namp.server.ip=:填写未来要部署的datasophon管理端的节点内网IP;
* namp.server.ip:填写未来要部署的datasophon管理端的节点内网IP;
* namp.server.port:填写未来要部署的datasophon管理端节点的SSH端口号,默认22;
* namp.server.password:填写未来要部署的datasophon管理端节点的密码,这个密码最好不要有特殊字符比如‘,’、‘$’
* namp.server.password:填写未来要部署的datasophon管理端节点的密码,这个密码最好不要有特殊字符比如‘,’、‘$’等以免因为特殊符号的原因导致认证失败
* ntp.master.ip: 填写未来要部署ntp时钟同步的主节点服务器IP(推荐主节点);
* mysql.ip: 填写未来要部署mysql数据库的节点服务器IP(推荐主节点);
* mysql.host.ssh.port: 填写未来要部署mysql数据库的节点服务器SSH端口,默认为22;
Expand All @@ -84,46 +66,75 @@ drwxr-xr-x 2 root root 70 8月 7 10:54 sql
* init.host.num: 填写未来要初始化的服务器数量;
* init.add.host.num: 填写未来要初始化的新增服务器节点数量,全量初始化时无需修改;
* init.log.dir :设置初始化服务器环境时日志存放目录;
* init.os :填写服务器操作系统类型openEuler/centos8/centos7......
* init.os :填写服务器操作系统类型openEulercentos8;

### init-host-info.properties 说明
#### init-host-info.properties 说明

* dataSophon.ip.i=172.31.51.194 #预备安装dataSophon集群的节点内网IP(i表示1-n的取值,n为集群节点数量);
* dataSophon.password.i=xxxxx #预备安装dataSophon集群的节点的登录密码;
* dataSophon.ssh.port.i=22 #预备安装dataSophon集群的节点的SSH端口默认22;
* dataSophon.ssh.port.hostname.i=dataSophon01 #预备安装dataSophon集群的节点的主机名;

### init-host-info-add.properties 说明
#### init-host-info-add.properties 说明(需要对新增的节点进行初始化时才需要配置此文件 ,可以新增1-n个)

* dataSophon.ip.i=172.31.51.162 #预备新增dataSophon集群的节点内网IP(i表示1-n的取值,n为集群节点数量);
* dataSophon.password.i=xxxxx #预备新增安装dataSophon集群的节点的登录密码;
* dataSophon.ssh.port.i=22 #预备新增安装dataSophon集群的节点的SSH端口默认22;
* dataSophon.ssh.port.hostname.i=dataSophon05 #预备新增安装dataSophon集群的节点的主机名;

## 三、组件使用说明(以下为针对首次使用)

1、将datasophon-init整个目录的内容放到规划的集群主节点的/data目录下(mkdir /data);
2、将packages.tar.gz 离线依赖库移到主节点的 /data/datasophon-init下并解压;下载链接:https://pan.baidu.com/s/1iqudVwDgg2x_OO35VLkkSg 提取码:6zrz
3、准备服务器操作系统对应的iso镜像文件,建议使用everything版本的,这样包含的依赖包更全一点;
4、离线YUM源配置:在未连接互联网的情况下预备安装datasophon的服务器已经配置好离线yum源,能够通过yum命令安装依赖包(此步骤为必须,因为初始化脚本中使用了"yum -y install xxxx"的方式安装依赖,如果没有yum源会导致安装失败 );
离线YUM源配置方法(Ps:能连公网的用户就不用配置离线yum源了,直接配置为公共的源此时需要配置“yum.repo.need=false",该步骤都是在主节点上操作):
详情可查看配置脚本:init-private-yum-library-${initOS}.sh
①首先创建目录 'mkdir -p /data/private-yum-library_temp'然后将和操作系统匹配的操作系统iso文件移动到/data/目录下;
②在/data目录下创建private-yum-library目录:'mkdir -p /data/private-yum-library';
③执行挂载操作系统命令:mount -o loop /data/openEuler-22.03-LTS-SP2-everything-x86_64-dvd.iso /data/private-yum-library_temp,这种挂载重启服务器之后会失效,所以我们挂载完成后将ios内的文件全部拷贝出来做离线yum源用;
④在private-yum-library目录下创建两个子目录 repo 和 epel;
⑤将private-yum-library_temp目录下的文件全部拷贝到/data/private-yum-library/repo目录下:cp -r /data/private-yum-library_temp/* /data/private-yum-library/repo,另外不同操作系统挂载后所产生的目录不同,比如centos8的repo有两个BaseOS和AppStream;
⑥将原本的yum源的配置文件进行备份 :mkdir -p /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak;
⑦剩下的工作就交给脚本工具自己去处理了,epel目录是为了给需要自行配置离线eprl源的用户准备的,如果能配置epel建议进行配置,因为很多操作系统额外的很多工具包都在对应的epel中,配置之后在未来集群需要安装额外的扩展时会很方便;

5、集群时钟源配置:集群NTP时钟默认使用Chrony,如使用其它的方式请自行安装配置,并将sbin/init.sh 脚本中的 initALL() 方法中的‘initAllNtpChronyService’ 和 ‘checkNtpChronyService’方法注释掉避免重复安装;
6、脚本的初始化需要用到python环境,主要用到pssh进行集群间的命令执行控制,目前packages目录中pssh.tar.gz中已经内置了三个安装包:
pssh-2.3.1-5.el7.noarch.rpm 需要python2.7的支持;
pssh-2.3.1-29.el8.noarch.rpm 需要python3.6的支持;
pssh-2.3.4-1.el9.noarch.rpm 需要python3.9的支持;
Centos8中的repo中已经存在对应的rpm格式的pssh包了,目前openEuler22.03中还没有pssh相关的安装包,
其它版本pssh的rpm包下载工具地址:http://rpmfind.net/linux/rpm2html/search.php?query=pssh,可以根据操作系统和python版本进行适配
7、修改config 目录下的配置文件,根据自己需要配置的节点实际情况进行修改,如果配置文件配置错误会导致初始化失败;

## 全量初始化流程

![img](website/static/img/Initialization-process.png)

## 四、首次全量初始化操作

### 全量初始化脚本的流程
![img](website/static/img/initall-process.png)

### 执行初始化脚本

完成上述步骤后,执行如下命令即可开始一键初始化任务。

cd /data/datasophon-init/sbin
bash init.sh initAll (等待程序执行完毕,中间需要有一次确认服务器时间的确认项需要选择)
PS:执行完毕之后如果服务器的终端未关闭,可能会出现一些命令无效的情况,此时需要手动在终端执行 ‘source /etc/profile ’使环境变量生效,或者关闭终端重新打开
PS:执行完毕之后如果服务器的终端未关闭,可能会出现一些命令无效的情况,此时需要手动在终端执行 ‘source /etc/profile ’使环境变量生效,或者关闭终端重新打开

当执行完 bash init.sh initAll 之后,会看到有下面输出很多的日志,因为需要配置本地离线yum源以及安装mysql8、jdk等整个过程需要一定的时间,可以查看log目录下的安装日志
当执行完 bash init.sh initAll 之后,会看到有下面输出很多的日志,因为需要配置本地离线yum源以及安装mysql8等整个过程需要一定的时间,可以查看log目录下的安装日志
其中mysql初始化的数据库默认为datasophon,初始化过程中会自动创建用户"datasophon"密码为"datasophon"

#### 当前初始化模块支持的操作系统版本为:CentOS-8.5.2111-x86_64、openEuler-22.03
####当前初始化模块支持的mysql为:mysql-community-8.0.28
####自动安装的JDK为:jdk-8u333(jdk在安装datasophon的时候会自动配置,初始化工具不会再次进行重复配置)
#### 当前初始化模块支持的mysql为:mysql-community-8.0.28


## 新增节点初始化流程
## 五、集群新增节点初始化操作
### 新增节点初始化流程
![img](website/static/img/initadd-process.png)

将config/init.properties文件中的'init.add.host.num'参数修改为即将新增加的节点的实际数量,只支持整数;
### 执行初始化脚本
将config/init.properties文件中的'init.add.host.num'参数修改为即将新增加的节点的实际数量(init.host.num参数为当前已有的节点数量),只支持整数;
编辑config/init-host-info-add.properties,将文件中的指定信息按照既定格式进行修改,主要包括新增节点的ip、password、sshport、hostname;
完成上述步骤后,执行如下命令即可开始一键初始化任务。
cd /data/datasophon-init/sbin
Expand Down
30 changes: 30 additions & 0 deletions datasophon-init/bin/dispatcher-worker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# example: sh init-jdk.sh
# instal and config jdk env
workmd5="$1"
if [ $UID -ne 0 ]; then
echo Non root user. Please run as root.
exit 1
fi
if [ -L $0 ]; then
BASE_DIR=$(dirname $(readlink $0))
else
BASE_DIR=$(dirname $0)
fi
BASE_PATH=$(
cd ${BASE_DIR}
pwd
)
INIT_PATH=$(dirname "${BASE_PATH}")
echo "INIT_PATH: ${INIT_PATH}"

cp /opt/datasophon/DDP/packages/datasophon-worker.tar.gz /opt/datasophon/
checkworkmd5=$(md5sum /opt/datasophon/DDP/packages/datasophon-worker.tar.gz | awk '{print $1}')
if [ "$checkworkmd5" = "$workmd5" ]; then
echo "md5效验通过"
else
echo "md5效验不通过"
exit 1
fi
tar -zxvf /opt/datasophon/datasophon-worker.tar.gz -C /opt/datasophon/
4 changes: 0 additions & 4 deletions datasophon-init/bin/init-ssh-hadoop.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

# example: sh init-ssh-gen-key.sh

filePath=$1
initAllHostNums="$2"
if [ -L $0 ]; then
BASE_DIR=$(dirname $(readlink $0))
else
Expand All @@ -25,8 +23,6 @@ PACKAGES_PATH=${INIT_PATH}/packages
echo "PACKAGES_PATH: ${PACKAGES_PATH}"

sshHadoopDir=/home/hadoop/.ssh/
rm -rf ${INIT_BIN_PATH}/tmp_scp_host_info.txt
bash ${INIT_BIN_PATH}/init-hostIp-txt.sh ${filePath} ${initAllHostNums}
pssh -h ${INIT_BIN_PATH}/tmp_scp_host_info.txt -i bash ${INIT_BIN_PATH}/init-add-hadoop-user.sh
pssh -h ${INIT_BIN_PATH}/tmp_scp_host_info.txt -i "mkdir -p /home/hadoop/"
pscp.pssh -h ${INIT_BIN_PATH}/tmp_scp_host_info.txt -r /root/.ssh /home/hadoop/
Expand Down
9 changes: 7 additions & 2 deletions datasophon-init/config/init-host-info.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
# 4.dataSophon.ssh.port.i:
# 5.dataSophon.ssh.port.hostname.i:
dataSophon.ip.1=172.31.51.160
dataSophon.password.1=max@123!@#
dataSophon.password.1=dataSophon@123!@#
dataSophon.ssh.port.1=22
dataSophon.ssh.port.hostname.1=dataSophon01

dataSophon.ip.2=172.31.51.161
dataSophon.password.2=max@123!@#
dataSophon.password.2=dataSophon@123!@#
dataSophon.ssh.port.2=22
dataSophon.ssh.port.hostname.2=dataSophon02

dataSophon.ip.3=172.31.51.162
dataSophon.password.3=dataSophon@123!@#
dataSophon.ssh.port.3=22
dataSophon.ssh.port.hostname.3=dataSophon02

6 changes: 3 additions & 3 deletions datasophon-init/config/init.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ yum.repo.host.ip=172.31.51.160
#The Host information for installing the NMAP service
nmap.server.ip=172.31.51.160
nmap.server.port=22
nmap.server.password=max@123!@#
nmap.server.password=datasophon@123!@#

# The Host information for installing the NTP service(Master)
ntp.master.ip=172.31.51.160

# Install MySQL machine node information
mysql.ip=172.31.51.160
mysql.host.ssh.port=22
mysql.host.ssh.password=max@123!@#
mysql.host.ssh.password=datasophon@123!@#

# Set the MYSQL database login password
mysql.password=datasophon123
Expand All @@ -29,7 +29,7 @@ init.add.host.num=0
# Common Settings.
init.log.dir=./logs

# server operating system Settings : openEuler/centos8/centos7......
# server operating system Settings : openEuler\centos8
init.os=openEuler


Expand Down
Loading

0 comments on commit 3b54112

Please sign in to comment.