StarRocks集群部署
文章目录
-
- StarRocks集群部署
-
- 准备工作
-
- 硬件要求
- 操作系统
- 软件要求
- 系统环境
- 集群部署
- 集群监控
- 集群审计日志采集
StarRocks集群部署
准备工作
分类 | 描述 | 说明 |
---|---|---|
硬件要求 | 集群至少拥有两台物理或虚拟节点。BE 节点 CPU 需支持 AVX2 指令集。各节点间需要通过万兆网卡及万兆交换机连接。 | FE 节点建议配置 8 核 或以上 CPU,16GB 或以上内存。 BE 节点建议配置 16 核 或以上 CPU,64GB 或以上内存。 通过运行 `cat /proc/cpuinfo |
操作系统 | Linux kernel 3.10 以上。 | |
软件要求 | 所有节点需安装 Java Development Kit(1.8 或以上,推荐使用1.8)。客户端节点需安装 MySQL 客户端(5.5 或以上)。 | |
系统环境 | 集群时钟需保持同步。用户需要有设置 ulimit -n 权限。 |
硬件要求
BE节点 cat /proc/cpuinfo |grep avx2
命令确认 CPU 是否支持 AVX2 指令集
FE 节点建议配置 8 核 或以上 CPU,16GB 或以上内存。
BE 节点建议配置 16 核 或以上 CPU,64GB 或以上内存。
操作系统
uname -a
命令查看 Linux内核版本,3.10 以上。
cat /etc/redhat-release
命令查看 Linux系统版本,需要是CentOS 7版本。
软件要求
- 安装java (全部节点)
# 查看系统是否自带java
rpm -qa | grep java# 安装java
yum list java*
yum -y install java-1.8.0-openjdk-develxxx# 设置java 环境变量
vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.xxx
export PATH=$PATH:$JAVA_HOME/binsource /etc/profile
- 安装mysql客户端(在SR集群任意一节点安装)
# 查看是否已存在mariadb
rpm -qa | grep mariadb
# 卸载
rpm -e --nodeps mariadb-libs-xxx# mysql客户端下载地址
https://dev.mysql.com/downloads/mysql/
# 下载mysql客户端
wget https://dev.mysql.com/downloads/file/?id=515636
# 安装ysql客户端
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm --nodeps --forcewget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.35-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.35-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.35-1.el7.x86_64.rpmrpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
- 安装 ntp服务
系统环境
- 建议关闭交换区,消除交换内存到虚拟内存时对性能的扰动。
# 临时修改,机器重启失效
echo 0 | sudo tee /proc/sys/vm/swappiness# 永久修改,机器重启生效
echo vm.swappiness = 0 >> /etc/sysctl.conf && sysctl -p && swapoff -a
- 建议使用 Overcommit,将
cat /proc/sys/vm/overcommit_memory
设置为1
。
# 临时修改,机器重启失效
echo 1 | sudo tee /proc/sys/vm/overcommit_memory# 永久修改,机器重启生效
echo vm.overcommit_memory = 1 >> /etc/sysctl.conf && sysctl -p && swapoff -a
- 修改用户最大进程数
cat << EOF |sudo tee -a /etc/security/limits.conf
* soft nproc 655350
* hard nproc 655350
* soft nofile 655350
* hard nofile 655350
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
EOF
- 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
- 禁用 transparent huge pages(THP)
# 临时禁用
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag# 查看
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag# 永久禁用,需重启节点
echo "if test -f /sys/kernel/mm/transparent_hugepage/enabled;then echo never > /sys/kernel/mm/transparent_hugepage/enabled;fi;if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag;fi">> /etc/rc.local
- 关闭SELINUX
# 查看
getenforce# 临时禁用
setenforce 0# 永久禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 高并发配置
# 查看
cat /proc/sys/kernel/threads-max
cat /proc/sys/vm/max_map_count
cat /proc/sys/kernel/pid_max# 临时生效
echo 655350 > /proc/sys/kernel/threads-max
echo 655350 > /proc/sys/vm/max_map_count
echo 655350 > /proc/sys/kernel/pid_max # 永久生效
echo "kernel.threads-max = 655350" >> /etc/sysctl.conf && sysctl -p
echo "vm.max_map_count = 655350" >> /etc/sysctl.conf && sysctl -p
echo "kernel.pid_max = 655350" >> /etc/sysctl.conf && sysctl -p
- TCP连接缓冲队列设置
# 临时生效
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
echo 65535 | sudo tee /proc/sys/net/core/somaxconn# 永久生效
echo "net.ipv4.tcp_abort_on_overflow = 1" >> /etc/sysctl.conf && sysctl -p
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf && sysctl -p
集群部署
实例名称 | 配置要求 |
---|---|
FE | 16核32GB万兆网卡 及以上(并发不高时可与BE混布) |
BE | 16核64GB万兆网卡 及以上 CPU必需支持AVX2指令集,磁盘建议SSD或NVME |
Broker | 无特别要求,通常与BE节点混布,与BE节点数量相同 |
使用 官方工具 stargo 进行快速部署
- 生产环境中,推荐将 FE/BE 数据目录(meta 或 storage)和日志目录分盘存储,来保证 IO 及存储空间互不影响。
- 建议BE独立部署,BE混合部署则 MEM_LIMIT=(机器内存-其他服务占用内存-2G(系统预留))
集群监控
参照 官方监控告警 使用Prometheus + Grafana 进行监控
集群审计日志采集
通过 官方Audit Loader 插件将 SR审计日志同步到 SR 库表 , 审计日志存储在本地文件 fe/log/fe.audit.log 。
在 plugin.conf max_batch_interval_sec
表示以指定的时间间隔 将审计日志攒批导入至 SR 中
参考
官方推荐参数配置