第1.2章:StarRocks部署--部署环境准备
集硬件推荐
StarRocks对服务器配置的基础要求不⾼,测试环境2核4G内存下也能够正常进⾏⼀些⼩数据规模的查询。在⽣产环境下或者我们⽐较关注性能时,StarRocks各实例推荐的硬件配置为:
实例名称配置要求
FE8核16GB万兆⽹卡 及以上(并发不⾼时可与BE混布)
BE16核64GB万兆⽹卡 及以上 CPU必需⽀持AVX2指令集
Broker⽆特别要求,通常与BE节点混布,与BE节点数量相同
为保证集性能及数据安全性,我们建议⽣产环境最少使⽤三台16核32G万兆⽹卡的服务器。假设node01、node02、node03均为符合要求的服务器,⽣产环境最⼩部署架构⽰例:
集节点192.168.110.116
(node01)
192.168.110.117
(node02)
192.168.110.118
(node03)
部署服务1 FE(Leader)
1 BE
1 Broker
1 MySQL-Client
1 FE(Observer)
1 BE
1 Broker
1 BE
1 Broker
其中,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上。
集环境校验及准备
在了解了StarRocks集所需的硬件配置后,我们还需要对集服务器进⾏必要的环境校验及系统调优。StarRocks的运⾏环境准备可简单分为“必需类”与“优化类”两⼤类。在集部署前建议结合情况完成下⽂列出的全部准备⼯作,因为“优化类”配置对StarRocks性能也会有⼀定的影响。
必需类准备
检查
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的指令集⽀持情况。
操作系统检查
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
服务器IP配置
在部署FE或BE实例时,为了避免服务器多⽹卡情况下StarRocks⽆法准确判断出需要使⽤的IP,我们会在各实例配置⽂件中使⽤
priority_networks参数绑定IP。
同时,由于当前StarRocks运⾏时会将集内各实例绑定的IP等信息存储于本地⽬录中,若服务器节点内⽹IP改变,集实例将⽆法正常运⾏(或需要通过较为繁琐的元数据恢复等操作进⾏处理),故运⾏StarRocks的服务器IP(内⽹)需要是固定的。服务器系统配置为固定IP 操作见附录⼀:服务器配置固定IP。
集校时
集内各FE实例所在服务器最多允许5秒的时钟偏差,可使⽤NTP协议同步⽹络时间或进⾏集内部校时。具体校时操作见附录⼆:集时间同步。
修改打开⽂件数限制
当打开⽂件数限制过⼩时,BE实例可能⽆法正常启动,使⽤ulimit -n查看⽂件打开⽂件数限制:
[root@node01 ~]# ulimit -n
1024
若返回值<65535,则需要修改/etc/f:
[root@node01 ~]# vi /etc/f
免费永久的linux服务器在末尾加⼊配置(表⽰:所有⽤户所有组,软限制和硬限制,对⽂件打开数,设为65535):
* soft nofile 65535
* hard nofile 65535
修改后需要断开远程⼯具(如Xshell等)后重新连接⽅可⽣效,或者,直接再临时修改⼀次,使⽤:
[root@node01 ~]# ulimit -n 65535
确认⽣效:
[root@node01 ~]# ulimit -n
65535
检查时区
为避免带有时间戳的数据在数据导⼊过程中出现时差问题,我们需要检查设置系统时区为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
若时区不为Asia/Shanghai,设置命令:
[root@node01 ~]# timedatectl set-timezone Asia/Shanghai
配置防⽕墙
为保证集间的正常通信,我们需要根据实际情况选择关闭内⽹防⽕墙或开放防⽕墙中集实例所需端⼝,以下操作a或b为⼆选⼀:a)关闭防⽕墙
使⽤命令关闭防⽕墙:
[root@node01 ~]# systemctl stop firewalld
确认防⽕墙状态已关闭:
[root@node01 ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
再关闭其开机⾃启:
[root@node01 ~]# systemctl disable firewalld
b)开放防⽕墙内⽹端⼝
StarRocks各实例默认使⽤的端⼝有:8000、8030、8040、8060、9010、9020、9030、9050、9060。若上述端⼝不与服务器中其他服务的端⼝冲突,通常不建议修改。
以FE为例,部署前若需修改端⼝,可在配置⽂件fe/f中修改为需要使⽤的端⼝(再次注意集中FE的http端⼝需要⼀致,默认为8030):
# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
防⽕墙开放集实例默认端⼝命令:
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=8030/tcp --permanent
firewall-cmd --zone=public --add-port=8040/tcp --permanent
firewall-cmd --zone=public --add-port=8060/tcp --permanent
firewall-cmd --zone=public --add-port=9010/tcp --permanent
firewall-cmd --zone=public --add-port=9020/tcp --permanent
firewall-cmd --zone=public --add-port=9030/tcp --permanent
firewall-cmd --zone=public --add-port=9050/tcp --permanent
firewall-cmd --zone=public --add-port=9060/tcp --permanent
firewall-cmd --reload
查看开放的端⼝:
[root@node01 ~]# firewall-cmd --list-port
8030/tcp 8000/tcp 8060/tcp 9010/tcp 9020/tcp 9030/tcp 9050/tcp 9060/tcp 8040/tcp
这⾥注意,上⾯提到的端⼝均为内⽹端⼝,也即集内部相互通信的端⼝,⽽并⾮暴露给外⽹的端⼝。⽣产环境下,通常只需要开放两个外⽹端⼝。即:
FE http_port:默认8030
FE query_port:默认9030
各端⼝详细说明见附录三:StarRocks相关端⼝。
安装JDK
StarRocks依赖JDK 1.8+环境,Oracle JDK 1.8+或OpenJDK 8+均可以使⽤(下⽂演⽰使⽤OpenJDK 1.8.0_41):[root@node01 ~]# java -version
openjdk version "1.8.0_41"
OpenJDK Runtime Environment (build 1.8.0_41-b04)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
OpenJDK 8的安装操作见附录四:安装OpenJDK。
安装mysql-client
StarRocks采⽤MySQL协议进⾏通信,⽤户可通过mysql-client连接到StarRocks集。选择mysql-client版本时要求采⽤5.1之后的版本,因为5.1之前不能⽀持长度超过16个字符的⽤户名(下⽂演⽰使⽤mysql -client-5.7.35)。
为⽅便集部署和运维,我们通常建议在集服务器中选择⼀个节点安装mysql-client。当然,我们也可以不安装mysql-client,通过外部的SQLyog、DBeaver、Navicat等图形化⼯具直接访问StarRocks。
mysql-client-5.7.35的安装操作见附录五:安装mysql-client-5.7.35。
优化类准备
关闭SELINUX
若我们的⽣产服务器已经针对安全性做了⼀些处理,例如VPN、跳板机、堡垒机等,那建议将SELINUX关闭掉。查看SElinux服务的运⾏状态:
[root@node01 ~]# getenforce
Enforcing
为避免重启服务器,我们可以先临时关闭再永久关闭。临时关闭:
[root@node01 ~]# setenforce 0
永久关闭:
[root@node01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
验证:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论