starrocks本地存算集群部署

starrocks本地存算集群部署

检查操作系统是否符合要求,参考官方文档:https://docs.starrocks.io/zh/docs/3.1/deployment/deployment_prerequisites/

主要包括,CPU是否有 avx2 指令、内存大小、磁盘空间大小和网卡带宽。

本文介绍的是手动部署starrocks,参考官方文档:https://docs.starrocks.io/zh/docs/3.1/deployment/deploy_manually/

存算一体架构中,StarRocks 由两种类型的节点组成:FE 和 BE。

架构如下图:

这两个服务是独立运行的,需要单独监控启停。

第一步:准备

1.1、创建工作目录

命令:mkdir -p /data/starrocks/{fe/{log,meta},storage,be/log} ,目录结构如下:

其中,fe 和 be 是两个服务对应的工作目录;fe/meta 是元数据存储地址;storage 是数据存储的位置。

1.2、下载和安装

下载地址可以访问官方地址获取:https://www.starrocks.io/download/community

目前稳定版是3.1,可直接下载:

wget https://releases.starrocks.io/starrocks/StarRocks-3.1.15-ubuntu-amd64.tar.gz

wget https://releases.starrocks.io/starrocks/StarRocks-3.1.15-centos-amd64.tar.gz

解压即安装,示例安装在 /opt 目录下

命令:tar zxvf StarRocks-3.1.15-XXXXXX-amd64.tar.gz

可以修改一下解压目录的名字,建议修改成 StarRocks-3.1.15

第二步:配置FE集群

在StarRocks集群中,FE节点只需要配置1个即可,BE节点可以添加1个或者多个。但是为了实现FE节点的高可用性,推荐FE也配置成集群。在FE集群中,如果某个FE节点出现故障,其他节点也可以正常访问。

FE集群的配置方法:可以先启动一个节点,然后使用 mysql 客户端登录此节点后,添加允许加入集群的 FE 节点,然后再启动其他节点,通过 --helper 参数,自动添加到集群中。

2.1、修改FE配置文件

FE配置位置在:/opt/StarRocks-3.1.15/fe/conf/fe.conf,文件内容如下:

LOG_DIR = /data/starrocks/fe/log
DATE = "$(date +%Y%m%d-%H%M%S)"
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseG1GC -XX:+PrintGCDetails -Xloggc:${LOG_DIR}/fe.gc.log.$DATE -XX:+PrintConcurrentLocks -Djava.security.policy=${STARROCKS_HOME}/conf/udf_security.policy"
JAVA_OPTS_FOR_JDK_11="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseG1GC -Xlog:gc*:${LOG_DIR}/fe.gc.log.$DATE:time"
sys_log_level = INFO
meta_dir = /data/starrocks/fe/meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
priority_networks = xx.xx.xx.0/24;yy.yy.yy.0/24
sys_log_dir = /data/starrocks/fe/log
audit_log_dir = /data/starrocks/fe/log

配置项解释:

可参考官方文档:https://docs.starrocks.io/zh/docs/3.1/administration/management/FE_configuration/

  • LOG_DIR:FE节点日志保存地址
  • DATE:日期格式
  • JAVA_OPT 和 JAVA_OPTS_FOR_JDK_11:启动 JVM 虚拟机的时候,添加的参数。如果是因为此项的参数导致 JVM 启动失败,则可以在此配置项中去掉对应的参数,再尝试能否启动。
  • sys_log_level:系统日志级别
  • meta_dir:元数据保存文件路径
  • http_port:API端口--http协议
  • rpc_port:远程过程调用端口,FE 节点上 Thrift 服务器的端口。
  • query_port:数据查询端口,可用mysql客户端连接
  • edit_log_port:FE 所在 StarRocks 集群中各 Leader FE、Follower FE、Observer FE 之间通信用的端口。
  • mysql_service_nio_enabled:mysql连接是否启动非阻塞IO模式 nio --Non-blocking IO,也是异步连接模式。
  • priority_networks:为那些有多个 IP 地址的服务器声明一个选择策略。没有匹配这条规则的ip,会随机选择一个。如果集群是跨多个网段的,需要把所有的网段都写上,用分号分隔
  • sys_log_dir:系统日志保存路径
  • audit_log_dir:审计日志保存路径

