[关闭]
@andy2015 2024-10-07T19:03:57.000000Z 字数 10568 阅读 129

Starrocks集群安装

OLAP


Starrocks集群安装

一、安装要求

  1. CPU: StarRocks 依靠 AVX2 指令集充分发挥其矢量化能力, 建议采用x86 架构 CPU 的Linux服务器 cat /proc/cpuinfo | grep avx2
  2. 内存:
    • FE 8C32G 数据盘大于200G SSD
    • BE 最低8C32G 单节点磁盘容量建议10TB,数据盘建议最大单盘2TB,建议SSD或者NVME(如果是HDD,建议吞吐>150MB/s,IOPS>500)
  3. 硬盘:StarRocks 支持 HDD 和 SSD 作为存储介质。在实时数据分析场景、以及涉及大量数据扫描或随机磁盘访问的场景下,强烈建议您选择 SSD 作为存储介质
  4. 网络:建议使用万兆网络
  5. 操作系统:支持在 CentOS Linux 7.9 和 Ubuntu Linux 22.04 上部署
  6. 软件:v2.5 及以上版本建议安装 JDK 11

二、环境配置

  1. hosts配置
    vim /etc/hosts

    1. 192.168.132.64 st.master.node2 sr.fe.node2 ds.master.node2 ss.query.server
    2. 192.168.132.211 st.master.node1 sr.fe.node1 ds.worker.node1
    3. 192.168.132.212 st.worker.node1 sr.be.node1 ds.worker.node2
    4. 192.168.132.213 st.worker.node2 sr.be.node2 ds.worker.node3
    5. 192.168.132.214 st.worker.node3 sr.be.node3 ds.master.node1
  2. JAVA_HOME配置
    vim /etc/profile

    1. sudo vi /etc/profile
    2. # 将 <path_to_JDK> 替换为 JDK 的安装路径。
    3. export JAVA_HOME=<path_to_JDK>
    4. export PATH=$PATH:$JAVA_HOME/bin

    source /etc/profile

  3. CPU Scaling Governor用于控制 CPU 能耗模式。如果您的 CPU 支持该配置项,建议您将其设置为 performance 以获得更好的 CPU 性能:

    1. echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  4. 内存设置

    1). Memory Overcommit允许操作系统将额外的内存资源分配给进程

    1. cat >> /etc/sysctl.conf << EOF
    2. vm.overcommit_memory=1
    3. EOF
    4. # 使修改生效。
    5. sysctl -p

    2). Transparent Huge Pages默认启用。因其会干扰内存分配,进而导致性能下降,建议您禁用此功能。

    1. # 临时变更。
    2. echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
    3. echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
    4. # 永久变更。
    5. cat >> /etc/rc.d/rc.local << EOF
    6. if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
    7. echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
    8. fi
    9. if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
    10. echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
    11. fi
    12. EOF
    13. chmod +x /etc/rc.d/rc.local

    3).Swap Space建议禁用

    • 查看swap space路径cat /etc/fstab
      eg. /dev/mapper/centos-swap
    • 关闭swap space

      1. swapoff /dev/mapper/centos-swap
      2. swapoff -a
    • 从 /etc/fstab 文件中删除 Swap Space 信息。

      1. /<path_to_swap_space> swap swap defaults 0 0
    • Swappiness会对性能造成影响,因此建议您禁用 Swappiness

      1. # 修改配置文件。
      2. cat >> /etc/sysctl.conf << EOF
      3. vm.swappiness=0
      4. EOF
      5. # 使修改生效。
      6. sysctl -p
  5. 存储设置

    • 查看磁盘调度算法,${disk} 为磁盘设备名称,例如 sda 、hda. 可通过lsblk或fdisk -l命令查看
    1. cat /sys/block/${disk}/queue/scheduler
    2. # 例如,运行 cat /sys/block/vdb/queue/scheduler
  6. SELinux

    1. # 永久变更。
    2. sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    3. sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
  7. 防火墙(两种方式二选一)
    1). 授权相关端口

    1. sudo firewall-cmd --zone=public --add-port=8030/tcp --permanent
    2. sudo firewall-cmd --zone=public --add-port=9020/tcp --permanent
    3. sudo firewall-cmd --zone=public --add-port=9030/tcp --permanent
    4. sudo firewall-cmd --zone=public --add-port=9010/tcp --permanent
    5. sudo firewall-cmd --zone=public --add-port=6090/tcp --permanent
    6. sudo firewall-cmd --zone=public --add-port=8040/tcp --permanent
    7. sudo firewall-cmd --zone=public --add-port=8060/tcp --permanent
    8. sudo firewall-cmd --zone=public --add-port=9050/tcp --permanent
    9. sudo firewall-cmd --zone=public --add-port=9060/tcp --permanent
    10. sudo firewall-cmd --zone=public --add-port=9070/tcp --permanent
    11. sudo firewall-cmd --reload

    2). 禁用防火墙

    1. systemctl stop firewalld.service
    2. systemctl disable firewalld.service
  8. LANG 变量

    1. # 修改配置文件。
    2. echo "export LANG=en_US.UTF8" >> /etc/profile
    3. # 使修改生效。
    4. source /etc/profile
  9. 时区设置

    1. cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    2. hwclock
  10. ulimit 设置: 如果最大文件描述符和最大用户进程的值设置得过小,StarRocks 运行可能会出现问题。

    1. cat >> /etc/security/limits.conf << EOF
    2. * soft nproc 65535
    3. * hard nproc 65535
    4. * soft nofile 655350
    5. * hard nofile 655350
    6. * soft stack unlimited
    7. * hard stack unlimited
    8. * hard memlock unlimited
    9. * soft memlock unlimited
    10. EOF
    11. cat >> /etc/security/limits.d/20-nproc.conf << EOF
    12. * soft nproc 65535
    13. root soft nproc 65535
    14. EOF
  11. 文件系统挂载类型
    建议您使用 ext4 或 xfs 日志文件系统。您可以运行以下命令来检查挂载类型:

    1. df -Th
  12. 网络配置
    1). tcp_abort_on_overflow如果系统当前因后台进程无法处理的新连接而溢出,则允许系统重置新连接:‘

    1. # 修改配置文件。
    2. cat >> /etc/sysctl.conf << EOF
    3. net.ipv4.tcp_abort_on_overflow=1
    4. EOF
    5. # 使修改生效。
    6. sysctl -p

    2). somaxconn设置监听 Socket 队列的最大连接请求数为 1024:

    1. # 修改配置文件。
    2. cat >> /etc/sysctl.conf << EOF
    3. net.core.somaxconn=1024
    4. EOF
    5. # 使修改生效。
    6. sysctl -p
  13. NTP设置,服务器时间同步

    1. # 查看 NTP 时间服务器或 Chrony 服务是否存在
    2. rpm -qa | grep ntp
    3. systemctl status chrony
    4. # 如不存在,运行以下命令安装 NTP 时间服务器
    5. sudo yum install ntp ntpdate && \
    6. sudo systemctl start ntpd.service && \
    7. sudo systemctl enable ntpd.service
    8. # 检查 NTP 服务
    9. systemctl list-unit-files | grep ntp
    10. # 检查服务是否与 NTP 服务器同步
    11. ntpstat
    12. # 检查网络中的NTP服务器
  14. 高并发配置
    1). max_map_count进程可以拥有的 VMA(虚拟内存区域)的数量。将该值调整为 262144

    1. # 修改配置文件。
    2. cat >> /etc/sysctl.conf << EOF
    3. vm.max_map_count = 262144
    4. EOF
    5. # 使修改生效。
    6. sysctl -p

    2). 其他

    1. echo 120000 > /proc/sys/kernel/threads-max
    2. echo 200000 > /proc/sys/kernel/pid_max

