1.1 集群硬件推荐
StarRocks对服务器配置的基础要求不高,测试环境2核4G内存下也能够正常进行一些小数据规模的查询。在生产环境下或者我们比较关注性能时,StarRocks各实例推荐的硬件配置为:
实例名称 |
配置要求 |
FE |
8核16GB万兆网卡 及以上(并发不高时可与BE混布) |
BE |
16核64GB万兆网卡 及以上 CPU必需支持AVX2指令集 |
Broker |
无特别要求,通常与BE节点混布,与BE节点数量相同 |
为保证集群性能及数据安全性,我们建议生产环境最少使用三台16核32G万兆网卡的服务器。假设node01、node02、node03均为符合要求的服务器,生产环境最小部署架构示例:
其中,node01部署一个FE作为Leader,node02部署一个FE Observer提供元数据备份。集群三个节点各部署一个BE,可保证生产环境数据使用StarRocks默认的三副本存储(测试环境可以使用单副本)。
在node01上我们还可以安装mysql-client。StarRocks兼容MySQL协议,推荐使用mysql-client进行访问,也可以使用SQLyog、DBeaver、Navicat、Datagrip等图形化工具,将StarRocks视为MySQL进行连接访问。
特别注意,一台机器上只可以部署该集群的单个FE实例,因为同一集群中所有FE实例的http_port需要相同。
此外,虽然一台机器上可以错开端口部署多个BE实例,但如果需要3副本数据,那么至少需要3台机器各部署一个BE实例,这是因为StarRocks的副本均衡策略不会将同一个Tablet的副本部署在同一个IP的BE上。
1.2 集群环境校验及准备
在了解了StarRocks集群所需的硬件配置后,我们还需要对集群服务器进行必要的环境校验及系统调优。StarRocks的运行环境准备可简单分为“必需类”与“优化类”两大类。在集群部署前建议结合情况完成下文列出的全部准备工作,因为“优化类”配置对StarRocks性能也会有一定的影响。
1.2.1 必需类准备
StarRocks的向量化技术需要CPU的AVX2指令集支持才能发挥效果,所以部署BE服务的机器CPU必需支持AVX2指令集。在Linux中,使用如下命令检查CPU是否支持:
[root@node01 ~]# cat /proc/cpuinfo | grep avx2
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt arat
有结果输出即表明CPU支持。如果无输出,则需要更换支持AVX2的机器。部分情况下,我们会在Windows系统下使用虚拟机安装CentOS作为测试环境,此时我们可以使用CPU-Z、AIDA64等工具在Windows下检查宿主机CPU的指令集支持情况
1.2.1.2 操作系统检查
StarRocks要求系统为Linux CentOS 7及以上版本(下文演示使用CentOS 7.6),内核版本建议在3.10以上,查看系统及内核信息:
[root@node01 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node01 ~]# uname -a
Linux node01 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
————————————————
版权声明:本文为CSDN博主「流木随风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ult_me/article/details/121493170
1.2.1.3 服务器IP配置
在部署FE或BE实例时,为了避免服务器多网卡情况下StarRocks无法准确判断出需要使用的IP,我们会在各实例配置文件中使用priority_networks参数绑定IP。
同时,由于当前StarRocks运行时会将集群内各实例绑定的IP等信息存储于本地目录中,若服务器节点内网IP改变,集群实例将无法正常运行(或需要通过较为繁琐的元数据恢复等操作进行处理),故运行StarRocks的服务器IP(内网)需要是固定的。服务器系统配置为固定IP操作见附录一:服务器配置固定IP。
1.2.1.4 集群校时
集群内各FE实例所在服务器最多允许5秒的时钟偏差,可使用NTP协议同步网络时间或进行集群内部校时。具体校时操作见附录二:集群时间同步。
1.2.1.5 修改打开文件数限制
当打开文件数限制过小时,BE实例可能无法正常启动,使用ulimit -n查看文件打开文件数限制:
[root@node01 ~]# ulimit -n
1024
若返回值<65535,则需要修改/etc/security/limits.conf:
[root@node01 ~]# vi /etc/security/limits.conf
在末尾加入配置(表示:所有用户所有组,软限制和硬限制,对文件打开数,设为65535):
* soft nofile 65535
* hard nofile 65535
修改后需要断开远程工具(如Xshell等)后重新连接方可生效,或者,直接再临时修改一次,使用:
[root@node01 ~]# ulimit -n 65535
确认生效:
[root@node01 ~]# ulimit -n
65535
1.2.1.6 检查时区
为避免带有时间戳的数据在数据导入过程中出现时差问题,我们需要检查设置系统时区为Asia/Shanghai:
查看时区:
[root@node01 ~]# timedatectl
Local time: Tue 2021-09-07 19:31:28 CST
Universal time: Tue 2021-09-07 11:31:28 UTC
RTC time: Tue 2021-09-07 11:31:29
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
————————————————
版权声明:本文为CSDN博主「流木随风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ult_me/article/details/121493170
若时区不为Asia/Shanghai,设置命令:
[root@node01 ~]# timedatectl set-timezone Asia/Shanghai
1.2.1.7 配置防火墙
[root@node01 ~]# systemctl stop firewa