2.2、启动服务

配置 JAVA 环境变量,可参考往期文章:https://www.madbull.site/?p=1368 JAVA环境搭建

export JAVA_HOME=/xxx/xxx/jdk-xx-xx

export PATH=$JAVA_HOME/bin:$PATH

启动服务: /opt/StarRocks-3.1.15/fe/bin/start_fe.sh --daemon

加上 --daemon 是为了让服务后台运行。

查看端口是否启动成功:netstat -anlupt | grep -i listen | grep -E "90[123]0|8030"

如果启动失败,可以把 --daemon 参数去掉,前台执行查看报错,也可以在 /data/starrocks/fe/log 目录下查看原因。

2.3、增加允许加入的节点

用mysql客户端登录:mysql -P9030 -h127.0.0.1 -uroot

查看 FE 节点状态,命令:SHOW PROC '/frontends'\G

当前FE节点已经在系统里了,所以不需要添加。但是 其他FE节点需要手动添加

FE的角色role包括三种:LEADER、FOLLOWER、OBSERVER,区别如下:

FE 角色元数据管理节点选主
LeaderLeader FE 负责读写元数据。Follower 节点和 Observer 节点只能读取元数据,并将元数据写请求路由到 Leader FE。Leader FE 更新元数据,然后使用 BDE JE 将元数据更改同步到 Follower 节点和 Observer 节点。只有在元数据更改同步到超过一半的Follower 节点后,数据写入才被认为成功。Leader FE 技术上也是一个 Follower 节点,是从Follower 节点中选举出来的。要执行主节点选举,集群中必须有超过一半的Follower 节点处于活动状态。当 Leader FE 发生故障时,Follower 节点将开始另一轮主节点选举。
FollowerFollower 节点只能读取元数据。它们从 Leader FE 同步和重放日志以更新元数据。
ObserverObserver 节点从 Leader FE 同步和重放日志以更新元数据。Observer 节点 主要用于增加集群的查询并发性。 Observer 节点不参与主节点选举,因此不会增加集群的主节点选举压力。
文档来源:https://docs.starrocks.io/zh/docs/3.1/introduction/Architecture/#fe

添加允许接入的 FE 节点,命令:ALTER SYSTEM ADD FOLLOWER "xx.xx.xx.xx:nnnn";此处 FOLLOWER 也可以换成 OBSERVER,那么该节点就不参与选举了。

2.4、其他FE节点加入集群。

对于其他节点,先按照 2.1节 配置FE节点,然后运行命令:

./fe/bin/start_fe.sh --helper xx.xx.xx.xx:nnnn --daemon

就可以自动加入的 FE 集群中。其中 xx.xx.xx.xx:nnnn 就是2.1到2.3步骤一直配置的FE节点,也是FE第一个节点。

注意:

1、此命令是首次加入集群运行的指令,对于已经建立好的FE集群,重启单个FE节点,则不需要加 --helper 参数。加了也没用,因为FE 节点会尝试加入之前已经部署好的集群。

