CockroachDBクラスタの構築と構成
5799 ワード
CockroachDBクラスタの構築と構成
ダウンロード
wget -q https://binaries.cockroachdb.com/cockroach-v2.1.0-beta.20180827.linux-amd64.tgz
これは現在最新8.27にリリースされているテストバージョンクラスタ構築
./cockroach start --insecure --host= --port=26257 --http-port=10166 --store=/ssd/fee/crdb/data --log-dir=/ssd/fee/crdb/log --max-offset=100ms --max-sql-memory=.25 --cache=.25
--port
は他のノードおよびclientと通信するポートを指定し、--http-port
は監視ツールAdmin UI用に、--store
はRocksDBインスタンスのパスを指定します.1つのstoreは1つのハードディスクが望ましいです.1つのマシンは複数のstoreを起動することができます.1台のマシン上の複数のstoreには同じコピーが2つ存在しない.--max-offset
はクラスタ最大の物理時間オフセットを指定し、テストを経て最適値を決定する必要がある.後の2つのflagの前者はすべてのセッションに割り当てられたメモリの合計を指定し、サポートされている同時度が高いほど、後者はRocksDBのcacheサイズを指定する.1つは、クラスタを初期化するノードipとポートを--joinに書きます.コマンドの例:./cockroach start --join=:26257,:26257,:26257
その後、これらのノードを同時に起動し、コマンド:./cockroach init
--host=
两种初始化方式没有区别。
后续的节点用--join指定集群中已有的任何节点(即最开始初始的节点宕掉也没关系)的地址即可加入集群。
其他启动节点时的参数:--advertise-host
作用跟tidb的那个差不多;--attrs
指定节点特性,主要是跟Replication zones配合用的,可以根据这些特性来区分数据存放位置,示例:--attrs=ram:64gb
说明该机器内存64;--certs-dir
指定SSL证书地址,相关的内容业务迁移那个文档里面说了;--insecure
非安全模式启动集群,即不用指定前面的TSL证书,一般测试时用;--locality
指定节点地理位置,也是和Replication zone配合使用的;--max-disk-temp-storage
超出内存的存入硬盘的最大临时空间大小。更详细的信息可以这里看:https://www.cockroachlabs.com/docs/stable/start-a-node.html
负载均衡。一般来讲推荐使用HAProxy,安装好后,使用cockroach gen haproxy
生成配置文件:
./cockroach gen haproxy --host= --port=26257
deamonとnbprocは主にバックグラウンドで起動するプロセス数を設定し、同時に高い場合は一般的に8プロセス、httpchkとcheck portはノードの健康検査に使用され、このcheck portはノードのhttp-port
である.次に、ロード・バランシングを開始します.
./haproxy -f crdb.cfg &
クラスタパラメータ構成
SHOW ALL CLUSTER SETTINGS; #
SET CLUSTER SETTING =?; #
sql.trace.log_statement_execute
、logに実行されたqueryが記録されているかどうか、デフォルトでは閉じ、開くとパフォーマンスに少し影響します.server.remote_debugging.mode
、リモートdebugモードをオンにするかどうか、これは主にAdmin UI用で、中にはdebugページがあり、スレッド、メモリなど多くの下位の詳細情報があります.デフォルトlocalはローカルAdmin UIのみで、anyがリモートアクセスできるように設定されています.sql.distsql.temp_storage.workmem
、分布式は1つのprocessorが使うことができる最大のメモリを問合せて、デフォルトの64 M、大きい表joinなどに対して足りないで、多く出たデータをハードディスクに書き込むことができて、しかし大きすぎてメモリを爆発する可能性があって、joinが必要な時に大きくして、それから終わった後に設定して帰ることができます.sql.distsql.merge_joins.enabled
、デフォルトはオンで、必要に応じてmerge joinが使用されます.kv.snapshot_rebalance.max_rate
、kv.snapshot_recovery.max_rate
、この2つはそれぞれバランスレプリカとリカバリレプリカの速度であり、デフォルトはそれぞれ2 M/sと8 M/sであり、大きくするとリカバリ速度を速めることができる.kv.bulk_io_write.max_rate
、ブロック書き込みの制限速度、デフォルト8 EB/s.これは合理的な上限を設定したほうがいいです.そうしないと、ハードディスク(HDD)の書き込みに問題がある可能性があります.クライアント接続
コマンドの例:
./cockroach sql --insecure --host= --port=26257
--insecure
以外のモードでは、TSL証明書アドレスを指定する必要があります.詳細は、サーバ接続後に文--execute
を実行するように指定するなどのオプションの詳細です.https://www.cockroachlabs.com/docs/v2.1/use-the-built-in-sql-client.html. 停止ノード
注意あるノードを停止することと下線のあるノードを停止することは概念ではなく、ノードを停止し、そのノードは依然としてクラスタの構成部分であり、停止ノード
server.time_until_store_dead
時間後にクラスタはそのノードがダウンタイムで元のノードのコピーデータを転送すると考えているが、そのノードアドレスなどの情報は依然としてクラスタに記録されており、そのノードのデータが失われていない場合、ノードに再加入した後も元のダウンタイムのノードのアイデンティティとして、しかし、データが失われると、ノードが同じipとポートでクラスタに追加されても、新しいノードとみなされ、ダウンタイムしたノードとしてクラスタに存在します.コマンドの例:
./cockroach quit --insecure --host= --port=26257
停止したノードの数が一般的なレプリカの数より大きい場合、クラスタ全体が正常に動作せず、すべてのノードが停止するまで動作します.
ラインノード
下線(decommission)ノードコマンドが実行されると、ノードデータが直ちに転送されますが、コピーが3つのノードで3つのコピーがあるなど、十分なノード数で分散されている場合にのみ、転送のコピーを引き受ける下線ノードはできません.クラスタが比較的大きい場合、オフラインは比較的長い操作です.ノードがオフラインになった後も、彼の情報はクラスタに格納されますが、recommissionを使用してノードを再登録しない限り、ノードはクラスタに再加入できません.
./cockroach quit --decommission --insecure --host= --port=26257
./cockroach node decommission 4 --wait=live --insecure --host= --port=26257
--wait=live
は、クラスタが生きているノード間でオフライン情報を確認するだけでよいことを指定し、設定しないとtimeoutまでダウンタイムノードで確認し続ける.4
はノードのシーケンス番号を指し、Admin UIで見つけたり、cockroach node
で見たりすることができます../cockroach node recommission 4 --insecure --host= --port=26257
オンラインになったらノードを再起動すればいいです.