StarRocks部署高可用 FE 集群

一、准备工作

1.1 部署规划

这里我打算部署存算一体模式,三节点。即三个FE节点,三个BE节点。假设三台IP分别为:10.10.10.50、10.10.10.51、10.10.10.52
我将采用三台centos7.9进行部署,单台配置为128C 256G 3T。

1.2 服务器检查项

关闭防火墙(或者只需能确保集群间机器相关端口的正常访问即可)
安装有JDK

进行机器设置和配置检查:
运行以下脚本,进行环境检查

#!/bin/bash

##说明:
##1、该脚本为StarRocks部署环境检测脚本,用来检测StarRocks运行的必要条件及重要系统参数。
##2、本脚本适用于红帽系系统,Ubuntu系及Debian系请根据检测项自行验证部署环境。
##3、当前不再检测系统中的Java环境,StarGo或Manager会使用自带的OpenJDK8为StarRocks配置程序级的运行环境。
##4、检测通过的项会显示为绿色的success,未通过的项会用红色字体给出提示及临时调整命令(服务器重启会失效)。
##5、在部署前请务必根据提示调整环境,以避免后续安装或使用过程中出现不必要的问题。

function cpu_check(){
   
    echo ""
    echo "############################ CPU检查 #############################"
    cat /proc/cpuinfo | grep avx2 2>&1 >/dev/null
    if [ $? -ne 0 ];then
        echo -e "\033[31mStarRocks BE需要CPU支持AVX2指令集才可启动,请更换至符合要求的x86架构服务器\033[0m"
    else
        echo -e "\033[32msuccess\033[0m"
    fi
}

function linuxversion_check(){
   
    echo ""
    echo "########################## Linux版本检查 ##########################"
    num_tmp=$(cat /etc/redhat-release | tr -cd "[0-9]")
    linux_version=${num_tmp:0:1}
    if [ $linux_version -ne 7 ];then
        echo -e "\033[31m若无特殊原因,建议您更换使用CentOS7部署StarRocks,该系统当前测试最为充分\033[0m"
    else
        echo -e "\033[32msuccess\033[0m"
    fi
}

function glibc_check(){
   
    echo ""
    echo "########################## Glibc版本检查 ##########################"
    glibc_version=$(ldd --version | head -n 1 | tail -c 3)
    if [ $glibc_version -lt 17 ];then
        echo -e "\033[31mStarRocks BE要求glibc版本最低为2.17才可启动,请升级glibc或使用更高内核版本的系统\033[0m"
    elif [ $glibc_version -ge 37 ];then
        echo -e "\033[31m检测到较高的glibc版本,StarRocks BE或将无法启动,请更换或降级系统为CentOS7\033[0m"
    else
        echo -e "\033[32msuccess\033[0m"
    fi
}