2、正式因为第1个原因,所以在运行此命令之前,/data/starrocks/fe/meta 目录不能存在之前搭建 FE 节点的数据,否则,不会自动添加新集群。数据清空:rm -rf /data/starrocks/fe/meta/*

可登录 FE 9030端口查看状态。

如果有更多FE节点,只需要重复按照这个方法添加即可。

至此,FE节点集群已经完成。

2.5、增加systemd监控

为了方便启停和监控,可以增加 systemd 监控配置文件 /lib/systemd/system/srfe.service,内容如下:

[Unit]
Description=StarRocks
Documentation=https://www.starrocks.io/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
NotifyAccess=all
RuntimeDirectory=StarRocks-3.1.15-fe
PrivateTmp=true
WorkingDirectory=/opt/StarRocks-3.1.15/fe

Environment=JAVA_HOME=/usr/share/elasticsearch/jdk
Environment=PATH=/usr/share/elasticsearch/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

ExecStart=/opt/StarRocks-3.1.15/fe/bin/start_fe.sh
ExecStop=/opt/StarRocks-3.1.15/fe/bin/stop_fe.sh

StandardOutput=journal
StandardError=inherit

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0

# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143

# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
MemoryLimit=20G
[Install]
WantedBy=multi-user.target

重现加载 systemd 配置:systemctl daemon-reload

启动StarRocks:systemctl start srfe

如果想给 集群访问 增加密码,可使用 mysql 客户端登录 9030 端口。然后参考往期文章:https://www.madbull.site/?p=33 MySql修改登录密码的几种方法。

第三步:配置BE集群

3.1、修改BE配置文件

BE配置位置在:/opt/StarRocks-3.1.15/be/conf/be.conf,文件内容如下:

sys_log_level = INFO
be_port = 9060
be_http_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
starlet_port = 9070
priority_networks = xx.xx.xx.0/24;yy.yy.yy.0/24
storage_root_path = /data/starrocks/storage
sys_log_dir = /data/starrocks/be/log
JAVA_HOME=/xxx/xxx/jdk-xx-xx

配置项解释:

可参考官方文档:https://docs.starrocks.io/zh/docs/3.1/administration/management/BE_configuration/

  • sys_log_level:系统日志级别。
  • be_port:BE 上 Thrift Server 的端口,用于接收来自 FE 的请求。
  • be_http_port:BE HTTP Server 端口。
  • heartbeat_service_port:BE 心跳服务端口,用于接收来自 FE 的心跳。
  • brpt_port:bRPC 的端口,可以查看 bRPC 的一些网络统计信息。
  • starlet_port:BE 和 CN 的额外 Agent 服务端口。
  • priority_networks:以 CIDR 形式指定 BE IP 地址,适用于机器有多个 IP,需要指定优先使用的网络。如果集群是跨多个网段的,需要把所有的网段都写上,用分号分隔。
  • storage_root_path:存储数据的目录以及存储介质类型。示例:/data1,medium:hdd;/data2,medium:ssd
  • sys_log_dir:系统日志保存路径。
  • JAVA_HOME:会根据此配置寻找java的路径。

直接启动即可,指令:/opt/StarRocks-3.1.15/be/bin/start_be.sh --daemon

其他BE节点也按照此方法启动即可。

如果BE启动不了,可以查看 /opt/StarRocks-3.1.15/be/log/data/starrocks/be/log 两个位置的日志。

注意:如果是新加入集群,/data/starrocks/storage 目录下不能有数据,尤其是 /data/starrocks/storage/meta 目录

3.2、增加允许加入的节点

需要登录 FE 节点,用mysql客户端登录:mysql -P9030 -h127.0.0.1 -uroot

查看 BE 节点状态,命令:SHOW PROC '/backends' \G

添加允许接入的 FE 节点,命令:ALTER SYSTEM ADD FOLLOWER "xx.xx.xx.xx:nnnn"

稍等,BE就会一个个连接过来。

3.3、增加systemd监控

为了方便启停和监控,可以增加 systemd 监控配置文件 /lib/systemd/system/srbe.service,内容如下:

[Unit]
Description=StarRocks
Documentation=https://www.starrocks.io/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
NotifyAccess=all
RuntimeDirectory=StarRocks-3.1.15-be
PrivateTmp=true
WorkingDirectory=/opt/StarRocks-3.1.15/be

ExecStart=/opt/StarRocks-3.1.15/be/bin/start_be.sh
ExecStop=/opt/StarRocks-3.1.15/be/bin/stop_be.sh

StandardOutput=journal
StandardError=inherit

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65535

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0

# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143

# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec=75
MemoryLimit=20G

[Install]
WantedBy=multi-user.target

重现加载 systemd 配置:systemctl daemon-reload

启动StarRocks:systemctl start srbe

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注