ロード バランシング
複数の FE ノードをデプロイする際、ユーザーは FEs の上にロード バランシング レイヤーをデプロイして、高可用性を実現できます。
以下は高可用性のオプションです。
コード アプローチ
1つの方法は、アプリケーション層でコードを実装してリトライとロード バランシングを行うことです。例えば、接続が切れた場合、他の接続で自動的にリトライします。このアプローチでは、ユーザーが複数の FE ノードのアドレスを設定する必要があります。
JDBC コネクタ
JDBC コネクタは自動リトライをサポートしています。
jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
ProxySQL
ProxySQL は、読み書きの分離、クエリルーティング、SQLキャッシング、動的ロード構成、フェイルオーバー、SQLフィルタリングをサポートする MySQL プロキシ レイヤーです。
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. リーダーノードに挿入
insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.xx.xx.139', 9030);
9. オブザーバーノードに挿入
insert into mysql_servers(hostgroup_id, hostname, port) values(2, '172.xx.xx.139', 9030);
insert into mysql_servers(hostgroup_id, hostname, port) values(2, '172.xx.xx.140', 9030);
10. 設定をロード
load mysql servers to runtime;
save mysql servers to disk;