StarRocks集群部署

发布于:2025-08-16 ⋅ 阅读:(19) ⋅ 点赞:(0)

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: root
    ssh_port: 22
 
fe_servers:
  - host: 1x2.2x.2x3.7
    ssh_port: 22
    java_heap_mem: 10240
    http_port: 8030
    rpc_port: 9020
    query_port: 9030
    edit_log_port: 9010
    deploy_dir: /opt/starrocks/fe
    meta_dir: /starrocks-data/starrocks/fe/meta
    log_dir: /starrocks-data/starrocks/fe/log
    priority_networks: 1x2.2x.2x3.7
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
  - host: 1x2.2x.2x3.75
    ssh_port: 22
    java_heap_mem: 10240
    http_port: 8030
    rpc_port: 9020
    query_port: 9030
    edit_log_port: 9010
    deploy_dir: /opt/starrocks/fe
    meta_dir: /starrocks-data/starrocks/fe/meta
    log_dir: /starrocks-data/starrocks/fe/log
    priority_networks: 1x2.2x.2x3.75
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
  - host: 1x2.2x.2x3.63
    ssh_port: 22
    java_heap_mem: 10240
    http_port: 8030
    rpc_port: 9020
    query_port: 9030
    edit_log_port: 9010
    deploy_dir: /opt/starrocks/fe
    meta_dir: /starrocks-data/starrocks/fe/meta
    log_dir: /starrocks-data/starrocks/fe/log
    priority_networks: 1x2.2x.2x3.63
    role: FOLLOWER
    config:
      sys_log_level: "INFO"
 
be_servers:
  - host: 172.21.243.111
    ssh_port: 22
    be_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/be
    storage_dir: /starrocks-data/starrocks/be/storage
    log_dir: /starrocks-data/starrocks/be/log
    priority_networks: 1x2.2x.2x3.111
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%
  - host: 1x2.2x.2x3.135
    ssh_port: 22
    be_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/be
    storage_dir: /starrocks-data/starrocks/be/storage
    log_dir: /starrocks-data/starrocks/be/log
    priority_networks: 1x2.2x.2x3.135
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_limit: 90%
  - host: 172.21.243.234
    ssh_port: 22
    be_port: 9060
    webserver_port: 8040
    heartbeat_service_port: 9050
    brpc_port: 8060
    deploy_dir : /opt/starrocks/be
    storage_dir: /starrocks-data/starrocks/be/storage
    log_dir: /starrocks-data/starrocks/be/log
    priority_networks: 1x2.2x.2x3.234
    config:
      enable_new_load_on_memory_limit_exceeded: true
      mem_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

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到