StarRocks管理-负载均衡

作者: StarRocks

本文介绍如何通过在多个 FE 节点之上部署负载均衡层以实现 StarRocks 的高可用。

通过代码均衡负载

您可以在应用层代码进行重试和负载均衡。当特定连接宕机,代码应控制系统自动在其他连接上进行重试。使用该方式,您需要配置多个 StarRocks 前端节点地址。

通过 JDBC Connector 均衡负载

如果您使用 MySQL JDBC Connector 连接 StarRocks,可以通过 JDBC 的自动重试机制进行重试和负载均衡。

jdbc:mysql://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

通过 ProxySQL 均衡负载

ProxySQL 是一个灵活强大的 MySQL 代理层, 可以实现读写分离,支持 Query 路由、SQL Cache,动态加载配置、故障切换和 SQL 过滤等功能。

StarRocks 的 FE 进程负责接收用户连接和查询请求,其本身是可以横向扩展且可以部署为高可用集群。您需要在多个 FE 节点上架设一层 Proxy 以实现自动的连接负载均衡。

  1. 安装相关依赖。
    yum install -y gnutls perl-DBD-MySQL perl-DBI perl-devel
  1. 下载并解压 ProxySQL 安装包。
    wget https://github.com/sysown/proxysql/releases/download/v2.0.14/proxysql-2.0.14-1-centos7.x86\_64.rpm
    rpm2cpio proxysql-2.0.14-1-centos7.x86_64.rpm | cpio -ivdm

说明:您可以自行选择下载其他版本的 ProxySQL。

  1. 修改配置文件 /etc/proxysql.cnf

    修改以下配置项为您有访问权限的目录(绝对路径)。

    datadir = "/var/lib/proxysql"
    errorlog = "/var/lib/proxysql/proxysql.log"
  1. 启动 ProxySQL。
    ./usr/bin/proxysql -c ./etc/proxysql.cnf --no-monitor
  1. 登录 StarRocks。
    mysql -u admin -padmin -h 127.0.0.1 -P6032

注意

ProxySQL 默认包含两个端口,其中 6032 是 ProxySQL 的管理端口,6033 是 ProxySQL 的流量转发端口,即对外提供服务的端口。

  1. 配置全局日志。
    SET mysql-eventslog_filename='proxysql_queries.log';
    SET mysql-eventslog_default_log=1;
    SET mysql-eventslog_format=2;
    LOAD MYSQL VARIABLES TO RUNTIME;
    SAVE MYSQL VARIABLES TO DISK;
  1. 插入主节点以及 Observer 节点并读取配置。
    insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.26.92.139', 9030);
    insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.26.34.139', 9030);
    insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.26.34.140', 9030);
    load mysql servers to runtime;
    save mysql servers to disk;
  1. 配置用户名和密码并读取配置。
    insert into mysql_users(username, password, active, default_hostgroup, backend, frontend) 
    values('root', '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2', 1, 1, 1, 1);
    load mysql users to runtime; 
    save mysql users to disk;

注意:这里 password 输入值为密文。例如,root 用户密码为 root123,则 password 输入为 *FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2。您可以通过 password()函数获取具体输入的加密值。

示例:

mysql> select password('root123');

+---------------------------------------------+

| '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |

+---------------------------------------------+

| *FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2   |

+---------------------------------------------+

1 row in set (0.01 sec)
  1. 写入代理规则并读取配置。
    insert into mysql_query_rules(rule_id, active, match_digest, destination_hostgroup, mirror_hostgroup, apply) values(1, 1, '.', 1, 2, 1);
    load mysql query rules to runtime; 
    save mysql query rules to disk;

完成以上步骤后,您可以通过 ProxySQL 经由 6033 端口对数据库进行操作。

mysql -u admin -padmin -P6033 -h 127.0.0.1 -e"select * from db_name.table_name"

如果结果正常返回,则表示您已成功通过 ProxySQL 连接 StarRocks。

更多推荐

更多
  • Azure上Linux管理-十、使用 Azure Kubernetes 服务 技术要求,开始使用 AKS,与 Helm 一起工作,使用草稿,管理 Kubernetes,问题,进一步,使用 WSL 和 VS Code,安装依赖,kubectl 安装,使用 Azure CLI 创建集群,AKS 首次部署,创建服务,多
    Apache CN

  • Azure上Linux管理-十一、故障排除和监控您的工作负载 module(load="imuxsock"),技术要求,访问您的系统,Azure 日志分析,性能监控,问题,进一步,不允许远程访问,正在端口上工作,使用 nftables,引导诊断,Linux 登录,配置日志分析服务,安装 Azure
    Apache CN

  • Azure上Linux管理-十二、附录 第一章:探索微软 Azure 云,第二章:Azure 云入门,第三章:Linux 基础管理,第 4 章:管理 Azure,第五章:高级 Linux 管理,第七章:部署虚拟机,第八章:探索连续配置自动化,第 9 章:Azure 中的容器虚
    Apache CN

  • Azure上Linux管理-九、Azure 中的容器虚拟化 cloudconfig,集装箱技术导论,系统生成,Docker,Azure 容器实例,Buildah, Podman, and Skopeo,容器和储存,问题,进一步,容器历史,chroot 环境,OpenVZ,LXC,创建一个带启动的
    Apache CN

  • Azure上Linux管理-七、部署你的虚拟机 ResourceGroup 不存在,创建它:,vnet 不存在,创建 vnet,cloudconfig,Vagrant.config 结束,部署场景,Azure 中的自动部署选项,初始配置,流浪,封隔器,自定义虚拟机和 vhd,问题,进
    Apache CN

  • Azure上Linux管理-八、探索持续配置自动化 了解配置管理,使用 Ansible,使用地球形态,使用 PowerShell DSC,Azure 策略客户端配置,其他解决方案,问题,进一步,技术要求,Ansible 的安装,SSH 配置,裸最小配置,库存文件,Ansible 剧本和模
    Apache CN

  • Azure上Linux管理-五、高级 Linux 管理 技术要求,软件管理,网络,存储,systemd,问题,进一步,RPM 软件管理器,YUM 软件管理,基于 DNF 的软件管理,DPKG 软件管理器,运用 apt 进行软件管理,ZYpp 软件管理,识别网络接口,IP 地址识别,显示路由表
    Apache CN

  • Azure上Linux管理-六、管理 Linux 安全与身份 SELINUX=可以接受以下三个值之一:,permissiveSELinux 打印警告而不是强制执行。,disabled 没有加载 SELinux 策略。,SELINUXTYPE=可以接受以下三个值之一:,targeted 目标进程
    Apache CN

  • Azure上Linux管理-四、管理 Azure 使用 Azure CLI 和 PowerShell 管理 Azure 资源,技术要求,管理存储资源,管理网络资源,管理计算资源,虚拟机资源,问题,进一步,存储帐户,托管磁盘,Azure 文件,Azure Blob,虚拟网络,子网,网络安
    Apache CN

  • Azure上Linux管理-三、Linux 基础管理 Linux Shell,获取帮助,使用文本文件,在文件系统中找到你的方式,流程管理,自由访问控制,问题,执行命令,命令行编辑,与历史一起工作,自动完成,球状,重定向,处理变量,Bash 配置文件,使用手册页,使用信息文档,其他文档,文本
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多