三、下载&分发安装包

  1. 下载: wget https://releases.starrocks.io/starrocks/StarRocks-.tar.gz
    wget https://releases.starrocks.io/starrocks/StarRocks-3.2.9.tar.gz
  2. 解压二进制包
    tar -xzvf StarRocks-.tar.gz

四、安装

  1. FE
    1). 创建日志、元数据目录并配置STARROCKS_HOME
    mkdir -p /data/starrocks/log
    mkdir -p /data/starrocks/meta
    cat >> /etc/profile << EOF
    export STARROCKS_HOME=/opt/starrocks-3.2.9
    EOF
    2). 修改fe配置文件
    vim conf/fe.conf
    3). 启动服务
    sudo bin/start_fe.sh --deamon
    cat log/fe.log | grep thrift

  2. BE
    1). 创建日志、数据目录并配置STARROCKS_HOME
    mkdir -p /data/starrocks/log
    mkdir -p /data/starrocks/storage
    cat >> /etc/profile << EOF
    export STARROCKS_HOME=/opt/starrocks-3.2.9
    EOF
    2). 修改be配置文件
    vim conf/be.conf
    3). 启动服务
    sudo bin/start_be.sh --deamon
    cat log/be.INFO | grep thrift
    cat log/be.INFO | grep heartbeat

  3. 建立HA集群信息
    1). MySQL 客户端连接到 StarRocks: 用户名root,密码默认为空

    • 将 替换为 Leader FE 节点的 IP 地址(priority_networks)或 FQDN,
    • 并将 (默认:9030)替换为您在 fe.conf 中指定的 query_port。
      mysql -h -P -uroot

    2). 查看 Leader FE 节点状态
    SHOW PROC '/frontends'\G

    • 其他FE节点
      // 角色:FOLLOWER 复制协议的可投票成员,参与选主和提交日志,一般数量为奇数(2n+1),使用多数派(n+1)确认,可容忍少数派(n)故障
      // 角色:OBSERVER 属于非投票成员,用于异步订阅复制日志,Observer 的状态落后于 Follower,类似其他复制协议中的 Learner 角色。
      // 参数:
      // host:机器的 IP 地址。如果机器存在多个 IP 地址,则该项为 priority_networks 设置项下设定的唯一通信 IP 地址。
      // port:edit_log_port 设置项下设定的端口,默认为 9010。
      ALTER SYSTEM ADD FOLLOWER "host:port";

    • FE节点,首次启动
      sh bin/start_fe.sh --helper host:port --daemon

    3). 添加BE节点到集群
    -- 将 替换为 BE 节点的 IP 地址(priority_networks)或 FQDN,
    -- 并将 (默认:9050)替换为您在 be.conf 中指定的 heartbeat_service_port。
    ALTER SYSTEM ADD BACKEND ":", ":", ":";

    4). 查看 BE 节点状态
    SHOW PROC '/backends'\G

    5). 修改root账号密码Bt@tst-sr08
    SET PASSWORD = PASSWORD('')

    • 用户
      CREATE USER test@'%' IDENTIFIED BY '123456';
      --GRANT ALL ON DATABASE DW TO USER 'test';
      GRANT ALL ON ALL TABLES IN DATABASE DW TO USER 'test';
  4. Superset安装
    1). 安装python3
    yum install python3
    pip install --trusted-host pypi.python.org starrocks

    2). 安装 Docker 和 Docker Compose
    sudo yum update -y
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum install docker
    sudo systemctl start docker
    sudo systemctl enable docker

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    3). 安装Superset
    git clone --depth=1 https://github.com/apache/superset.git
    cd superset
    docker-componse up -d

    4). 本地安装

    • 安装依赖
      sudo yum install gcc gcc-c++ libffi-devel \
      python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-devel
    • 官网提示 【在 CentOS 系统上 you may need to upgrade pip for the install to work】
      pip3 install --upgrade pip

    • 安装虚拟环境
      pip3 install virtualenv

    • 创建并激活虚拟环境【随后使用不用每次都创建】
    • 激活虚拟环境后 安装或卸载的所有 Python 包都将被限制在此环境中 deactivate 命令可退出讯环境
      python3 -m venv venv
      . venv/bin/activate

    pip install --upgrade pip
    pip install apache-superset
    pip install sqlalchemy==1.3.24
    pip install sqlalchemy-utils==0.36.6
    pip install cryptography==38.0.1

    • 初始化数据库
      pip install dataclasses
      superset db upgrade

    • 创建一个admin用户(在设置密码之前,会提示你设置用户名,姓和名)
      export FLASK_APP=superset
      superset fab create-admin

    • 加载一些数据【爬取数据 很慢 未成功将导致缺少样例图表 不影响后续使用】这一步是可以跳过的
      pip install scrapy
      superset load_examples

    • 创建默认角色和权限
      superset init

    • 宿主机上执行
      yum install mysql-devel
      yum install freetds

    • 安装驱动
      pip install mysqlclient
      pip install starrocks
      pip install PyMySQL eg. mysql+pymysql://testuser:123456@127.0.0.1:3306/testdb
      pip install psycopg2
      pip install cx_Oracle

    • 在8082端口上启动一个开发web服务器【可使用 -p 绑定到其他端口 -h 绑定到特定 IP】
      superset run -h 192.168.132.211 -p 8082 --with-threads --reload --debugger

    . venv/bin/activate
    superset run -h 192.168.132.211 -p 8082 --with-threads --reload --debugger

    退出虚拟环境
    deactivate

