首页 > 其他分享 >StarRocks 集群安装

StarRocks 集群安装

时间:2024-04-15 22:11:39浏览次数:35  
标签:10.0 StarRocks -- port 集群 FE 安装 节点 fe

当前按照官网上的提供的安装包方式安装,版本是 3.2.2,部署模式为存算一体,安装的操作系统是 Ubuntu 22.04,JDK 版本为 OpenJDK 11,这里选择 3 个节点进行安装,节点的 hosts 定义如下:

10.0.1.25 ec25
10.0.1.26 ec26
10.0.1.27 ec27

由于 StarRocks 安装包比较大,所以选择在每个节点上都单独解压,否则发送解压后读文件速度比较慢:

# 每个机器上分别解压
tar -xvzf StarRocks-3.2.2.tar.gz -C /opt
cd /opt/StarRocks-3.2.2

解压后的目录中除了两个 txt 的文件外有 3 个目录,分别是 febeapache_hdfs_broker ,其中 fe 是 FE 角色相关的程序,be 是 BE 角色相关的程序,apache_hdfs_broker 是 Broker 节点的相关的程序,主要用于对接 HDFS 或 S3 等外部存储数据源,不过从 StarRocks 2.5 版本起不需要手动部署 Broker 节点,StarRocks 本身已经集成了这部分功能。

我们计划将 3 个 FE 和 3 个 BE 在 3 个节点上混合部署,不过我们首先启动其中 1 个 FE,等集群整体组件完毕再加入另外 2 个 FE 从而实现高可用的功能。

安装 FE 服务

在所有节点提前创建 FE 元数据目录:

# 建议为 StarRocks 分配独立的外部挂载
mkdir -p /data/starrocks/meta

然后我们修改 FE 的配置文件 fe/conf/fe.conf 主要修改下面的一些配置:

meta_dir = /data/starrocks/meta

http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true

priority_networks = 10.0.1.0/24

meta_dir 配置 FE 的元数据目录。

然后是端口号部分的设置,我们这里都使用了默认值:

  1. http_port 是 FE 对外提供的 HTTP 端口,默认是 8030
  2. rpc_port 是 FE 对外提供的 Thrift 端口,默认是 9020
  3. query_port 是 FE 对外提供的查询端口,可以使用 MySQL 客户端连接,默认是 9030
  4. edit_log_port 是多个 FE 之间组建高可用集群使用的通信端口,默认是 9010

priority_networks 配置集群所在的网络,格式是 CIDR 描述,如果我们使用主机名(FQDN)访问,则不需要配置这个项,我们这里计划使用 IP 地址访问,所以需要设置一下这个配置。

如果我们系统上有多个 JDK,那么可以单独指定我们要使用的 JAVA_HOME ,例如:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

因为我们全局只有一个 JDK 并且在 /etc/profile 中设置了 JAVA_HOME 环境变量,所以这里就不需要再配置了。

基本的配置就是上面这些,我们修改完成后保存配置,然后注意将配置文件同步到其他节点,用的时候就不用再修改了。

然后我们可以启动 FE 服务,现在是只在第 1 个节点上执行:

./fe/bin/start_fe.sh --daemon
# 如果是使用主机名访问,那么需要指定 --host_type
./fe/bin/start_fe.sh --host_type FQDN --daemon

然后我们查看日志确保启动成功即可。

安装 BE 服务

在所有节点都创建 BE 数据目录:

mkdir -p /data/starrocks/storage

然后修改配置文件 be/conf/be.conf 主要内容如下:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

be_port = 9060
be_http_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
starlet_port = 9070
priority_networks = 10.0.1.0/24
storage_root_path = /data/starrocks/storage

首先是建议为 BE 指定 JAVA_HOME,因为 BE 不会自动搜索系统的 JDK,需要手动配置一下,否则将无法使用 JNI 相关的调用。

然后端口号的配置我们同样保持默认:

  1. be_port 是 BE 对外提供的 Thrift 端口,默认是 9060
  2. be_http_port 是 BE 对外提供的 HTTP 端口,默认是 8040
  3. heartbeat_service_port 是 BE 之间心跳服务的端口,默认是 9050
  4. brpc_port 是 BE 对外提供的 bRPC 端口,默认是 8060
  5. starlet_port 是存算分离集群用于心跳的端口,默认是 9070

然后 priority_networks 仍然是和 FE 一样,由于使用 IP 访问所以需要配置一下,如果使用主机名则不需要配置。

最后 storage_root_path 配置 BE 的数据目录。

基本配置就上面这些,配置完成后保存,然后同步到其他的节点。

然后在所有节点都启动 BE 服务:

./be/bin/start_be.sh --daemon

这里和 FE 不太一样的地方是如果要使用主机名访问不需要指定 --host_type ,但是要确保 hosts 配置正确即可。

启动之后查看日志确保启动成功,3 个节点都启动后会自动组成 BE 高可用集群。

我们在第一个节点上使用 MySQL 客户端连接:

mysql -h127.0.0.1 -P9030 -uroot --prompt='StarRocks > '

默认 root 用户不需要密码,我们连接上去之后查看 FE 状态:

SHOW PROC '/frontends'\G

当前 FE 只有 1 个就是当前的节点,然后查看 BE 状态:

SHOW PROC '/backends'\G

这里 BE 应该为空,我们需要手动添加 BE 节点:

-- 注意端口使用 heartbeat_service_port 配置的端口
ALTER SYSTEM ADD BACKEND "10.0.1.25:9050", "10.0.1.26:9050", "10.0.1.27:9050";

然后再次查看 BE 的状态:

SHOW PROC '/backends'\G

现在就可以看到 3 个 BE 节点了。

