系统:Centos7 X86-64
3台服务器部署3个BE服务和3个FE服务,生产环境建议FE节点部署在单独服务器
服务器 | 服务 |
192.168.0.221 | BE、FE、jdk、Nginx |
192.168.0.222 | BE、FE、jdk |
192.168.0.223 | BE、FE、jdk |
1. 配置系统参数
a. 编辑/etc/security/limits.conf
在最后面加上下面的内容
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
重启连接命令行生效。
b. 关闭Transparent Huge Pages 与 优化部分内核参数
echo never > /sys/kernel/mm/transparent_hugepage/enabled;
chmod +x /etc/rc.d/rc.local;
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >>/etc/rc.d/rc.local;
echo "echo 120000 > /proc/sys/kernel/threads-max" >>/etc/rc.d/rc.local;
echo "echo 655360 > /proc/sys/vm/max_map_count" >>/etc/rc.d/rc.local;
echo "echo 200000 > /proc/sys/kernel/pid_max" >>/etc/rc.d/rc.local;
c. 编辑/etc/sysctl.conf
在最后面加上下面的内容
vm.overcommit_memory=1
vm.swappiness=0
fs.file-max = 6553560
vm.max_map_count=655360
fs.nr_open=20480000
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_abort_on_overflow=1
执行下面的命令生效
sysctl -p
d. 关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
e. 关闭防火墙
systemctl stop firewalld.service;
systemctl disable firewalld.service ;
setenforce 0;
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;
2. 安装
将安装需要的文件上传到服务器/opt目录下
2.1安装JDK
在所有服务器执行
a. 解压
cd /opt;
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /opt;
b. 配置环境变量
编辑/etc/profile文件,在文件最后面加上下面的内容,保存
export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
执行下面的命令
source /etc/profile;
2.2安装FE服务
a. 解压
在所有服务器执行
cd /opt;
tar -zxvf StarRocks-3.1.2.tar.gz -C /opt;
mv StarRocks-3.1.2 starrocks;
b. 创建元数据目录
在所有服务器执行
mkdir -p /opt/metadata
c. 编辑FE配置文件
/opt/starrocks/fe/conf/fe.conf,配置下面的内容
注意:不同服务器需要将priority_networks的值设置为服务器实际的IP,如:priority_networks = 192.168.0.221/24,可以使用ip addr命令查询ip地址
meta_dir = /opt/metadata
priority_networks = x.x.x.x/x
d.启动Leader 节点
注意:第一个启动的节点为Leader节点,第一个节点执行下面的命令启动
/opt/starrocks/fe/bin/start_fe.sh --daemon
查看是否启动成功
执行下面的命令
cat /opt/starrocks/fe/log/fe.log | grep thrift
如果日志打印以下内容,则说明该 FE 节点启动成功:
"2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020."
e.安装mysql客户端
在FE Leader节点执行下面的命令
cd /opt;
rpm -ivh mysql-community-client-5.7.42-1.el7.x86_64.rpm --force --nodeps;
f.连接FE服务
通过 MySQL 客户端连接到 StarRocks。您需要使用初始用户 root 登录,密码默认为空。
将 <fe_address> 替换为 Leader FE 节点的 IP 地址(priority_networks),
并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port
示例:如 mysql -h 192.168.0.221 -P9030 -uroot
mysql -h <fe_address> -P<query_port> -uroot
执行以下 SQL 查看 Leader FE 节点状态。
SHOW PROC '/frontends'\G
示例:
[root@localhost opt]# mysql -h 192.168.0.221 -P9030 -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.1.0
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
Name: 192.168.0.221_9010_1693906782665
IP: 192.168.0.221
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 904464764
Join: true
Alive: true
ReplayedJournalId: 659
LastHeartbeat: 2023-09-05 18:15:55
IsHelper: true
ErrMsg:
StartTime: 2023-09-05 17:39:51
Version: 3.1.2-4f3a2ee
1 row in set (0.04 sec)
如果字段 Alive 为 true,说明该 FE 节点正常启动并加入集群。
如果字段 Role 为 FOLLOWER,说明该 FE 节点有资格被选为 Leader FE 节点。
如果字段 Role 为 LEADER,说明该 FE 节点为 Leader FE 节点。
g.将额外的FE节点添加至集群
执行以下 SQL 将额外的 FE 节点添加至集群
注意:将 <new_fe_address> 替换为您需要添加的新 FE 节点的 IP 地址(priority_networks),
并将 <edit_log_port>(默认:9010)替换为您在新 FE 节点的 fe.conf 中指定的 edit_log_port。
示例:ALTER SYSTEM ADD FOLLOWER "192.168.0.222:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.0.223:9010";
ALTER SYSTEM ADD FOLLOWER "<new_fe_address>:<edit_log_port>";
f.启动第2、3个节点
执行下面的命令启动
注意:将 <helper_fe_ip> 替换为 Leader FE 节点的 IP 地址(priority_networks)
并将 <helper_edit_log_port>(默认:9010)替换为 Leader FE 节点的 edit_log_port
示例:/opt/starrocks/fe/bin/start_fe.sh --helper 192.168.0.221:9010 --daemon
/opt/starrocks/fe/bin/start_fe.sh --helper <helper_fe_ip>:<helper_edit_log_port> --daemon
e.查看是否启动成功
执行下面的命令
cat /opt/starrocks/fe/log/fe.log | grep thrift
如果日志打印以下内容,则说明该 FE 节点启动成功:
"2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020."
2.3安装BE服务
a.创建数据存储目录
注意:将 <storage_root_path> 替换为您要创建的数据存储路径。如mkdir -p /data/starrocksdata
mkdir -p <storage_root_path>
b.修改BE配置文件
编辑/opt/starrocks/be/conf/be.conf,配置下面的内容
注意:1.将 <storage_root_path> 替换为您创建的数据存储路径。如:storage_root_path = /data/starrocksdata
2.需要将priority_networks的值设置为服务器实际的IP,如:priority_networks = 192.168.0.221/24
storage_root_path = <storage_root_path>
priority_networks = x.x.x.x/x
c. 启动
/opt/starrocks/be/bin/start_be.sh --daemon
d. 查看是否启动成功
查看 BE 日志,检查 BE 节点是否启动成功
cat /opt/starrocks/be/log/be.INFO | grep heartbeat
如果日志打印以下内容,则说明该 BE 节点启动成功:
"I0614 17:41:39.782819 3717531 thrift_server.cpp:388] heartbeat has started listening port on 9050"
2.4 BE加入集群
a.安装mysql客户端
执行下面的命令
cd /opt;
rpm -ivh mysql-community-client-5.7.42-1.el7.x86_64.rpm --force --nodeps;
b.连接FE服务
通过 MySQL 客户端连接到 StarRocks。您需要使用初始用户 root 登录,密码默认为空。
# 将 <fe_address> 替换为 Leader FE 节点的 IP 地址(priority_networks)或 FQDN,
# 并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port。
# 如 mysql -h 192.168.0.221 -P9030 -uroot
mysql -h <fe_address> -P<query_port> -uroot
c. 添加 BE 节点至集群
# 将 <be_address> 替换为 BE 节点的 IP 地址(priority_networks)或 FQDN,
# 并将 <heartbeat_service_port>(默认:9050)替换为您在 be.conf 中指定的 heartbeat_service_port。
#如 ALTER SYSTEM ADD BACKEND "192.168.0.221:9050","192.168.0.222:9050","192.168.0.223:9050";
ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>", "<be2_address>:<heartbeat_service_port>", "<be3_address>:<heartbeat_service_port>";
说明
您可以通过一条 SQL 添加多个 BE 节点。每对 <be_address>:<heartbeat_service_port> 代表一个 BE 节点
执行以下 SQL 查看 BE 节点状态。
SHOW PROC '/backends'\G
- 示例:
MySQL [(none)]> SHOW PROC '/backends'\G
*************************** 1. row ***************************
BackendId: 10007
IP: 172.26.195.67
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-06-15 15:23:08
LastHeartbeat: 2023-06-15 15:57:30
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 30
DataUsedCapacity: 0.000
AvailCapacity: 341.965 GB
TotalCapacity: 1.968 TB
UsedPct: 83.04 %
MaxDiskUsedPct: 83.04 %
ErrMsg:
Version: 3.0.0-48f4d81
Status: {"lastSuccessReportTabletsTime":"2023-06-15 15:57:08"}
DataTotalCapacity: 341.965 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.01 %
CpuUsedPct: 0.0 %
如果字段 Alive 为 true,说明该 BE 节点正常启动并加入集群。
2.5安装Nginx进行负载均衡
Nginx可以部署在FE节点任意一个节点上或者单独一台服务器。
将update_host.sh、nginx_install上传到Nginx服务器/opt目录下
a.配置主机名
在nginx服务器上执行下面的命令将配置主机名,将<feserver*>替换为实际的fe节点的IP地址
示例:export feserver1=192.168.0.221;
export feserver2=192.168.0.222;
export feserver3=192.168.0.223;
cd /opt;
export feserver1=<feserver1>
export feserver2=<feserver2>
export feserver3=<feserver3>
bash update_host.sh;
b.安装nginx
cd /opt/nginx_install;
bash nginx_install.sh;
3.运维
启动
/opt/starrocks/fe/bin/start_fe.sh --daemon
停止 FE 节点
/opt/starrocks/fe/bin/stop_fe.sh --daemon
停止 BE 节点
/opt/starrocks/be/bin/start_be.sh --daemon
/opt/starrocks/be/bin/stop_be.sh --daemon