五、Prometheus安装
1、Prometheus下载
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
2、Prometheus配置
1)切换至/opt目录:
[root@manager ~]# cd /opt
2)解压安装包:
[root@manager opt]# tar xvf prometheus-2.45.0.linux-amd64.tar.gz
3)为方便后续程序升级,将解压后的目录重命名为prometheus:
[root@manager opt]# mv prometheus-2.45.0.linux-amd64 prometheus
4)创建数据存放目录:
[root@manager opt]# mkdir prometheus/data
5)prometheus官方只提供了二进制文件tar包,为了方便管理,我们可以创建prometheus系统服务启动文件:
[root@manager opt]# vim /etc/systemd/system/prometheus.service
输入:

  1. [Unit]
  2. Description=Prometheus service
  3. After=network.target
  4. [Service]
  5. User=root
  6. Type=simple
  7. ExecReload=/bin/sh -c "/bin/kill -1 `/usr/bin/pgrep prometheus`"
  8. ExecStop=/bin/sh -c "/bin/kill -9 `/usr/bin/pgrep prometheus`"
  9. ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention.time=30d --storage.tsdb.retention.size=30GB
  10. [Install]
  11. WantedBy=multi-user.target

保存退出。
说明:当使用其他目录部署时,注意ExecStart命令中的目录需要同步修改一致。此外,在启动参数中我们还配置了Prometheus中数据存储的过期条件为“30天”或“大于30GB”,可以按需修改。
6)修改prometheus配置文件prometheus/prometheus.yml,这个文件中的配置内容对格式要求比较严格,修改时需要特别注意空格和缩进。或者我们可以将原始配置文件重命名,然后粘贴下发需用的内容。
修改原配置文件文件名:
[root@manager opt]# mv prometheus/prometheus.yml prometheus/prometheus_bak.yml
使用StarRocks集群信息创建配置文件prometheus.yml:
[root@manager opt]# vim prometheus/prometheus.yml
输入:

  1. global:
  2. scrape_interval: 15s #全局的采集间隔,默认是1m,这里设置为15s
  3. evaluation_interval: 15s #全局的规则触发间隔,默认是1m,这里设置15s
  4. scrape_configs:
  5. - job_name: 'StarRocks_Cluster01' #每一个集群称之为一个job,可以自定义名字作为StarRocks集群名
  6. metrics_path: '/metrics' #指定获取监控项目的Restful API
  7. static_configs:
  8. - targets: ['192.168.110.101:8030','192.168.110.102:8030','192.168.110.103:8030']
  9. labels:
  10. group: fe #这里配置了FE的group,该group中包含了3个FE节点,需填写各个FE对应的IP和http端口。若部署集群时修改过该端口,这里注意进行调整
  11. - targets: ['192.168.110.101:8040','192.168.110.102:8040','192.168.110.103:8040']
  12. labels:
  13. group: be #这里配置了BE的group,该group中包含了3个BE节点,需填写各个BE对应的IP和http端口。若部署集群时修改过该端口,这里注意进行调整。

