当前位置: 首页 > news >正文

衡石分析平台使用手册-集群安装及启动

集群安装​

本文讲述如何在集群环境下进行 HENGSHI SENSE 安装的操作过程。

在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。

准备工作​

集成安装前,请完成下面的准备工作。

环境准备​

请按如下步骤进行环境准备。

  1. 首先参考安装环境文档准备安装环境。
  2. 请确保安装设备满足以下条件。
    • 每台设备上都安装有 sudo 命令。
    • 每台设备上建立可以无密码 ssh 登录的运行用户。
    • 每台设备上运行用户配置无密码 sudo 权限。
    • 每台设备 hostname 不同。
    • 各设备间防火墙开放端口限制,内网间互通。
    • 保证当前执行集群安装机器安装 ansible。

如果您已经完成了步骤1和步骤2中的环境准备,请忽略下面的提示直接跳到配置用户与安装目录继续进行安装操作。如果您不清楚步骤2中的条件如何配置时,可以参考下面的提示进行设置。

  1. 安装 sudo 命令。 该命令需要在 root 用户下执行。shell
    yum install -y sudo

  2. 在每台设备上都建立执行用户。示例中以 hengshi 用户为例。 该操作需要在 root 用户下执行。shell
    useradd -m hengshi
    passwd hengshi #设置 hengshi 登录密码

  3. 为执行用户设置无密码 sudo 权限。该操作需要在 root 用户下执行。shell
    visudo

    在其中输入, 保存并退出
    shell
    hengshi ALL=(ALL)       NOPASSWD: ALL

  4. 每台设备上 hostname 不同。 如果 hostname 有相同情况,如 localhost, 则需要设置。直接编辑 hostname 文件进行修改。shell
    sudo vim /etc/hostname

  5. 每台机器可以用 hostname 通信。编辑 /etc/hosts 文件,如存在127.0.0.1 本地 ip 信息,删除并重启服务器。shell
    a.b.c.d1 Node-A
    a.b.c.d2 Node-B
    a.b.c.d3 Node-C

  6. 配置运行用户,保证每台机器无密码 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'
    shell
    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

  7. 在执行安装部署的机器上安装 ansible。shell
    sudo yum install -y epel-release
    sudo yum install -y ansible

配置用户与安装目录​

下面的操作请在 sudo 或 root 权限下执行。

示例中演示如何在集群上配置用户和安装目录,用户名为 hengshi,安装目录为/opt/hengshi,三个节点分别为 Node-A Node-B Node-C,用户在不同节点上执行下列操作。

shell

for x in Node-A Node-B Node-C; dossh $x "grep hengshi /etc/passwd > /dev/null || sudo useradd -m hengshi"#建立 henghsi 用户, 设置安装目录及权限ssh $x "sudo mkdir -p /opt/hengshi && sudo chown hengshi:hengshi /opt/hengshi"
done

ssh 登录确认​

假如三台机器 Node-A Node-B Node-C,执行下面代码进行登录确认。

shell

nodes=(Node-A Node-B Node-C)
for host in ${nodes[@]}; dossh $host "for x in ${nodes[@]}; do ssh-keygen -R \$x; ssh-keyscan -H \$x >> ~/.ssh/known_hosts; done"
done

服务端 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 localhostPort 122
Host Node-APort 122
Host Node-BPort 122
Host Node-CPort 122

设置集群信息​

在需要执行部署命令的机器上设置集群信息。

  • 建立集群配置目录,该目录建议与安装包解压目录同一层级,方便升级时复用配置。可以参考下面示例,示例中安装包解压目录为 hengshi-sense-[version]。

    shell
    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-A#[metaslave] #metadb 数据库从库(选填)可用于主库 down 机 备用库使用
    #Node-B[engine] #指定一台为 master
    Node-A master=true
    Node-B
    Node-C#注意 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。

    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

安装​

按照以下指导完成安装过程。

  1. 设置环境变量 ANSIBLE_PLAYBOOK。shell
    export ANSIBLE_PLAYBOOK="ansible-playbook -v"

    1

  2. 切换到执行安装的用户,示例中用户名为 hengshi。shell
    sudo su - hengshi

  3. 进入安装包解压后的目标目录。shell
    cd ~/pkgs/hengshi-sense-[version]

  4. 执行集群安装命令。shell
    ./hs_install -m cluster -c ../cluster-conf    #执行集群安装

    安装过程会显示提示信息,当各个节点状态均为[unreachable=0,failed=0],表示安装成功。
    shell
    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

配置系统​

启动服务前,请阅读配置文件对相关的配置进行设置。 如内置引擎类型要求为 Doris,请阅读Doris 引擎配置。

启动服务​

