StarRocks集群部署
Starrocks 是一款基于 MPP 架构的高性能实时分析型数据库,专为 OLAP(联机分析处理)场景 设计,尤其擅长处理海量数据的实时分析、复杂查询和多维统计。
硬件
CPU:StarRocks依靠AVX2指令集充分发挥其矢量化能力。因此,在生产环境中,强烈建议您将StarRocks部署于x86架构CPU的服务器上。
在终端中运行以下命令来检查CPU是否支持AVX2指令集:cat /proc/cpuinfo | grep avx2
操作系统
StarRocks 支持在CentOS Linux 7.9 和 Ubuntu Linux 22.04上部署。(推荐在CentOs 7.9上部署)
网络
建议使用万兆网络连接(10 Gigabit Ethernet,简称10GE)确保StarRocks集群内数据能够跨节点高效传输。
一、数据盘挂载目录
#基于LVM方式挂载数据盘
数据盘挂载目录 折叠源码
安装逻辑卷管理工具:yum install lvm2 -y列出系统中的块设备信息,包括磁盘、分区和挂载点等:lsblk
创建pv:pvcreate /dev/vdb
查看:pvs创建vg:vgcreate vgdata /dev/vdb
查看:vgs创建lv:lvcreate -l +100%free -n lvdata vgdata
查看:lvs格式化:mkfs.xfs /dev/mapper/vgdata-lvdata创建目录:mkdir /starrocks-data
查看:ls /查看块设备标识信息:blkid
/dev/mapper/vgdata-lvdata: UUID="0f105c51-1280-4511-ab4f-36c57bbcc53c" TYPE="xfs"vim /etc/fstab
在文件最后一行新增UUID信息:UUID=0f105c51-1280-4511-ab4f-36c57bbcc53c /starrocks-data xfs defaults 0 0执行自动挂载命令:mount -a查看文件系统磁盘空间:df -h
二、配置hostname
#修改主机名:分别在各节点上执行
hostnamectl set-hostname xxx-sr1
hostnamectl set-hostname xxx-sr2
hostnamectl set-hostname xxx-sr3
hostnamectl set-hostname xxx-sr4
hostnamectl set-hostname xxx-sr5
hostnamectl set-hostname xxx-sr6
#设置hosts
1xx.21.2x3.194 xxx-sr1
1xx.21.2x3.45 xxx-sr2
1xx.21.2x3.31 xxx-sr3
1xx.21.2x3.50 xxx-sr4
1xx.21.2x3.193 xxx-sr5
1xx.21.2x3.112 xxx-sr6
三、配置SSH免密
第一步:在各节点生成公钥和私钥
ssh-keygen -t rsa
第二步:将生成的公钥写入authorized_keys文件
copy其它节点的公钥到sr1节点
ssh-copy-id -i ~/.ssh/id_rsa.pub xxx-sr1
第三步:在sr1机器上执行,将文件分发到其它机器。
scp authorized_keys root@xxx-sr2:~/.ssh
第四步:验证ssh免密登录
ssh xxx-sr2
保证每台机器都能免密登陆所有机器
注: 我之前 发有一篇关于服务器之间用脚本实现全自动化免密登陆,请在我的历史文章叫搜索一下。
四、时间同步
安装chrony:yum install chrony
编辑文件:/etc/chrony.conf #注 这里我用的是我公司的时间服务器,大家可根据自身情况来设置。
cat > /etc/chrony.conf <<EOF
server 1x2.2x.2x8.4 iburst
server 1x2.2x.2x9.8 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF
#设置开机启动和重启
systemctl enable chronyd
systemctl restart chronyd
#检测时间同步
chronyc sourcestats
五、配置jdk
mkdir /usr/java -p
将jdk压缩包上传至服务器目录:/usr/java
解压:tar -xf jdk-8u321-linux-x64.tar.gz
配置java环境变量,编辑文件:vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_321
export PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVAHOME/bin:PATH
使配置生效:source /etc/profile
检查是否安装成功:java -version
六、部署工具StarGo
#创建目录
mkdir -p /usr/local/apps
mkdir -p /opt/starrocks
mkdir -p /starrocks-data/starrocks
上传文件:#大家可以去官网下载后上传到服务器上
stargo-v2.3.tar.gz
StarRocks-3.1.8.tar.gz
#校验安装包完整性
md5sum StarRocks-3.1.8.tar.gz
8989a2483856f11eac288e66344a5649 StarRocks-3.1.8.tar.gz
#检测服务器环境
解压缩:tar -xf stargo-v2.3.tar.gz
cd /usr/local/apps/stargo-v2.3
执行检测命令:./env_check.sh
调整环境参数:
vim /etc/sysctl.conf
vm.swappiness=0
vm.overcommit_memory=1
vm.max_map_count=262144
sysctl -p
echo 1 | sudo tee /proc/sys/vm/overcommit_memory
echo 262144 | sudo tee /proc/sys/vm/max_map_count
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
#修改配置文件
/usr/local/apps/stargo-v2.3
备份:cp deploy-template.yaml deploy-template.yaml.bak
修改文件名:mv deploy-template.yaml deploy-dev.yaml
编辑文件:vim deploy-dev.yaml
global:user: rootssh_port: 22fe_servers:- host: 1x2.2x.2x3.7ssh_port: 22java_heap_mem: 10240http_port: 8030rpc_port: 9020query_port: 9030edit_log_port: 9010deploy_dir: /opt/starrocks/femeta_dir: /starrocks-data/starrocks/fe/metalog_dir: /starrocks-data/starrocks/fe/logpriority_networks: 1x2.2x.2x3.7role: FOLLOWERconfig:sys_log_level: "INFO"- host: 1x2.2x.2x3.75ssh_port: 22java_heap_mem: 10240http_port: 8030rpc_port: 9020query_port: 9030edit_log_port: 9010deploy_dir: /opt/starrocks/femeta_dir: /starrocks-data/starrocks/fe/metalog_dir: /starrocks-data/starrocks/fe/logpriority_networks: 1x2.2x.2x3.75role: FOLLOWERconfig:sys_log_level: "INFO"- host: 1x2.2x.2x3.63ssh_port: 22java_heap_mem: 10240http_port: 8030rpc_port: 9020query_port: 9030edit_log_port: 9010deploy_dir: /opt/starrocks/femeta_dir: /starrocks-data/starrocks/fe/metalog_dir: /starrocks-data/starrocks/fe/logpriority_networks: 1x2.2x.2x3.63role: FOLLOWERconfig:sys_log_level: "INFO"be_servers:- host: 172.21.243.111ssh_port: 22be_port: 9060webserver_port: 8040heartbeat_service_port: 9050brpc_port: 8060deploy_dir : /opt/starrocks/bestorage_dir: /starrocks-data/starrocks/be/storagelog_dir: /starrocks-data/starrocks/be/logpriority_networks: 1x2.2x.2x3.111config:enable_new_load_on_memory_limit_exceeded: truemem_limit: 90%- host: 1x2.2x.2x3.135ssh_port: 22be_port: 9060webserver_port: 8040heartbeat_service_port: 9050brpc_port: 8060deploy_dir : /opt/starrocks/bestorage_dir: /starrocks-data/starrocks/be/storagelog_dir: /starrocks-data/starrocks/be/logpriority_networks: 1x2.2x.2x3.135config:enable_new_load_on_memory_limit_exceeded: truemem_limit: 90%- host: 172.21.243.234ssh_port: 22be_port: 9060webserver_port: 8040heartbeat_service_port: 9050brpc_port: 8060deploy_dir : /opt/starrocks/bestorage_dir: /starrocks-data/starrocks/be/storagelog_dir: /starrocks-data/starrocks/be/logpriority_networks: 1x2.2x.2x3.234config:enable_new_load_on_memory_limit_exceeded: truemem_limit: 90%##若不需要部署Broker,可删除下方配置。2.5版本后通常可不部署。
#broker_servers:
# - host: 1x2.1x8.110.101
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 1x2.1x8.110.102
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log
# config:
# sys_log_level: "INFO"
# - host: 1x2.1x8.110.103
# ssh_port: 22
# broker_port: 8000
# deploy_dir : /opt/starrocks/apache_hdfs_broker
# log_dir: /data/starrocks/apache_hdfs_broker/log##若不需要部署CN,可删除下方配置。本地部署时通常可不部署。注意:CN不能与BE部署同一节点。
#cn_servers:
# - host: 192.168.110.104
# ssh_port: 22
# thrift_port: 9060
# webserver_port: 8040
# heartbeat_service_port: 9050
# brpc_port: 8060
# deploy_dir : /opt/starrocks/cn
# log_dir: /data/starrocks/cn/log
# priority_networks: 1x2.1x8.110.104
# config:
# sys_log_level: INFO
辑文件:vim repo.yaml
sr_path: /usr/local/apps
sr_name: StarRocks-3.1.8.tar.gz
七、执行部署命令
cd /usr/local/apps/stargo-v2.3
./stargo cluster deploy sr-cluster v3.1.8 deploy-dev.yaml
八、验证集群
#查看集群信息和集群状态
./stargo cluster display sr-cluster
./stargo cluster status sr-cluster
九、监控部署
9.1 安装Prometheus
上传文件到目录:scp root@172.16.12.169:/usr/local/starrocks/new_starrocks/prometheus-2.45.2.linux-amd64.tar.gz /tmp
mv /tmp/prometheus-2.45.2.linux-amd64.tar.gz /usr/local/apps/
解压:tar -xf prometheus-2.45.2.linux-amd64.tar.gz
修改目录名:mv prometheus-2.45.2.linux-amd64 prometheus
创建目录:cd prometheus
mkdir data
备份文件:cp prometheus.yml prometheus.yml.bak
编辑文件:vim prometheus.yml
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.- job_name: "StarRocks_Cluster"metrics_path: '/metrics'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['1x2.2x.2x3.7:8030','1x2.2x.2x3.75:8030','1x2.2x.2x3.63:8030']labels:group: fe- targets: ['1x2.2x.2x3.111:8040','1x2.2x.2x3.135:8040','1x2.2x.2x3.234:8040']labels:group: be
#创建prometheus系统服务启动文件
cd /etc/systemd/system/
vim prometheus.service
[Unit]
Description=Prometheus service
After=network.target[Service]
User=root
Type=simple
ExecReload=/bin/sh -c "/bin/kill -1 `/usr/bin/pgrep prometheus`"
ExecStop=/bin/sh -c "/bin/kill -9 `/usr/bin/pgrep prometheus`"
ExecStart=/usr/local/apps/prometheus/prometheus --config.file=/usr/local/apps/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/apps/prometheus/data[Install]
WantedBy=multi-user.target
重新加载某个服务的配置文件,是配置文件生效。
systemctl daemon-reload
#启动prometheus服务
#使用系统服务文件启动的方式(推荐)
开机启动:systemctl enable prometheus.service
启动服务:systemctl start prometheus.service
查看状态:systemctl status prometheus.service
9.2 安装Grafana
上传文件到目录:scp root@1x2.1x.1x.169:/usr/local/starrocks/new_starrocks/grafana-enterprise-10.2.1.linux-amd64.tar.gz /tmp
mv /tmp/grafana-enterprise-10.2.1.linux-amd64.tar.gz /usr/local/apps/
解压:tar -xf grafana-enterprise-10.2.1.linux-amd64.tar.gz
修改目录名:mv grafana-v10.2.1 grafana
#创建grafana系统服务启动文件
cd /usr/lib/systemd/system/
vim grafana.service
[Unit]
Description=Grafana
After=network.target[Service]
Type=simple
ExecStart=/usr/local/apps/grafana/bin/grafana server --homepath=/usr/local/apps/grafana[Install]
WantedBy=multi-user.target
#启动grafana服务
启动:systemctl start grafana
设置开机启动:systemctl enable grafana
查看状态:systemctl status grafana