# 规划
'''
StarRocks 部署
'''
主机资源信息:
172.21.56.212
172.21.56.213
172.21.56.214
配置情况:
172.21.56.212 16C/64G/1T
172.21.56.213 16C/64G/1T
172.21.56.214 16C/64G/1T
# 规划
fe:
3 follower
be:
3 be
# 挂盘到 /data 下
安装与配置
# 下载2.5 版本的安装包
https://releases.starrocks.io/starrocks/StarRocks-2.5.22.tar.gz
# 下载3.1版本的安装包
get https://releases.starrocks.io/starrocks/StarRocks-3.1.15-centos-amd64.tar.gz
1. 下载StarRock 二进制包
wget https://releases.starrocks.io/starrocks/StarRocks-3.1.15-centos-amd64.tar.gz
2. 解压二进制包
# 并将 <OS> 替换为 centos 或 ubuntu。
tar -xzvf StarRocks-3.1.15-centos-amd64.tar.gz
二进制包中包含如下路径及文件:
路径/文件 说明
apache_hdfs_broker Broker 节点的部署路径。
fe FE 节点的部署路径。
be BE 节点的部署路径。
LICENSE.txt StarRocks license 文件。
NOTICE.txt StarRocks notice 文件。
# 将路径 fe 分发至所有 FE 实例,将路径 be 分发至所有 BE 或 CN 实例以用于手动部署。
cp -r fe ../
cp -r be ../
scp -r fe 172.21.56.213:/data/
scp -r be 172.21.56.213:/data/
scp -r be 172.21.56.214:/data/
scp -r fe 172.21.56.214:/data/
# 创建元数据路径
mkdir /data/fe_data
mkdir /data/be_data
# 内存设置
# 修改配置文件。
cat >> /etc/sysctl.conf << EOF
vm.overcommit_memory=1
EOF
# 使修改生效。
sysctl -p
# 关闭透明大页
# 永久变更。
cat >> /etc/rc.d/rc.local << EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
# 禁用swap空间
swapoff /<path_to_swap_space>
swapoff -a
#
/<path_to_swap_space> swap swap defaults 0 0
# 确认是否关闭
free -m
# 禁用Swappiness
# 修改配置文件。
cat >> /etc/sysctl.conf << EOF
vm.swappiness=0
EOF
# 使修改生效。
sysctl -p
# SSD和NVMe磁盘kyber调度算法
# 永久变更。
cat >> /etc/rc.d/rc.local << EOF
echo kyber | sudo tee /sys/block/${disk}/queue/scheduler
EOF
chmod +x /etc/rc.d/rc.local
# 如果不支持kyber调度算法,建议您使用 none(或 noop)调度算法。
# 永久变更。
cat >> /etc/rc.d/rc.local << EOF
echo none | sudo tee /sys/block/${disk}/queue/scheduler
EOF
chmod +x /etc/rc.d/rc.local
# 禁用SELinux
# 永久变更。
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
# 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
# LANG 变量
# 修改配置文件。
echo "export LANG=en_US.UTF8" >> /etc/profile
# 使修改生效。
source /etc/profile
# 时区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock
# ulimit设置
cat >> /etc/security/limits.conf << EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* hard memlock unlimited
* soft memlock unlimited
EOF
cat >> /etc/security/limits.d/20-nproc.conf << EOF
* soft nproc 65535
root soft nproc 65535
EOF
# tcp_abort_on_overflow配置
# 修改配置文件。
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_abort_on_overflow=1
EOF
# 使修改生效。
sysctl -p
# somaxconn
# 修改配置文件。
cat >> /etc/sysctl.conf << EOF
net.core.somaxconn=1024
EOF
# 使修改生效。
sysctl -p
# NTP设置
# 高并发配置
# max_map_count
# 修改配置文件。
cat >> /etc/sysctl.conf << EOF
vm.max_map_count = 262144
EOF
# 使修改生效。
sysctl -p
# 其他
echo 120000 > /proc/sys/kernel/threads-max
echo 200000 > /proc/sys/kernel/pid_max
# 创建fe和be的存储数据路径
mkdir /data/fedata /data/bedata
# 解压后配置
# ###
# 配置FE
修改fe.conf 中的端口号和 priority_networks为本机IP,使用默认端口号
vim fe.conf
# 检查jdk, 使用jdk1.8以上
java -version
# 创建 /data/fe/meta
mkdir /data/fe/meta
# 配置IP访问的话,直接启动fe进程
sh /data/fe/bin/start_fe.sh --daemon
# 查看fe日志,检查fe节点是否正常运行
cat /data/fe/log/fe.log | grep thrift
# ###
# 配置BE
# 创建数据存储路径
mkdir -p /data/bedata
# 修改be.conf 中的数据存储路径
# 将 <storage_root_path> 替换为您创建的数据存储路径。
storage_root_path = /data/bedata
# 配置端口号,使用默认
vim be.conf
# 修改priority_networks ,ip访问的话直接填写本机IP
# 如果是单节点be,需要加一个参数
default_replication_num = 1
# 启动be服务,使用IP访问
sh /data/be/bin/start_be.sh --daemon
# 检查be进程,启动后会多个9050端口号
cat /data/be/log/be.INFO | grep heartbeat
#
#
#
# ###
# 搭建集群
当所有fe 和be 服务启动后,开始搭建StarRocks集群
1. 必须安装mysql客户端5.5.0以上版本
2. 通过mysql连接到StarRocks,使用初始用户root登录,登录密码为空
# 并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port。
mysql -h 172.21.56.212 -P9030 -uroot
3. 查看leader fe
SHOW PROC '/frontends'\G
#
如果字段 Alive 为 true,说明该 FE 节点正常启动并加入集群。
如果字段 Role 为 FOLLOWER,说明该 FE 节点有资格被选为 Leader FE 节点。
如果字段 Role 为 LEADER,说明该 FE 节点为 Leader FE 节点。
#
4. 添加BE节点到集群
-- 将 <be_address> 替换为 BE 节点的 IP 地址(priority_networks)或 FQDN,
-- 并将 <heartbeat_service_port>(默认:9050)替换为您在 be.conf 中指定的 heartbeat_service_port。
# ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>", "<be2_address>:<heartbeat_service_port>", "<be3_address>:<heartbeat_service_port>";
ALTER SYSTEM ADD BACKEND "172.21.56.212:9050", "172.21.56.213:9050", "172.21.56.214:9050";
#
您可以通过一条 SQL 添加多个 BE 节点。每对 <be_address>:<heartbeat_service_port> 代表一个 BE 节点。
#
5. 执行sql查看be节点状态
SHOW PROC '/backends'\G
#
如果字段 Alive 为 true,说明该 BE 节点正常启动并加入集群。
#
# ###
# 部署高可用FE集群
高可用的 FE 集群需要在 StarRocks 集群中部署至少三个 Follower FE 节点。如需部署高可用的 FE 集群,您需要额外再启动两个新的 FE 节点。
1. mysql协议连接StarRocks,初始用户root,密码空
# 并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port。
mysql -h 172.21.56.212 -P9030 -uroot
2. 添加额外的FE到集群
-- 并将 <edit_log_port>(默认:9010)替换为您在新 FE 节点的 fe.conf 中指定的 edit_log_port。
# ALTER SYSTEM ADD FOLLOWER "<new_fe_address>:<edit_log_port>";
#
一个sql只能添加一个follower fe节点
#
ALTER SYSTEM ADD FOLLOWER "172.21.56.213:9010";
ALTER SYSTEM ADD FOLLOWER "172.21.56.214:9010";
3. 新的FE上启动fe服务
新的 FE 示例上启动终端,创建元数据存储路径,进入 StarRocks 部署目录,并修改 FE 配置文件 fe/conf/fe.conf。
配置完成后,通过以下命令为新 Follower FE 节点分配 helper 节点,并启动新 FE 节点:
必须在首次启动新 FE 节点时为其分配一个 helper 节点(本质上是一个现有的 Follower FE 节点)以同步所有 FE 元数据信息。
# 并将 <helper_edit_log_port>(默认:9010)替换为 Leader FE 节点的 edit_log_port。
sh /data/fe/bin/start_fe.sh --helper 172.21.56.212:9010 --daemon
#
您只需在第一次启动节点时指定参数 --helper。
#
# 查看新fe节点的日志
cat /data/fe/log/fe.log | grep thrift
# 同样的方式启动其他fe节点,最后检查fe节点状态
SHOW PROC '/frontends'\G
#
如果字段 Alive 为 true,说明该 FE 节点正常启动并加入集群。
如果字段 Role 为 FOLLOWER,说明该 FE 节点有资格被选为 Leader FE 节点。
如果字段 Role 为 LEADER,说明该 FE 节点为 Leader FE 节点。
#
相关命令
# ###
# StarRocks集群停止命令
1. 停止fe节点
sh /data/fe/bin/stop_fe.sh --daemon
2. 停止be节点
sh /data/be/bin/stop_be.sh --daemon
3. 停止CN节点
sh /data/be/bin/stop_cn.sh --daemon
# ###
# StarRocks集群启动命令
1. 启动fe节点
sh /data/fe/bin/start_fe.sh --daemon
2. 启动be节点
sh /data/be/bin/start_fe.sh --daemon
3. 启动CN节点
sh /data/be/bin/start_fe.sh --daemon
# ###
# 故障排除
1. FE 节点没有正常启动,定位问题 fe/log/fe.warn.log 中的日志来确定问题所在。
cat /data/fe/log/fe.warn.log
2. be没启动,定位问题
cat /data/be/log/be.WARNING
3. CN节点没启动,定位问题
cat /data/be/log/cn.WARNING