---
url: /v6.2/engine-new-environment-prepare.md
---
# 引擎新节点环境准备

衡石内置 Greenplum/Doris 引擎支持多节点部署构建集群方案，本文主要介绍新增引擎计算节点环境准备工作。

* 变量说明
  * 本文中使用的 node-1 变量表示为已部署引擎节点 hostname
  * 本文中使用的 node-2 变量表示为新增节点 hostname

## 新节点环境准备工作

1. 节点端口开放说明
   新增节点要求与已部署引擎节点默认所有（tcp/udp）端口互为开放 。

2. 增加执行用户，示例中用户名为 hengshi。
   ```bash
   grep hengshi /etc/passwd > /dev/null || sudo useradd -m hengshi
   sudo mkdir -p /opt/hengshi && sudo chown hengshi:hengshi /opt/hengshi
   ```

3. 服务端 sshd 监听非22端口。
   安装所涉及的机器包括本机以及 HS_ENGINE_SEGMENTS 变量中配置的机器，如有非 ssh 22端口的情况，需要在部署用户 ~/.ssh/config 中配置各个 host 的实际端口。
   本机需要配置 localhost 和 hostname 命令返回域名的端口。例如: 新机器 hostname 为 Node-A，并且 HS_ENGINE_SEGMENTS=(Node-A)，对应的监听端口都为122。
   在.ssh/config 配置文件中需要包含以下配置:
   ```
   Host localhost
     Port 122
   Host Node-A
     Port 122
   ```

4. 在新机器上配置 ssh 无密码登录。

5. 创建安装路径，实例中安装路径为 `/opt/hengshi`。
   ```bash
   sudo mkdir -p /opt/hengshi && sudo chown hengshi:hengshi /opt/hengshi
   ```

6. 安装 HENGSHI SENSE。
   ```sh
   sudo su - hengshi             #切换到产品运行用户
   cd ~/pkgs/hengshi-sense-[version]           #切换到解压目标目录
   ./hs_install -p /opt/hengshi    #执行安装
   ```

7. 在 sudo 权限下，初始化 OS。
   ```bash
   sudo su - hengshi             #切换到产品运行用户
   cd /opt/hengshi                 #进入安装目标目录
   bin/hengshi-sense-bin init-os all  #初始化 os
   ```

8. 当查询引擎类型为 greenplum 时，检查新旧环境 greenplum 版本，需要一致
   衡石安装目录 lib 下 gpdb 软链接指向当前使用的 greenplum 版本, 检查旧机器和新扩容机器上 gpdb 软链接指向的版本是否一致，如果不一致需要将旧机器上的 greenplum 拷贝到新机器并修改新机器 gpdb 软链接指向旧机器的 greenplum 版本
   例如:
   node1旧机器上
   ```shell
   hengshi@node1$ cd /opt/hengshi
   hengshi@node1$ ls lib/gpdb -l
   lrwxrwxrwx 1 hengshi hengshi 20 Oct 11 23:03 lib/gpdb -> gpdb-6.2.1.1-centos7
   ```
   node2新机器上
   ```shell
   hengshi@node2$ cd /opt/hengshi
   hengshi@node2$ ls lib/gpdb -l
   lrwxrwxrwx 1 hengshi hengshi 21 Oct 11 23:03 lib/gpdb -> gpdb-6.18.1.1-centos7
   ```
   此时两个 gpdb 版本不一致 `gpdb-6.2.1.1-centos7 != gpdb-6.18.1.1-centos7` 因为新机器使用的安装包并不是旧机器环境所用的安装包，需要将旧机器 gpdb 拷贝到新机器并修改新机器 gpdb 软链接
   ```shell
   $ ssh node1
   hengshi@node1$ cd /opt/hengshi/lib
   hengshi@node1$ rsync -avzP gpdb-6.2.1.1-centos7 node2:/opt/hengshi/lib/
   hengshi@node1$ ssh node2 "cd /opt/hengshi/lib; rm -f gpdb; ln -s gpdb-6.2.1.1-centos7 gpdb"
   ```

9. 当查询引擎类型为 doris 时，检查新旧环境 doris 版本，需要一致
   衡石安装目录 lib 下 doris-be、doris-fe 软链接指向当前使用的 Doris 版本, 检查旧机器和新扩容机器上 doris-be、doris-fe 软链接指向的版本是否一致，如果不一致需要将旧机器上的 doris 拷贝到新机器并修改新机器 doris-be、doris-fe 软链接指向旧机器的 Doris 版本
   例如:
   node1旧机器上
   ```shell
   hengshi@node1$ cd /opt/hengshi
   hengshi@node1$ ls lib/doris-be -l
   lrwxrwxrwx 1 hengshi hengshi 20 Oct 11 23:03 doris-be -> doris-be-1.2.1.2-linux-64
   hengshi@node1$ ls lib/doris-fe -l
   lrwxrwxrwx 1 hengshi hengshi 20 Oct 11 23:03 doris-fe -> doris-fe-1.2.1.2-linux-64
   ```
   node2新机器上
   ```shell
   hengshi@node2$ cd /opt/hengshi
   hengshi@node2$ ls lib/doris-be -l
   lrwxrwxrwx 1 hengshi hengshi 20 Oct 11 23:03 doris-be -> doris-be-1.2.2.2-linux-64
   hengshi@node2$ ls lib/doris-fe -l
   lrwxrwxrwx 1 hengshi hengshi 20 Oct 11 23:03 doris-fe -> doris-fe-1.2.2.2-linux-64
   ```
   此时两个 doris 版本不一致 `doris-be-1.2.1.2-linux-64 != doris-be-1.2.2.2-linux-64` && `doris-fe-1.2.1.2-linux-64 != doris-fe-1.2.2.2-linux-64` 因为新机器使用的安装包并不是旧机器环境所用的安装包，
   需要将旧机器 doris-fe、doris-be 拷贝到新机器并修改新机器 doris-fe、doris-be 软链接
   ```shell
   $ ssh node1
   hengshi@node1$ cd /opt/hengshi/lib
   hengshi@node1$ rsync -avzP doris-fe-1.2.1.2-linux-64 node2:/opt/hengshi/lib/
   hengshi@node1$ rsync -avzP doris-be-1.2.1.2-linux-64 node2:/opt/hengshi/lib/
   hengshi@node1$ ssh node2 "cd /opt/hengshi/lib; rm -f doris-fe doris-be; ln -s doris-fe-1.2.1.2-linux-64 doris-fe;ln -s doris-be-1.2.1.2-linux-64 doris-be"
   ```