function swap_check(){
   
    echo ""
    echo "############################ Swap检查 ############################"
    swap_number=$(cat /proc/sys/vm/swappiness)
    if [ $swap_number -ne 0 ];then
        echo -e "\033[31m检查项1:使用swap分区可能影响查询性能,建议配置为不优先使用,临时配置命令:echo 0 | sudo tee /proc/sys/vm/swappiness\033[0m"
    else
        echo -e "\033[32msuccess\033[0m"
    fi
    swap_file=$(free -m | grep -i swap | awk '{print $2}')
    if [ $swap_file -ne 0 ];then
        echo -e "\033[31m检查项2:检查到s
<think>嗯,用户想查找关于如何部署StarRocks集群的指南或教程。我需要先看看用户提供的引用内容,看看有没有相关的信息。用户给出的引用有四个,其中引用1和引用2提到了部署StarRocks集群的具体方法。引用1详细介绍了使用kind创建Kubernetes集群,然后用Helm部署StarRocks的非高可用模式。引用2则提到了使用StarRocks_Ansible工具来部署高可用集群,这个工具可以简化运维操作。引用3和4可能也相关,但看起来更偏向于实战经验和测试指南。 用户的问题集中在部署指南上,所以应该优先参考引用1和引用2。引用1的步骤比较详细,适合用Kubernetes的环境,而引用2的Ansible方法可能更适合本地或非容器化部署。需要分情况说明这两种方法,并指出它们各自的适用场景。比如,使用Helm适合云原生环境,而Ansible适合传统服务器环境的高可用部署。 另外,用户可能关心部署的前提条件、步骤以及后续的验证和清理资源。引用1提到了前提条件、创建集群部署、访问和导入数据,还有常见问题和清理资源。这部分信息需要整理成结构化的步骤,方便用户跟随操作。同时,引用3中的容量规划和监控可能也是部署时需要考虑的因素,可以适当补充作为注意事项。 用户可能还会有其他疑问,比如如何选择部署方式,高可用与非高可用模式的区别,或者遇到问题如何解决。根据这些潜在的问题,生成相关的问题列表,帮助用户进一步探索。例如,如何验证集群是否正常运行,或者如何监控集群状态。 最后,确保回答符合系统级指令的要求,数学公式用$...$,独立公式用$$...$$,使用中文,并正确引用来源。检查是否有遗漏的步骤或需要进一步澄清的地方,确保信息准确可靠。</think>### StarRocks 集群部署指南 根据您提供的引用内容,以下是两种主流部署方法的对比与操作步骤: #### 一、原生 Kubernetes 部署(非高可用模式)[^1][^4] 1. **前置条件** - 已安装`kubectl`和`kind`工具 - 本地环境需满足至少4核CPU/8GB内存 - Helm 3.0+版本 2. **操作步骤** ```bash # 创建本地K8s集群 kind create cluster --name starrocks-cluster # 添加Helm仓库 helm repo add starrocks https://charts.starrocks.io # 部署基础版StarRocks helm install starrocks-cluster starrocks/starrocks \ --set FE.replicaCount=1 \ --set BE.replicaCount=2 ``` 3. **验证部署** 通过`kubectl get pods`应看到类似输出: ``` starrocks-fe-0 1/1 Running 0 2m starrocks-be-0 1/1 Running 0 1m starrocks-be-1 1/1 Running 0 1m ``` #### 二、Ansible自动化部署高可用模式)[^2] 1. **前置要求** - 至少3台Linux服务器(推荐CentOS 7.6+) - 已配置SSH免密登录 - Python 3.6+与Ansible 2.9+ 2. **关键配置文件** ```yaml # inventory.yml all: hosts: fe1: ansible_host=192.168.1.101 fe2: ansible_host=192.168.1.102 fe3: ansible_host=192.168.1.103 be1: ansible_host=192.168.1.201 be2: ansible_host=192.168.1.202 ``` 3. **执行部署** ```bash ansible-playbook -i inventory.yml deploy.yml \ -e fe_node_count=3 \ -e be_node_count=2 ``` #### 三、部署注意事项 1. **容量规划**[^3] - FE节点:建议每节点4核8GB(元数据存储需SSD) - BE节点:推荐$存储容量 = 原始数据量 \times 3$(考虑副本) - 网络带宽需满足$\frac{数据导入速率}{0.7} \leq 总带宽$ 2. **验证方法** ```sql -- 连接MySQL客户端 mysql -h FE_IP -P9030 -uroot > SHOW PROC '/frontends'\G -- 查看FE状态 > SHOW PROC '/backends'\G -- 查看BE状态 ``` #### 四、部署方案对比 | 特性 | Kubernetes方案 | Ansible方案 | |----------------|----------------------|----------------------| | 部署复杂度 | 中(需K8s基础) | 低(全自动化) | | 可用性 | 非高可用 | 支持高可用 | | 扩展性 | 动态扩缩容 | 需修改inventory文件 | | 适用场景 | 云原生测试环境 | 生产级物理机部署 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值