前期最小化部署了StarRocks,单台主机sr01上运行FE、BE,本次扩容2节点sr02、sr03,sr02上分别增加FE、BE,sr03上增加BE、Broker。

前述最小化单机部署,请移步:
https://mp.weixin.qq.com/s/6hdG6r2-fZ_msSQbq-KPZw
https://mp.weixin.qq.com/s/FPw8lBJle9pxaBWqyGyspQ

0.1 基本配置
1) 硬件情况
服务器硬件(虚拟机3台,后续两台做扩容):
CPU:4C
内存:8G
硬盘:sda 300G, sdb 300G,单独挂载在doridb目录下。
2) 软件清单
CentOS:7.7.1908
StarRocks-2.2.0.tar.gz
jdk-8u281-linux-x64.tar.gz
mysql-5.7.33-el7-x86_64.tar.gz
0.2 组件清单-角色划分
hosts ROLE
sr01 FE Leader/BE [部署完成]
sr02 FE OBSERVER/BE [本次扩容]
sr03 Broker/BE [本次扩容]
sr01上部署FE FOLLOWER使其成为Leader,同时部署BE[已完成];
sr02上部署FE令其作为OBSERVERr,同时部署BE[本次扩容节点];
sr03部署一个Broker方便后面学习数据导入,同时部署BE[本次扩容节点]。
有关StarRocks架构详细介绍,详见上篇文章《StarRocks简介》章节"3. 架构介绍"。
https://mp.weixin.qq.com/s/PaqZ-9yM2FFs-cF7Cr7fPA
0.3 步骤说明
步骤1-8为扩容前期准备
步骤9-13为扩容过程
系统安装(略)
1) 主机名设置[sr02-03]
hostnamectl set-hostname sr02hostnamectl set-hostname sr03
2) 增加hosts解析[sr01-03]
echo "192.168.80.31 sr01" >> /etc/hostsecho "192.168.80.32 sr02" >> /etc/hostsecho "192.168.80.33 sr03" >> /etc/hosts
内存页(page)swap到磁盘会影响sr的性能,需要关闭。
2.1 临时关闭
free -hswapoff -afree -h
2.2 永久关闭
1) 注释掉/etc/fstab中的swap信息
注释swap
sed -i 's/\/dev\/mapper\/centos-swap/#\/dev\/mapper\/centos-swap/g' etc/fstab
查看注释结果
grep swap etc/fstab#/dev/mapper/centos-swap swap swap defaults 0 0
2) 调整swappiness参数
echo vm.swappiness=0 >> /etc/sysctl.conf
3) 重启生效
当前已临时关闭,不需要要重启
reboot
4)验证(Swap行均为0)
free -h
查看selinux状态
getenforce
临时关闭
setenforce 0
永久关闭状态-需重启,临时关闭后不需要重启
sed -i 's/=enforcing/=disabled/g' etc/selinux/config
安装期间避免端口不能访问而导致的异常,可以关闭防火墙,详见4.1,也可以打开sr对应防火墙端口,详见4.2。
4.1 关闭防火墙操作
firewall[CentOS7/8]
systemctl status firewalldsystemctl stop firewalldsystemctl disable firewalld
iptables[CentOS5/6]
chkconfig iptables offservice iptables statusservice iptables stop
4.2 开放防火墙端口
1) sr标准版端口
8000、8030、8040、8060、9010、9020、9030、9050、9060
2) 逐个开放端口
firewall-cmd --zone=public --add-port=8000/tcp --permanentfirewall-cmd --zone=public --add-port=8030/tcp --permanentfirewall-cmd --zone=public --add-port=8040/tcp --permanentfirewall-cmd --zone=public --add-port=8060/tcp --permanentfirewall-cmd --zone=public --add-port=9010/tcp --permanentfirewall-cmd --zone=public --add-port=9020/tcp --permanentfirewall-cmd --zone=public --add-port=9030/tcp --permanentfirewall-cmd --zone=public --add-port=9050/tcp --permanentfirewall-cmd --zone=public --add-port=9060/tcp --permanent
关闭端口参考
firewall-cmd --zone=public --remove-port=8000/tcp --permanent
3) 配置立即生效
firewall-cmd --reload
4) 查看所有开放端口
firewall-cmd --zone=public --list-ports
单实例FE、BE时,不涉及各节点时间同步,为了和其它业务系统进行交互,建议设置ntp。
注:在sr集群中,FE所在服务器的时钟最多允许5秒时钟偏差,需要进行时间同步。
1) 安装ntp
yum -y install ntp
2) 校准时间
ntpdate cn.pool.ntp.org
3) 使用crontab定时计划任务
crontab -e00 12 * * * sbin/ntpdate cn.pool.ntp.org
[表示每隔12个小时同步一次。规则:分、时、日、月、星期]
4) 重启crontab计划任务
systemctl reload crond
5) 查看时间
查看时间,确保3个节点时间同步正常,相差不超过5秒,否则集群配置失败。
date
文件描述符限制过小会导致sr BE启动报错,永久设置操作如下:
1) 修改limits.conf
修改
echo "* soft nofile 65536" >> /etc/security/limits.confecho "* hard nofile 65536" >> /etc/security/limits.conf
查看
cat etc/security/limits.conf
2) 查看更改生效-需要重新登录会话
ulimit -n
sr要求GCC 4.8.2+
1) 各主机安装gcc
yum -y install gcc
2) 查看安装后版本
gcc --version...sr01 | CHANGED | rc=0 >>gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) #当前4.8.5,gcc4.8.2以上均可Copyright (C) 2015 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE....
8.1 安装包准备
jdk8官网下载链接如下:
https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
下载版本:jdk-8u281-linux-x64.tar.gz
8.2 检查并移除自带jdk
查看CentOS是否自带openjdk环境:
yum list installed |grep java
若有自带安装的JDK,卸载命令:
yum -y remove java-1.7.0-openjdk*yum -y remove java-1.8.0-openjdk*
8.3 安装
1) 创建安装目录
mkdir usr/java
2) 解压jdk安装包
tar -zxvf soft/jdk-8u281-linux-x64.tar.gz -C usr/java/
3) 配置环境变量
配置sr01主机/etc/profile
cat >> etc/profile << RUNDBA##### jdk enviroument #####export JAVA_HOME=/usr/java/jdk1.8.0_281export PATH=\$JAVA_HOME/bin:\$PATHexport CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar##############################RUNDBA
4) 查看java版本
当前java版本均为1.8.0_281
/usr/java/jdk1.8.0_281/bin/java -version
此时单机sr02、sr03准备完成,下面进行扩容。
1) 解压部署包
tar -zxvf soft/StarRocks-2.2.0.tar.gz
2) 新建/starrocks及fe、be文件夹
cd ~mkdir -p starrocks/femkdir -p starrocks/be
3) 移动StarRocks-2.2.0文件夹下fe文件夹和be文件夹到starrocks对应目录
mv StarRocks-2.2.0/fe/* starrocks/femv StarRocks-2.2.0/be/* starrocks/be
4) 在fe.conf中绑定ip
因为虚拟机网卡通常有多个ip,在fe.conf中绑定ip:
vim starrocks/fe/conf/fe.conf...# priority_networks = 10.10.10.0/24;192.168.0.0/16priority_networks = 192.168.80.32/24
5) 在be.conf中绑定ip
vim starrocks/be/conf/be.conf...# priority_networks = 10.10.10.0/24;192.168.0.0/16priority_networks = 192.168.80.32/24
6) 在fe目录中创建元数据目录
mkdir -p starrocks/fe/doris-meta
7) 在sr02启动
因为sr1上已有启动的fe,sr02的fe是作为observer。sr02的fe首次启动时需要指定sr中的sr1作为helper(仅首次需要):
[root@sr02 ~]# starrocks/fe/bin/start_fe.sh --helper 192.168.80.31:9010 --daemon/starrocks/fe/bin/start_fe.sh: line 82: /starrocks/fe/log/fe.out: No such file or directory/starrocks/fe/bin/start_fe.sh: line 83: /starrocks/fe/log/fe.out: No such file or directory
8) 在sr01主机将sr02中fe的节点至集群
回到sr1服务器,使用sql命令添加sr02中fe的节点至集群,按照咱们的规划,将sr02的fe作为observer,sql为:
ALTER SYSTEM ADD OBSERVER "192.168.80.32:9010";
执行完毕后再次执行下面语句来查看fe集群状态:
mysql> SHOW PROC '/frontends';+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+| Name | IP | HostName | EditLogPort | HttpPort | QueryPort | RpcPort | Role | IsMaster | ClusterId | Join | Alive | ReplayedJournalId | LastHeartbeat | IsHelper | ErrMsg |+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+| 192.168.80.32_9010_1619451569642 | 192.168.80.32 | sr02 | 9010 | 8030 | 9030 | 9020 | OBSERVER | false | 179399337 | true | true | 2215 | 2021-04-26 23:39:43 | false | || 192.168.80.31_9010_1619276424491 | 192.168.80.31 | sr01 | 9010 | 8030 | 9030 | 9020 | FOLLOWER | true | 179399337 | true | true | 2216 | 2021-04-26 23:39:43 | true | |+----------------------------------+---------------+----------+-------------+----------+-----------+---------+----------+----------+-----------+------+-------+-------------------+---------------------+----------+--------+2 rows in set (0.03 sec)
查看信息,Role: OBSERVER ,Alive:ture,证明sr02中的节点作为OBSERVER已添加成功。
FE已经扩容完毕,大家可以发现,扩容实际上和安装过程相同。
该节点BE后续进行扩容。
1) 解压部署包
tar -zxvf soft/StarRocks-2.2.0.tar.gz
2) 根目录下新建starrocks及be、apache_hdfs_broker文件夹
cd ~mkdir -p starrocks/bemkdir -p /starrocks/apache_hdfs_broker
3) 移动StarRocks-2.2.0文件夹下be文件夹和apache_hdfs_broker文件夹到starrocks对应目录
mv StarRocks-2.2.0/be/* /starrocks/bemv StarRocks-2.2.0/apache_hdfs_broker/* /starrocks/apache_hdfs_broker
4) 分别绑定be和broker的IP
在be.conf中绑定ip
vim /starrocks/be/conf/be.conf
配置为:
...# priority_networks = 10.10.10.0/24;192.168.0.0/16priority_networks = 192.168.80.33/24
5) broker配置文件apache_hdfs_broker.conf中绑定IP
vim /starrocks/apache_hdfs_broker/conf/apache_hdfs_broker.conf #新增网络配置...priority_networks = 192.168.80.33/24
在sr02先创建数据存放目录
mkdir -p /starrocks/be/storage
启动be:
/starrocks/be/bin/start_be.sh --daemon
回到sr01,使用sql,将sr02的be加入集群:
mysql> ALTER SYSTEM ADD BACKEND "192.168.80.32:9050";Query OK, 0 rows affected (0.01 sec)
同样,用命令查询状态:
mysql> SHOW PROC '/backends'\G*************************** 1. row ***************************BackendId: 10002Cluster: default_clusterIP: 192.168.80.31HostName: sr01HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2021-04-24 23:04:35LastHeartbeat: 2021-04-26 23:46:54Alive: trueSystemDecommissioned: falseClusterDecommissioned: falseTabletNum: 10DataUsedCapacity: 3.534 KBAvailCapacity: 297.736 GBTotalCapacity: 299.850 GBUsedPct: 0.70 %MaxDiskUsedPct: 0.70 %ErrMsg:Version: 1.14.5-8c4257eStatus: {"lastSuccessReportTabletsTime":"2021-04-26 23:46:00"}*************************** 2. row ***************************BackendId: 11025Cluster: default_clusterIP: 192.168.80.32HostName: sr02HeartbeatPort: 9050BePort: 9060HttpPort: 8040BrpcPort: 8060LastStartTime: 2021-04-26 23:46:49LastHeartbeat: 2021-04-26 23:46:54Alive: trueSystemDecommissioned: falseClusterDecommissioned: falseTabletNum: 5DataUsedCapacity: .000AvailCapacity: 297.807 GBTotalCapacity: 299.850 GBUsedPct: 0.68 %MaxDiskUsedPct: 0.68 %ErrMsg:Version: 1.14.5-8c4257eStatus: {"lastSuccessReportTabletsTime":"2021-04-26 23:46:49"}2 rows in set (0.01 sec)
转到sr03服务器,先创建数据存放目录:
mkdir -p /starrocks/be/storage
启动be:
/starrocks/be/bin/start_be.sh --daemon
回到sr01,使用sql,将sr03的be加入集群:
mysql> ALTER SYSTEM ADD BACKEND "192.168.80.33:9050";Query OK, 0 rows affected (0.00 sec)
继续,用命令查询状态:
mysql> SHOW PROC '/backends'\G...(略)
sr03状态,alive:true即为成功加入集群。
扩容后,be数据会从节点1分散到其它节点。
[root@sr02 ~]# ls /starrocks/be/storage/data/0 1 2 3 4
再转到sr03,启动broker。
/starrocks/apache_hdfs_broker/bin/start_broker.sh --daemon
回到sr01,输入sql将broker加入集群,假设sr03服务器的broker随意命名为broker3
mysql> ALTER SYSTEM ADD BROKER broker3 "192.168.80.33:8000";Query OK, 0 rows affected (0.01 sec)
输入sql查看broker状态:
mysql> SHOW PROC "/brokers"\G*************************** 1. row ***************************Name: broker3IP: 192.168.80.33Port: 8000Alive: trueLastStartTime: 2021-04-26 23:50:59LastUpdateTime: 2021-04-26 23:51:09ErrMsg:1 row in set (0.00 sec)
当前brokers3,Alive: true说明正常。
前期最小化部署了StarRocks,单台主机sr01上运行FE、BE,本次在sr02上扩容FE、BE,sr03上扩容BE,增加Broker,其实扩容和新建完全相同,be扩容后,数据会均匀分散到每个BE。
—END—





