跳到主要内容
版本: 最新版本-3.5

负载均衡

当部署多个 FE 节点时,用户可以在 FE 之上部署一个负载均衡层,以实现高可用。

以下是一些高可用选项

代码方式

一种方法是在应用程序层实现代码,以执行重试和负载均衡。例如,如果连接断开,它将自动在其他连接上重试。 这种方法要求用户配置多个 FE 节点地址。

JDBC 连接器

JDBC 连接器支持自动重试

jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

ProxySQL

ProxySQL 是一个 MySQL 代理层,支持读/写分离、查询路由、SQL 缓存、动态负载配置、故障转移和 SQL 过滤。

StarRocks FE 负责接收连接和查询请求,它具有水平可扩展性和高可用性。 但是,FE 需要用户在其之上设置代理层,以实现自动负载均衡。 请参阅以下设置步骤

1. 安装相关依赖

yum install -y gnutls perl-DBD-MySQL perl-DBI perl-devel

2. 下载安装包

wget https://github.com/sysown/proxysql/releases/download/v2.0.14/proxysql-2.0.14-1-centos7.x86_64.rpm

3. 解压缩到当前目录

rpm2cpio proxysql-2.0.14-1-centos7.x86_64.rpm | cpio -ivdm

4. 修改配置文件

vim ./etc/proxysql.cnf 

直接到用户有权访问的目录(绝对路径)

datadir="/var/lib/proxysql"
errorlog="/var/lib/proxysql/proxysql.log"

5. 启动

./usr/bin/proxysql -c ./etc/proxysql.cnf --no-monitor

6. 登录

mysql -u admin -padmin -h 127.0.0.1 -P6032

7. 配置全局日志

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;

8. 插入到 leader 节点

insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.26.92.139', 8533);

9. 插入 observer 节点

insert into mysql_servers(hostgroup_id, hostname, port) values(2, '172.26.34.139', 9931);
insert into mysql_servers(hostgroup_id, hostname, port) values(2, '172.26.34.140', 9931);

10. 加载配置

load mysql servers to runtime;
save mysql servers to disk;

11. 配置用户名和密码

insert into mysql_users(username, password, active, default_hostgroup, backend, frontend) values('root', '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29', 1, 1, 1, 1);

12. 加载配置

load mysql users to runtime; 
save mysql users to disk;

13. 写入代理规则

insert into mysql_query_rules(rule_id, active, match_digest, destination_hostgroup, mirror_hostgroup, apply) values(1, 1, '.', 1, 2, 1);

14. 加载配置

load mysql query rules to runtime; 
save mysql query rules to disk;