在配置文件创建完成后,可使用promtool检查配置文件语法是否合规,例如:

[root@manager opt]# ./prometheus/promtool check config   prometheus/prometheus.yml

当看到提示检查通过后,再执行后续操作:

SUCCESS: prometheus/prometheus.yml is valid prometheus config file syntax

7)启动服务:

[root@manager opt]# systemctl daemon-reload

[root@manager opt]# systemctl start prometheus.service

8)查看服务状态:

[root@manager opt]# systemctl status prometheus.service

观察Active: active (running)即为启动成功。

prometheus默认使用的端口为9090,也可以使用netstat命令查看9090端口的状态:

[root@manager opt]# netstat -nltp | grep 9090

9)设置开机启动:
[root@manager opt]# systemctl enable prometheus.service
其他相关命令:
停止服务:systemctl stop prometheus.service
重启服务:systemctl restart prometheus.service
热加载配置:systemctl reload prometheus.service
禁用开机启动:systemctl disable prometheus.service
3、Web访问
Prometheus可以通过Web页面进行简单的访问。通过浏览器访问其默认的9090端口,即可访问Prometheus的页面。例如,我们使用谷歌浏览器访问192.168.110.23:9090。

五、Grafana
1、Grafana下载
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.3-1.x86_64.rpm
2、Grafana安装
1)使用yum命令安装,方便自动安装依赖:
[root@manager opt]# yum -y install grafana-enterprise-10.0.3-1.x86_64.rpm
2)启动grafana:
[root@manager opt]# systemctl start grafana-server.service
3)查看状态:
[root@manager opt]# systemctl status grafana-server.service
同样,Active: active (running)表示服务已成功启动。
Grafana默认使用的端口为3000,使用netstat命令验证端口监听状态:
[root@manager opt]# netstat -nltp | grep 3000
4)设置开机自启:
[root@manager opt]# systemctl enable grafana-server.service
5)扩展命令:
关闭服务:systemctl stop grafana-server.service
重启服务:systemctl restart grafana-server.service
禁用开机自启:systemctl disable grafana-server.service

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注