配置 FE 高可用

首先在第一个节点添加 FE 节点:

ALTER SYSTEM ADD FOLLOWER "10.0.1.26:9010";
ALTER SYSTEM ADD FOLLOWER "10.0.1.27:9010";

注意这里只能一行添加 1 个 FE,不能添加多个,端口使用的是 FE 中配置的 edit_log_port,添加后查看状态 active 和 join 应该都是 false,然后我们要启动另外两个节点的 FE 服务:

# 添加 --helper 参数指定 Leader FE
fe/bin/start_fe.sh --helper 10.0.1.25:9010 --daemon

启动之后再查看 FE 的状态就正常了,这样 FE 集群就具备了高可用的能力。

如果之前不小心启动了其他节点的 FE,那么再次启动加入集群时可能会报错如下:

weren't! UNEXPECTED_STATE: Unexpected internal state, may have side effects.

这个原因就是启动的时候 FE 会生成元数据,由于加入 FE 集群会重新生成新的元数据,所以数据出现了冲突,遇到这个问题只需要清空报错节点的元数据目录,再次添加 --helper 参数启动即可。

另外停止服务可以执行:

./fe/bin/stop_fe.sh --daemon
./be/bin/stop_be.sh --daemon

最后由于 root 用户默认没有密码,为了安全需要设置 root 用户密码:

SET PASSWORD = PASSWORD('<password>')

设置后再次登录就需要输入密码了,这个密码和 FE 的 HTTP 访问密码都是相同的,建议生产环境为数据库单独分配用户。

Reference:

  1. https://docs.starrocks.io/zh/docs/deployment/deploy_manually/

标签:10.0,StarRocks,--,port,集群,FE,安装,节点,fe
From: https://www.cnblogs.com/freeweb/p/18137023

相关文章

  • 【MySQL】二进制安装MySQL
    【MySQL】二进制安装MySQL一、基于Ubuntu二进制安装MySQL8.0(5.7+适用)1、创建用户[root@Node-Ubuntu1804-20:~]#groupaddmysql[root@Node-Ubuntu1804-20:~]#useradd-r-gmysql-s/usr/sbin/nologinmysql2、创建目录[root@Node-Ubuntu1804-20:~]#mkdir/data/mysql......
  • 5.CentOS-7-Minimal 安装KubernetesV1.23.17&DockerV20.10.23
    1.环境准备主节点IP:192.168.254.130node1IP:192.168.254.131node2IP:192.168.254.132OSversion:CentOS7miniCPUArchitecture:x86_64/amd64K8sversion:v1.23.17Dockerversion:20.10.232.安装前准备#安装依赖yuminstall-ycurlwgetsystemdbash-completi......
  • docker安装mysql8
    一、开始安装#新建挂载目录mkdir-p/opt/docker/mysql/datamkdir-p/opt/docker/mysql/confvim/opt/docker/mysql/conf/my.cnf[root@centos01mysql]#cdconf/[root@centos01conf]#lsmy.cnf[root@centos01conf]#catmy.cnf[client]default-character-set=utf8mb4[m......
  • Proxmox VE 7.x ,8.x 安装 NVIDA GRID vGPU 以及 Intel SR-IOV vGPU,一键安装脚本
    在Gitee上创建了一个项目。包括了NVIDIA和Intel核显启用vGPU的脚本。 项目地址:https://gitee.com/deskpool/proxmox-vgpu脚本支持ProxmoxVE7.x和8.x,支持NVIDAGRIDvGPU和   IntelSR-IOVvGPU。 介绍ProxmoxVE上支持vGPU的脚本。包括NVIDAGRIDvGP......
  • Docker安装部署Jenkins并发布NetCore应用
    Docker安装Jenkins#拉取镜像dockerpulljenkins/jenkins#查看镜像dockerimages#运行jenkins#8080端口为jenkinsWeb界面的默认端口13152是映射到外部:前面的是映射外部#50000端口为jenkins的默认代理节点(Agent)通信端口13153是映射到外部#--restart=on-fa......
  • 消息中间件RabbitMQ_RabbitMQ集群搭建8
    一、集群搭建概述摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性......
  • Ubuntu 上安装 Docker
    步骤1:删除任何现有的Docker包但在跳到安装部分之前,有必要删除所有以前安装的Docker。要卸载以前的Docker,请使用以下命令。sudoaptremovedocker.iodocker-docdocker-composedocker-compose-v2podman-dockercontainerdrunc步骤2:安装依赖项第一步是安装一些必......
  • Winodows安装Mysql 8.0.36 简单教程
    下载https://dev.mysql.com/downloads/mysql/选择下载简单版本即可安装1.解压将下载下来的安装包进行解压2.mysql初始化用cmd进入的mysql的解压包的bin目录里,执行初始化命令mysqld--initialize--console记录一下mysql初始化密码,备用。3.启动mysqlnetstartmy......
  • 2024-4-15 rpm与yum安装及管理程序 162004
    rpm与yum安装及管理程序目录rpm与yum安装及管理程序一、Linux应用程序基础1.1、应用程序与系统命令的关系1.2、典型应用程序的目录结构1.3、常见的软件包封装类型二、RPM包管理工具2.1一般命名格式2.2rpm命令的格式2.3安装卸载升级三.yum3.1基本格式3.2安装本地yum仓库四:编译......
  • win11安装deepinWSL
    背景近期接收到反馈说win11下deepinWSL无法使用,随即搞了台windows11最新版本试了试,果然不能用……我启动的时候给我报了个这个错误:这玩意谁能看懂是啥原因……其实所有的WSL可能都不能用了,解决方法都可以参考下面内容分析随即找到我们的研发大佬帮忙看看。Q:之前明明......