[TOC] ### 8.2.1 集群启停 DorisDB集群部署完成之后,紧接着就是启动集群,提供服务。启动服务之前需要保证配置文件满足要求。 <br> #### 8.2.1.1 FE启动 FE启动前需要重点关注的配置项有:元数据放置目录(meta\_dir)、通信端口。 **meta\_dir**描述FE存储元数据的目录,需要提前创建好相应目录,并在配置文件中写明。由于FE的元数据是整个系统的元数据,十分关键,建议不要和其他进程混布。        FE配置的通信端口有四个: |端口名称|默认端口|作用| |---|---|---| |http_port|8030|FE 上的 http server 端口| |rpc_port|9020|FE 上的 thrift server 端口| |query_port|9030|FE 上的 mysql server 端口| |edit_log_port|9010|FE Group(Master, Follower, Observer)之间通信用的端口| FE进程的启动方式十分简单: * 进入FE进程的部署目录。 * 运行`sh bin/start\_fe.sh --daemon`启动服务。                  FE为了保证高可用,会部署多个节点。线上典型的部署方式是3个FE(1 Master + 2 Follower)。                  多节点启动的时候,建议先逐台启动Follower,然后启动Master(如果Follower出错可以提前发现)。                  任何一台FE的启动,都建议进行验证,可以通过发送查询的方式予以验证。 <br> #### 8.2.1.2 BE启动        BE启动前需要重点关注的配置项有:数据放置目录(storage\_root\_path)、通信端口。        **storage\_root\_path**描述BE放置存储文件的地方,需要事先创建好相应目录,建议每个磁盘创建一个目录。        BE配置的通信端口有三个: |端口名称|默认端口|作用| |---|---|---| |be_port|9060|BE 上 thrift server 的端口,用于接收来自 FE 的请求| |webserver_port|8040|BE 上的 http server 的端口| |heartbeat_service_port|9050|BE 上心跳服务端口(thrift),用户接收来自 FE 的心跳| 配置好相应的启动项之后,就可以着手启动BE进程。       BE进程的启动方式和FE类似, * 进入BE进程的部署目录。 * 运行`sh bin/start_be.sh --daemon`启动服务。 <br> #### 8.2.1.3 确认集群健康状态 BE和FE启动完成之后,需要检查进程状态,以确定服务正常启动。 * 运行 http://be\_host:be\_http\_port3/api/health  确认BE启动状态 * 返回 {"status": "OK","msg": "To Be Added"} 表示启动正常。 * 运行 http://fe\_host:fe\_http\_port/api/bootstrap 确认FE启动状态。 * 返回 {"status":"OK","msg":"Success"} 表示启动正常。 <br> #### 8.2.1.4 集群停止 * 进入FE目录 运行`sh bin/stop_fe.sh` * 进入BE目录 运行`sh bin/stop_be.sh` <br> ### 8.2.2 集群升级 DorisDB可以通过滚动升级的方式,平滑进行升级。**升级顺序是先升级BE,再升级FE**。DorisDB保证BE后向兼容FE。升级的过程可以分为:测试升级的正确性,滚动升级,观察服务。 <br> #### 8.2.2.1 升级准备 * 在完成数据正确性验证后,将 BE 和 FE 新版本的二进制文件分发到各自目录下。 * 小版本升级,BE 只需升级 doris_be;FE 只需升级 doris-fe.jar。 * 大版本升级,则可能需要升级其他文件(包括但不限于 bin/ lib/ 等);如果不确定是否需要替换其他文件,全部替换即可。 <br> #### 8.2.2.2 升级 * 确认新版本的文件替换完成。 * 逐台重启 BE 后,再逐台重启 FE。 * 确认前一个实例启动成功后,再重启下一个实例。 ``` # BE 升级 cd be_work_dir mv lib lib.bak cp -r /tmp/DorisDB-SE-x.x.x/be/lib . sh bin/stop_be.sh sh bin/start_be.sh --daemon ps aux | grep dorisdb_be ``` ``` # FE 升级 cd fe_work_dir mv lib lib.bak cp -r /tmp/DorisDB-SE-x.x.x/fe/lib . sh bin/stop_fe.sh sh bin/start_fe.sh --daemon ps aux | grep DorisDbFe ``` 特别注意: BE、FE启动顺序不能颠倒。因为如果升级导致新旧 FE、BE 不兼容,从新 FE 发出的命令可能会导致旧的 BE 挂掉。但是因为已经部署了新的 BE 文件,BE 通过守护进程自动重启后,即已经是新的 BE 了。 <br> #### 8.2.2.3 测试BE升级的正确性 * 任意选择一个 BE 节点,部署最新的 doris\_be 二进制文件。 * 重启 该BE 节点,通过 BE 日志 be.INFO,查看是否启动成功。 * 如果启动失败,可以先排查原因。如果错误不可恢复,可以直接通过 `DROP BACKEND` 删除该 BE、清理数据后,使用上一个版本的 doris\_be 重新启动 BE。然后重新 `ADD BACKEND`。(**该方法会导致丢失一个数据副本,请务必确保3副本完整的情况下,执行这个操作!!!**) <br> #### 8.2.2.4 测试FE升级的正确性 * 单独使用新版本部署一个测试用的 FE 进程(比如自己本地的开发机) * 修改测试用的 FE 的配置文件 fe.conf,将**所有端口设置为与线上不同**。 * 在 fe.conf 添加配置:cluster\_id=123456 * 在 fe.conf 添加配置:metadata\_failure\_recovery=true * 拷贝线上环境 Master FE 的元数据目录 doris-meta 到测试环境 * 将拷贝到测试环境中的 doris-meta/image/VERSION 文件中的 cluster\_id 修改为 123456(即与第3步中相同) * 在测试环境中,运行 `sh bin/start\_fe.sh` 启动 FE * 通过 FE 日志 fe.log 观察是否启动成功。 * 如果启动成功,运行 `sh bin/stop\_fe.sh` 停止测试环境的 FE 进程。 **以上 2-6 步的目的是防止测试环境的FE启动后,错误连接到线上环境中。** **因为FE元数据十分关键,升级出现异常可能导致所有数据丢失,请特别谨慎,尤其是大版本的升级** <br>