1. 集群安装
本文讲述如何在集群环境下进行HENGSHI SENSE安装的操作过程。
在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。
1.1. 准备工作
集成安装前,请完成下面的准备工作。
1.1.1. 环境准备
请按如下步骤进行环境准备。
- 首先参考安装环境文档准备安装环境。
- 请确保安装设备满足以下条件。
- 每台设备上都安装有sudo命令。
- 每台设备上建立可以无密码ssh登录的运行用户。
- 每台设备上运行用户配置无密码sudo权限。
- 每台设备hostname不同。
- 各设备间防火墙开放端口限制,内网间互通。
- 保证当前执行集群安装机器安装ansible。
如果您已经完成了步骤1和步骤2中的环境准备,请忽略下面的提示直接跳到配置用户与安装目录继续进行安装操作。如果您不清楚步骤2中的条件如何配置时,可以参考下面的提示进行设置。
- 安装sudo命令。 该命令需要在root用户下执行。
yum install -y sudo
- 在每台设备上都建立执行用户。示例中以hengshi用户为例。 该操作需要在root用户下执行。
useradd -m hengshi passwd hengshi #设置hengshi登录密码
- 为执行用户设置无密码sudo权限。该操作需要在root用户下执行。
在其中输入, 保存并退出visudo
hengshi ALL=(ALL) NOPASSWD: ALL
- 每台设备上hostname不同。 如果hostname有相同情况,如localhost, 则需要设置。直接编辑hostname文件进行修改。
sudo vim /etc/hostname
- 每台机器可以用hostname通信。编辑 /etc/hosts文件,如存在127.0.0.1 本地ip信息,删除并重启服务器。
a.b.c.d1 Node-A a.b.c.d2 Node-B a.b.c.d3 Node-C
- 配置运行用户,保证每台机器无密码ssh登录。
假设集群为三台机器 Node-A, Node-B, Node-C, 以用户hengshi在每台机器运行。- 期间按照提示输入hengshi密码
- 提示如下信息输入yes。 "Are you sure you want to continue connecting (yes/no)?" 输入 yes
- 需要对本机ip执行ssh-copy-id操作,如在Node-A上需要执行 'ssh-copy-id hengshi@Node-A'
test -e ~/.ssh/id_rsa || { yes "" | ssh-keygen -t rsa -q -P ''; } ssh-copy-id hengshi@localhost ssh-copy-id hengshi@127.0.0.1 ssh-copy-id hengshi@Node-A ssh-copy-id hengshi@Node-B ssh-copy-id hengshi@Node-C
- 在执行安装部署的机器上安装ansible。
sudo yum install -y epel-release sudo yum install -y ansible
1.1.2. 配置用户与安装目录
下面的操作请在sudo或root权限下执行。
示例中演示如何在集群上配置用户和安装目录,用户名为hengshi,安装目录为/opt/hengshi,三个节点分别为Node-A Node-B Node-C,用户在不同节点上执行下列操作。
for x in Node-A Node-B Node-C; do
ssh $x "grep hengshi /etc/passwd > /dev/null || sudo useradd -m hengshi"
ssh $x "sudo mkdir -p /opt/hengshi && sudo chown hengshi:hengshi /opt/hengshi" #建立henghsi用户, 设置安装目录及权限
done
1.1.3. ssh登录确认
假如三台机器 Node-A Node-B Node-C,执行下面代码进行登录确认。
nodes=(Node-A Node-B Node-C)
for host in ${nodes[@]}; do
ssh $host "for x in ${nodes[@]}; do ssh-keygen -R \$x; ssh-keyscan -H \$x >> ~/.ssh/known_hosts; done"
done
1.1.4. 服务端sshd监听非22端口
安装所涉及的机器包括本机以及HS_ENGINE_SEGMENTS变量中配置的机器,如有非ssh 22端口的情况,需要在部署用户 ~/.ssh/config中配置各个host的实际端口。
本机需要配置localhost和hostname命令返回域名的端口。
例如: 本机配置hostname为localhost,并且HS_ENGINE_SEGMENTS=(Node-A Node-B Node-C),对应的监听端口都为122。
在.ssh/config 配置文件中需要包含以下配置,并同步到每台机器上的.ssh/config。
Host localhost
Port 122
Host Node-A
Port 122
Host Node-B
Port 122
Host Node-C
Port 122
1.1.5. 设置集群信息
在需要执行部署命令的机器上设置集群信息。
建立集群配置目录,该目录建议与安装包解压目录同一层级,方便升级时复用配置。可以参考下面示例,示例中安装包解压目录为hengshi-sense-[version]。
mkdir hengshi-sense-[version]/../cluster-conf cd hengshi-sense-[version] cp ansible/hosts.sample ../cluster-conf/hosts cp ansible/vars.yml.sample ../cluster-conf/vars.yml
配置hosts。按照示例中的提示进行操作。
```
[metadb] #内部元数据库 Node-A2. [metaslave] #metadb 数据库从库(选填)可用于主库down机 备用库使用
3. Node-B
[engine] #指定一台为master Node-A master=true Node-B Node-C
4. 注意doris-fe数量需要配置奇数台
[doris-fe] # 建议使用ip信息配置,hostname配置可能存在启动失败问题 Node-A master=true Node-B Node-C
[doris-be] # 建议使用ip信息配置,hostname配置可能存在启动失败问题 Node-A Node-B Node-C
[minio] Node-A
[gateway]
Node-A
[zookeeper] #需要保证机器间的zkid各不相同
#注意只需配置三个节点 (1,2,4个节点都不行)
Node-A zkid=1
Node-B zkid=2
Node-C zkid=3
[redis]
Node-A
[flink]
Node-A
[hengshi]
Node-A
Node-B
Node-C
```
配置vars.yaml。按照下面示例中的提示配置vars.yaml。
temp_work_dir_root: "/tmp" #临时目录,一般不需要改 install_path: "/opt/hengshi" #安装目标目录 gateway_port: 8080 hengshi_sense_port: 8081 metadb_port: 54320 zookeeper_client_port: 2181 engine_master_port: 15432 engine_segment_base_port: 25432
4.1. 安装
按照以下指导完成安装过程。
- 设置环境变量ANSIBLE_PLAYBOOK。
export ANSIBLE_PLAYBOOK="ansible-playbook -v"
- 切换到执行安装的用户,示例中用户名为hengshi。
$ sudo su - hengshi
- 进入安装包解压后的目标目录。
$ cd ~/pkgs/hengshi-sense-[version]
- 执行集群安装命令。
安装过程会显示提示信息,当各个节点状态均为[unreachable=0,failed=0],表示安装成功。$ ./hs_install -m cluster -c ../cluster-conf #执行集群安装
PLAY RECAP **************************************************************** Node-A : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 Node-B : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 Node-C : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
4.2. 配置系统
启动服务前,请阅读配置文件对相关的配置进行设置。
如内置引擎类型要求为Doris,请阅读Doris引擎配置。
4.3. 启动服务
请按照如下步骤启动服务。
初始化OS。
初始化时请检查执行用户有sudo权限,初始化完成后可以关闭sudo权限。
进入执行用户,在安装目录下,执行初始化OS命令。可以参考如下示例,示例中执行用户为hengshi,安装目录是/opt/hengshi。$ sudo su - hengshi $ cd /opt/hengshi $ bin/hengshi-sense-bin init-os all #初始化os
查看提示信息,当各个节点状态显示[unreachable=0,failed=0]时表示OS初始化成功。
TASK [deploy : init-os kernel] ******************************************************************************************************************************************************************************************************************************** changed: [Node-A] changed: [Node-B] changed: [Node-C] TASK [deploy : init-os deps] ********************************************************************************************************************************************************************************************************************************** changed: [Node-A] changed: [Node-B] changed: [Node-C] PLAY RECAP **************************************************************************************************************************************************************************************************************************************************** Node-A : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Node-B : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Node-C : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
初始化HENGSHI SENSE。
在执行用户下进入安装目录,执行初始化HENGSHI SENSE命令。可以参考以下示例,示例中执行用户为hengshi,安装目录为/opt/hengshi。
$ sudo su - hengshi $ cd /opt/hengshi $ bin/hengshi-sense-bin init all #初始化衡石系统
查看提示信息,当各个节点状态显示[unreachable=0 failed=0]时表示HENGSHI SENSE初始化成功。
TASK [operations : metadb init] ******************************************************************************************************************************************************************************************************************************* skipping: [Node-A] skipping: [Node-B] skipping: [Node-C] TASK [operations : engine init] ******************************************************************************************************************************************************************************************************************************* skipping: [Node-A] skipping: [Node-B] skipping: [Node-C] PLAY RECAP **************************************************************************************************************************************************************************************************************************************************** Node-A : ok=1 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 Node-B : ok=1 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 Node-C : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
- 未输入license前,启动服务。
未输入license前,系统不支持多机运行。需要先要启动一个实例的服务(比如Node-A),等更新license后,再启动所有实例的服务。$ cd /opt/hengshi $ bin/hengshi-sense-bin start metadb $ bin/hengshi-sense-bin start engine $ bin/hengshi-sense-bin start zookeeper $ bin/hengshi-sense-bin start minio $ bin/hengshi-sense-bin start redis $ bin/hengshi-sense-bin start flink $ ansible-playbook ansible/site.yml -i ansible/hosts --tags start-hengshi -e "target=hengshi" --limit "Node-A";
参考软件授权,输入license。
授权成功后,正常启动HENGSHI SENSE。
在执行用户下进入安装目录,执行启动HENGSHI SENSE命令。请参考下面的示例,示例中执行用户为hengshi,安装目录是/opt/hengshi。
$ sudo su - hengshi $ cd /opt/hengshi #进入安装目标目录 $ bin/hengshi-sense-bin restart hengshi #重新启动hengshi服务
查看提示信息,当各个节点状态显示[unreachable=0 failed=0]时表示HENGSHI SENSE启动成功。
PLAY RECAP *********************************************************************** Node-A : ok=4 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 Node-B : ok=3 changed=2 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0 Node-C : ok=3 changed=2 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
可以通过浏览器访问服务地址,使用HENGSHI SENSE服务。如果不能访问,请检查配置文件conf/hengshi-sense-env.sh中的服务端口HS_HENGSHI_PORT是否对外开放。
4.4. 启动服务后相关操作
当HENGSHI SENSE服务运行时,需要定时备份数据防止数据丢失,及时清理无用日志释放存储空间。
定时备份数据。
建议每日对数据库metadb进行备份,可以备份到本地设备也可以备份到远程设备。定时备份建议在非业务高峰期进行,比如凌晨,避免影响用户使用服务。 下面示例是每日零时将数据备份到远程设备的执行命令,参数详细说明请参考数据备份。
0 0 * * * /opt/hengshi/bin/dbbackup.sh -m metadb -l /BACKUP/PATH -h $REMOTE_IP -r /BACKUP/PATH
定时清理日志。
运行过程中,HENGSHI SENSE会产生运行日志,这些日志需要定时清理释放存储空间。下面示例是每日定时清理内部数据库的滚动日志的命令。
0 0 * * * /opt/hegnshi/bin/clean_engine.sh -t -r -c -g -p */5 * * * * /opt/hengshi/bin/clean_engine.sh -l
公网情况下端口开放须知。
在公网环境下,非必要场景中不暴露衡石整体的服务端口,避免因组件原因造成被攻击的情况。在特殊情况下,可通过IP+端口访问的形式使用web服务的端口。
4.5. 停止服务
通过下面命令停止集群服务。
bin/hengshi-sense-bin stop all
当提示信息中各个节点状态都为[unreachable=0 failed=0]时表示停止服务成功。
PLAY RECAP ****************************************************************
Node-A : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Node-B : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Node-C : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
4.6. 检查服务运行状态
执行以下命令时,可以查看服务运行状态。
bin/hengshi-sense-bin status all
在显示信息中可以查看metadb、engine、zookeeper、gateway、minio、redis、flink等HENGSHI模块的运行信息,其中"IS ACTIVE"表示对应模块运行中,"NOT ACTIVE"表示对应模块已停止,"skipping"表示节点没有安装相应的模块。
TASK [operations : metadb status msg] ******************************************************************************************
ok: [Node-A] => {
"msg": [
"[metadb]: NOT ACTIVE"
]
}
skipping: [Node-B]
skipping: [Node-C]
TASK [operations : engine status msg] ******************************************************************************************
ok: [Node-B] => {
"msg": [
"[engine]: NOT ACTIVE"
]
}
TASK [operations : zookeeper status msg] ***************************************************************************************
ok: [Node-A] => {
"msg": [
"[zookeeper]: NOT ACTIVE"
]
}
ok: [Node-B] => {
"msg": [
"[zookeeper]: NOT ACTIVE"
]
}
ok: [Node-C] => {
"msg": [
"[zookeeper]: NOT ACTIVE"
]
}
TASK [operations : gateway status msg] *****************************************************************************************
ok: [Node-A] => {
"msg": [
"[gateway]: NOT ACTIVE"
]
}
skipping: [Node-B]
skipping: [Node-C]
TASK [operations : hengshi sense status msg] **********************************************************************************
ok: [Node-A] => {
"msg": [
"[syslog]: NOT ACTIVE",
"[hengshi]: NOT ACTIVE",
"[watchdog]: NOT ACTIVE"
]
}
ok: [Node-B] => {
"msg": [
"[syslog]: NOT ACTIVE",
"[hengshi]: NOT ACTIVE",
"[watchdog]: NOT ACTIVE"
]
}
skipping: [Node-C]
TASK [operations : redis status msg] *****************************************************************************************
ok: [Node-A] => {
"msg": [
"[redis]: NOT ACTIVE"
]
}
skipping: [Node-B]
skipping: [Node-C]
TASK [operations : minio status msg] *****************************************************************************************
ok: [Node-A] => {
"msg": [
"[minio]: NOT ACTIVE"
]
}
skipping: [Node-B]
skipping: [Node-C]
TASK [operations : flink status msg] *****************************************************************************************
ok: [Node-A] => {
"msg": [
"[flink]: NOT ACTIVE"
]
}
skipping: [Node-B]
skipping: [Node-C]
results matching ""
No results matching ""
衡石文档
- 产品功能一览
- 发布说明
- 新手上路
- 安装与启动
- 系统管理员手册
- 数据管理员手册
- 分析人员手册
- 数据查看员手册
- 数据服务
- 最佳实践
- 衡石分析平台 API 手册
- 附录