请按照如下步骤启动服务。

  1. 初始化 OS。

    初始化时请检查执行用户有 sudo 权限,初始化完成后可以关闭 sudo 权限。 进入执行用户,在安装目录下,执行初始化 OS 命令。可以参考如下示例,示例中执行用户为 hengshi,安装目录是/opt/hengshi。

    shell
    sudo su - hengshi
    cd /opt/hengshi
    bin/hengshi-sense-bin init-os all  #初始化 os

    查看提示信息,当各个节点状态显示[unreachable=0,failed=0]时表示 OS 初始化成功。

    sh
    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

  2. 初始化 HENGSHI SENSE。

    在执行用户下进入安装目录,执行初始化 HENGSHI SENSE 命令。可以参考以下示例,示例中执行用户为 hengshi,安装目录为/opt/hengshi。

    sh
    sudo su - hengshi
    cd /opt/hengshi
    bin/hengshi-sense-bin init all   #初始化衡石系统

    查看提示信息,当各个节点状态显示[unreachable=0 failed=0]时表示 HENGSHI SENSE 初始化成功。

    sh
    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

  3. 未输入 license 前,启动服务。  未输入 license 前,系统不支持多机运行。需要先要启动一个实例的服务(比如 Node-A),等更新 license 后,再启动所有实例的服务。

    shell
    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";

  4. 参考软件授权,输入 license。

  5. 授权成功后,正常启动 HENGSHI SENSE。

    在执行用户下进入安装目录,执行启动 HENGSHI SENSE 命令。请参考下面的示例,示例中执行用户为 hengshi,安装目录是/opt/hengshi。

    sh
    sudo su - hengshi
    cd /opt/hengshi                 #进入安装目标目录
    bin/hengshi-sense-bin restart hengshi    #重新启动 hengshi 服务

    查看提示信息,当各个节点状态显示[unreachable=0 failed=0]时表示 HENGSHI SENSE 启动成功。

    sh
    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

  6. 可以通过浏览器访问服务地址,使用 HENGSHI SENSE 服务。如果不能访问,请检查配置文件 conf/hengshi-sense-env.sh 中的服务端口 HS_HENGSHI_PORT 是否对外开放。

启动服务后相关操作​

当 HENGSHI SENSE 服务运行时,需要定时备份数据防止数据丢失,及时清理无用日志释放存储空间。

  1. 定时备份数据。

    建议每日对数据库 metadb 进行备份,可以备份到本地设备也可以备份到远程设备。定时备份建议在非业务高峰期进行,比如凌晨,避免影响用户使用服务。 下面示例是每日零时将数据备份到远程设备的执行命令,参数详细说明请参考数据备份。

    sh
    0 0 * * * /opt/hengshi/bin/dbbackup.sh -m metadb -l /BACKUP/PATH -h $REMOTE_IP -r /BACKUP/PATH

    1

  2. 定时清理日志。

    运行过程中,HENGSHI SENSE 会产生运行日志,这些日志需要定时清理释放存储空间。下面示例是每日定时清理内部数据库的滚动日志的命令。

    sh
    0 0 * * * /opt/hengshi/bin/clean_engine.sh -t -r -c -g -p
    */5 * * * * /opt/hengshi/bin/clean_engine.sh -l

  3. 公网情况下端口开放须知。

    在公网环境下,非必要场景中不暴露衡石整体的服务端口,避免因组件原因造成被攻击的情况。在特殊情况下,可通过 IP+端口访问的形式使用 web 服务的端口。

停止服务​

通过下面命令停止集群服务。

shell

bin/hengshi-sense-bin stop all

1

当提示信息中各个节点状态都为[unreachable=0 failed=0]时表示停止服务成功。

sh

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

检查服务运行状态​

执行以下命令时,可以查看服务运行状态。

shell

bin/hengshi-sense-bin status all

在显示信息中可以查看 metadb、engine、zookeeper、gateway、minio、redis、flink 等 HENGSHI 模块的运行信息,其中"IS ACTIVE"表示对应模块运行中,"NOT ACTIVE"表示对应模块已停止,"skipping"表示节点没有安装相应的模块。

sh

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]


http://www.mrgr.cn/news/23290.html

相关文章:

  • SAM 2:分割图像和视频中的任何内容
  • C++第二节入门 - 缺省参数和函数重载
  • OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
  • Linux 中的 data 命令介绍以及使用
  • Apple Intelligence深夜炸场!苹果发布4颗自研芯片,iPhone/iWatch/AirPods大升级
  • Android Manifest 权限描述大全对照表
  • 【经纬度坐标系、墨卡托投影坐标系和屏幕坐标系转换详解】
  • 顺序表之判空,删除
  • NISP 一级 | 2.5 安全审计
  • 【ShuQiHere】从石英到QPU:解码计算机硬件的演进之路
  • MNIST数据集内容查看
  • matlab和opencv在双目标定参数之间的关系,不用转置和加负号
  • 认知杂谈55
  • 编程工具:提升效率的利器
  • 【大数据】Hadoop里的“MySQL”——Hive,干货满满
  • NASA数据集:ASTER L2 地表辐射率 VNIR 和 SWIR V003
  • 【人工智能】MOE架构的详细解析
  • Stable Diffusion AI算法,实现一键式后期处理与图像修复魔法
  • ctf Mark loves cat (超详细记录)
  • python日常刷题(二)