ClickHouse PaaS クラウドネイティブ マルチテナント プラットフォーム (Altinity.Cloud) 公式サイト: https://altinity.cloud PaaS アーキテクチャの概要 クラウドネイティブのオーケストレーション機能を備え、マルチクラウド環境の展開、自動化された運用と保守、柔軟なスケーリング、自己修復をサポートし、テナント分離、権限管理、操作監査などのエンタープライズレベルの機能を提供する、高性能で低コストの分散ミドルウェア サービスを設計するのは非常に困難です。 ユーザーに提供されるSaaSモデル Sentry Snuba イベント ビッグ データ分析エンジン アーキテクチャの概要 Snuba は、ClickHouse 上で豊富なデータ モデル、高速な取り込みコンシューマー、クエリ オプティマイザーを提供するサービスです。 Sentry イベントに関するデータを検索および提供する集約エンジン。 データは Clickhouse テーブルとマテリアライズド ビューに完全に保存され、入力ストリーム (現在は Kafka トピックのみ) を介して取り込まれ、ポイントインタイム クエリまたはストリーミング クエリ (サブスクリプション) を介してクエリできます。 ドキュメント: https://getsentry.github.io/snuba/architecture/overview.html Kubernetes クリックハウス オペレーターKubernetes オペレーターとは何ですか? Kubernetes Operator は、Kubernetes アプリケーションをパッケージ化、デプロイ、管理する方法です。 Kubernetes API (アプリケーション プログラミング インターフェイス) と kubectl ツールを使用して、Kubernetes 上で Kubernetes アプリケーションをデプロイおよび管理します。 - https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/operator/
ClickHouse の Altinity 演算子Altinity: 主要なオープンソース ClickHouse Operator プロバイダー。 - アルティニティ: https://altinity.com/
- GitHub: https://github.com/Altinity/clickhouse-operator
- ユーチューブ: https://www.youtube.com/@Altinity
もちろん、このようなマルチテナントの分離された ClickHouse ミドルウェア PaaS クラウド プラットフォームは、企業やクラウド ベンダーによってオープンソース化されることはほとんどありません。 ラドンDB クリックハウス- https://github.com/radondb/radondb-clickhouse-operator
- https://github.com/radondb/radondb-clickhouse-kubernetes
altinity-clickhouse-operator をベースにクラウドベンダー (QingCloud) によってカスタマイズされています。実稼働クラスターの迅速な展開のためにいくつかの最適化が行われました。 Helm + Operator で ClickHouse クラスターをクラウドに素早くデプロイクラウドネイティブ実験環境- VKE K8S クラスター、Vultr 管理クラスター (v1.23.14)
- Kubesphere v3.3.1 クラスターのビジュアル管理、フルスタック Kubernetes コンテナ クラウド PaaS ソリューション。
- Longhorn 1.14、Kubernetes 向けのクラウドネイティブ分散ブロック ストレージ。
clickhouse-operator をデプロイするここでは、RadonDB のカスタマイズされたオペレーターを使用します。 - values.operator.yaml は次の 2 つのパラメータをカスタマイズします。
# オペレーターはクラスター内のすべての名前空間のクリックハウス展開を監視します すべての名前空間を監視する: true # オペレータメトリックの監視を有効にする PrometheusMonitorを有効にする: true - helm デプロイ演算子:
cd vip - k8s - paas / 10 -クラウド-ネイティブ- clickhouse
# kubeシステムにデプロイ helm をインストール clickhouse -演算子 。 /クリックハウス-演算子- f値.operator .yaml - n kube -システム
kubectl - n kube -システム取得 po | grep clickhouse -演算子 # clickhouse -オペレーター- 6457 c6dcdd - szgpd 1 / 1実行中0 3分33秒
kubectl - n kube -システム取得 svc | grep clickhouse -演算子 # クリックハウス-演算子-メトリック ClusterIP 10.110 .129 .244 <なし> 8888 / TCP 4 m18s
kubectl api -リソース| grep クリックハウス # clickhouseinstallations chi clickhouse .radondb .com / v1 true ClickHouseInstallation # clickhouseinstallationtemplates chit clickhouse .radondb .com / v1 true ClickHouseInstallationTemplate # clickhouseoperatorconfigurations チョップコンフclickhouse .radondb .com / v1 true ClickHouseOperatorConfiguration clickhouse-clusterをデプロイするここでは、RadonDB によってカスタマイズされた clickhouse-cluster helm チャートを使用します。 2 つのシャード + 2 つのレプリカ + 3 つの zk ノードのクラスターをすばやくデプロイします。 - values.cluster.yaml のカスタマイズ:
クリックハウス: クラスター名: snuba - clickhouse -ノード 破片数: 2 レプリカ数: 2 ... 飼育員: インストール: true レプリカ: 3 - helm デプロイ clickhouse-cluster:
kubectl で ns クラウドを作成-クリックハウス helm インストール clickhouse ./clickhouse-cluster-f値.cluster .yaml - nクラウド- clickhouse
kubectl get po - n クラウド- clickhouse # chi - clickhouse - snuba - ck - nodes - 0 - 0 - 0 3 / 3実行中5 ( 6分13 秒前) 16分 # chi - clickhouse - snuba - ck - nodes - 0 - 1 - 0 3 / 3実行中1 ( 5分 33 秒前) 6分 23 秒 # chi - clickhouse - snuba - ck - nodes - 1 - 0 - 0 3 / 3実行中1 ( 4分 58 秒前) 5分 44 秒 # chi - clickhouse - snuba - ck - nodes - 1 - 1 - 0 3 / 3実行中1 ( 4分 28 秒前) 5分 10 秒 # zk -クリックハウス- 0 1 / 1実行中0 17 m # zk -クリックハウス- 1 1 / 1実行中0 17 m # zk -クリックハウス- 2 1 / 1実行中0 17 m オペレータを使用してクリックハウスシャードクラスターを急速に拡張する- 次のコマンドを使用して、shardsCount を 3 に変更します。
kubectl 編集 chi/clickhouse -n クラウドクリックハウス - ポッドを表示:
kubectl get po -n クラウドクリックハウス
# 名前 準備完了 ステータス 再起動 年齢 #chi-clickhouse-snuba-ck-nodes-0-0-0 3/3 実行中 5 (24 分前) 34 分 #chi-clickhouse-snuba-ck-nodes-0-1-0 3/3 実行中 1 (23 分前) 24 分 #chi-clickhouse-snuba-ck-nodes-1-0-0 3/3 実行中 1 (22 分前) 23 分 #chi-clickhouse-snuba-ck-nodes-1-1-0 3/3 実行中 1 (22 分前) 23 分 # chi-clickhouse-snuba-ck-nodes-2-0-0 3/3 実行中 1 (108 秒前) 2 分 33 秒 #chi-clickhouse-snuba-ck-nodes-2-1-0 3/3 実行中 1 (72 秒前) 119 秒 #zk-clickhouse-0 1/1 ランニング 0 35分 #zk-clickhouse-1 1/1 ランニング 0 35分 #zk-clickhouse-2 1/1 ランニング 0 35分 chi-clickhouse-snuba-ck-nodes-2-0-0 と chi-clickhouse-snuba-ck-nodes-2-1-0 が見つかりました。シャードとレプリカはオペレーターによって自動的に作成されます。 試してみるReplicatedMergeTree+Distributed+Zookeeperはマルチシャードマルチコピークラスタを構築しますClickHouseに接続Pod に入り、ネイティブのコマンドライン クライアント clickhouse-client を使用して接続します。 kubectl exec - it chi - clickhouse - snuba - ck - nodes - 0 - 0 - 0 - n cloud - clickhouse -- bash kubectl exec - it chi - clickhouse - snuba - ck -ノード- 0 - 1 - 0 - n クラウド- clickhouse -- bash kubectl exec - it chi - clickhouse - snuba - ck - nodes - 1 - 0 - 0 - n cloud - clickhouse -- bash kubectl exec - it chi - clickhouse - snuba - ck - nodes - 1 - 1 - 0 - n cloud - clickhouse -- bash kubectl exec - it chi - clickhouse - snuba - ck - nodes - 2 - 0 - 0 - n cloud - clickhouse -- bash kubectl exec - it chi - clickhouse - snuba - ck - nodes - 2 - 1 - 0 - n cloud - clickhouse -- bash ターミナルからこれら 6 つのポッドに直接入ります。次にテストします: clickhouse -クライアント--multiline -u ユーザー名 -h ip --password パスワード # クリックハウス-クライアント- m 分散データベースの作成- system.clusters を表示
システム.clustersから*を選択します。 2. testという名前のデータベースを作成する クラスター'snuba-ck-nodes'にデータベース テストを作成します。 # 削除: クラスター'snuba-ck-nodes'上のデータベース テストを削除します。 - 各ノードを確認すると、テスト データベースがすでに存在していることがわかります。
データベースを表示します。 ローカルテーブルを作成する (ReplicatedMergeTree)- テーブル作成ステートメントは次のとおりです。
次の 2 つのパラメータを受け入れる ReplicatedMergeTree テーブル エンジンを使用して、クラスター内の各ノードのテスト データベースにローカル テーブル t_local を作成します。 - zoo_path — Zookeeper 内のテーブルのパス。テーブルの同じシャードの異なるレプリカに対して同じパスが定義されています。
'/clickhouse/tables/{shard}/test/t_local' - replica_name — Zookeeper 内のテーブルのレプリカ名
クラスター'snuba-ck-nodes'にCREATE TABLE test .t_localを作成します。 ( イベント日付日時、 カウンターID UInt32 、 ユーザーID UInt32 ) ENGINE = ReplicatedMergeTree ( '/clickhouse/tables/{shard}/test/t_local' 、 '{replica}' ) PARTITION BY toYYYYMM (イベント日付) ORDER BY (カウンターID 、イベント日付、 intHash32 (ユーザーID ) ) サンプルBY intHash32 ( UserID ) ; - マクロプレースホルダー:
テーブル作成ステートメントのパラメータに含まれるマクロ置換プレースホルダ ({replica} など)。設定ファイルのマクロセクションの値に置き換えられます。 クラスター内のクリックハウス シャードとレプリカ ノードの configmap を表示します。 kubectl get configmap - n クラウド- clickhouse | grep クリックハウス
名前 データ 年齢 chi -クリックハウス-共通- configd 6 20時間 chi -クリックハウス-共通-ユーザー6 20時間 chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 0 - 0 2 20 h chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 0 - 1 2 20 h chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 1 - 0 2 20 h chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 1 - 1 2 20時間 chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 2 - 0 2 19 h chi -クリックハウス-デプロイ- confd - snuba - ck -ノード- 2 - 1 2 19 h ノード構成値を表示します。 kubectl describe configmap chi - clickhouse - deploy - confd - snuba - ck - nodes - 0 - 0 - n cloud - clickhouse 対応する分散テーブルを作成する(分散) クラスター'snuba-ck-nodes'にCREATE TABLE test .t_dist を作成します。 ( イベント日付日時、 カウンターID UInt32 、 ユーザーID UInt32 ) ENGINE = Distributed ( 'snuba-ck-nodes' 、 test 、 t_local 、 rand ( ) ) ;
# クラスター'snuba-ck-nodes'上のテーブルtest .t_distを削除します。 分散エンジンで使用される 4 つのパラメーターは次のとおりです。 - cluster - サービス構成内のクラスターの名前 (snuba-ck-nodes)
- database - リモートデータベースの名前 (テスト)
- テーブル - リモートテーブル名 (t_local)
- sharding_key - (オプション) シャーディング キー (CounterID/rand())
次のような関連テーブルを表示します。 使用テスト; テーブルを表示します。 # t_dist # ローカル 分散テーブルを通じて複数のデータを挿入します。 # 入れる test .t_distに値( '2022-12-16 00:00:00' , 1 , 1 ) , ( '2023-01-01 00:00:00' , 2 , 2 ) , ( '2023-02-01 00:00:00' , 3 , 3 )を挿入します。 任意のノードからデータをクエリします。 test .t_distから*を選択します。 Snuba Engine 向け ClickHouse PaaS Sentry Helm Charts の分解と分析Kubernetes Operator に移行する前に、sentry-charts に付属する clickhouse および zookeeper チャートを分解して分析してみましょう。 非公式セントリーヘルムチャート: - https://github.com/sentry-kubernetes/charts
彼の Chart.yaml は次のとおりです。 APIバージョン: v2 アプリバージョン: 22.11.0 依存関係: -条件:ソースマップ.enabled 名前: memcached リポジトリ: https://charts.bitnami.com/bitnami バージョン: 6.1.5 -条件: redis .enabled 名前:レディス リポジトリ: https://charts.bitnami.com/bitnami バージョン: 16.12.1 -条件: kafka.enabled 名前:カフカ リポジトリ: https://charts.bitnami.com/bitnami バージョン: 16.3.2 -条件: clickhouse .enabled 名前:クリックハウス リポジトリ: https://sentry-kubernetes.github.io/charts バージョン: 3.2.0 -条件: zookeeper .enabled 名前:動物園の飼育員 リポジトリ: https://charts.bitnami.com/bitnami バージョン: 9.0.0 -エイリアス: rabbitmq 条件: rabbitmq.enabled 名前: rabbitmq リポジトリ: https://charts.bitnami.com/bitnami バージョン: 8.32.2 -条件: postgresql .enabled 名前: postgresql リポジトリ: https://charts.bitnami.com/bitnami バージョン: 10.16.2 -条件: nginx.enabled 名前: nginx リポジトリ: https://charts.bitnami.com/bitnami バージョン: 12.0.4 説明: Kubernetes 用の Helm チャート メンテナー: -名前: Sentry - Kubernetes 名前:セントリー タイプ:アプリケーション バージョン: 17.9.0 この sentry-charts は、デプロイメントのためにすべてのミドルウェア helm チャートを結合して依存するため、sentry マイクロサービスおよびミドルウェア クラスターの拡張には適していません。より高度なアプローチとしては、各ミドルウェアにカスタマイズされた Kubernetes Operator (clickhouse-operator など) と独立した K8S クラスターを用意し、外部にサービスを提供するミドルウェア PaaS プラットフォームを形成することです。 ここでは、ミドルウェア チャートを独立した名前空間または個別のクラスター操作に分割します。設計対象: - ZooKeeper 名前空間: cloud-zookeeper-paas
- ClickHouse 名前空間: cloud-clickhouse-paas
ZooKeeper Helm Chart を個別にデプロイするここでの zookeeper チャートは bitnami/zookeeper を使用しており、そのウェアハウス アドレスは次のとおりです。 - https://github.com/bitnami/charts/tree/master/bitnami/zookeeper
- https://github.com/bitnami/containers/tree/main/bitnami/zookeeper
- ZooKeeper Operator については別の記事で説明します。
- 名前空間を作成します。
kubectl作成ns クラウド- zookeeper - paas - values.yaml をカスタマイズするだけです:
# Prometheus モニタリングに必要なサービスを公開する メトリクス: コンテナポート: 9141 有効: true .... .... サービス: 注釈: { } クラスターIP : "" ベースクライアントポートを無効にする: false 外部トラフィックポリシー:クラスター 追加ポート: [ ] ヘッドレス: 注釈: { } publishNotReadyAddresses : true ロードバランサIP : "" ロードバランサーソース範囲: [ ] ノードポート: クライアント: "" TLS : "" ポート: クライアント: 2181 選挙: 3888 フォロワー数: 2888 3181まで セッションアフィニティ:なし タイプ: ClusterIP 注: 外部ロード バランサーをサポートするクラウド プロバイダーのサービスを使用する場合は、サービスにロード バランサーを提供するために、サービス タイプを「LoadBalancer」に設定する必要があります。外部ロードバランサからのトラフィックはバックエンド Pod に直接リダイレクトされますが、これがどのように機能するかはクラウド プロバイダーによって異なります。 - helm デプロイメント:
helm で zookeeper をインストールします。/zookeeper -f値.yaml -nクラウド- zookeeper - paas クラスター内では、zookeeper.cloud-zookeeper-paas.svc.cluster.local:2181 を使用して外部サービスを提供できます。 - zkCli は ZooKeeper に接続します:
POD_NAME をエクスポートします。 $ ( kubectl get pods --namespace cloud-zookeeper-paas -l "app.kubernetes.io/name=zookeeper,app.kubernetes.io/instance=zookeeper,app.kubernetes.io/compnotallow=zookeeper" -o jsnotallow="{.items[0].metadata.name}")
kubectl - n クラウド- zookeeper - paas exec - it $POD_NAME -- zkCli.sh
# テスト [ zk : localhost : 2181 (接続済み) 0 ] ls / [動物園の飼育員] [ zk : localhost : 2181 (接続済み) 1 ] ls / zookeeper [設定、クォータ] [ zk : localhost : 2181 (接続済み) 2 ]終了
# 外部アクセス # kubectl ポート転送--namespace cloud-zookeeper-paas svc/zookeeper 2181: & zkCli.sh 127.0.0.1:2181 - zoo.cfg を表示
kubectl - n cloud - zookeeper - paas exec - it $POD_NAME -- cat /opt/bitnami/zookeeper/conf/zoo.cfg # 各ティックのミリ秒数 ティックタイム= 2000 # 初期値であるティック数 # 同期フェーズは 初期制限= 10 #通過できるティック数 # リクエストを送信し、確認応答を受け取る 同期制限= 5 # スナップショットが保存されるディレクトリ。 # / tmpをストレージとして使用しないでください。ここでの/ tmpは単なる # 例のため。 dataDir =/ビットナミ/動物園の飼育員/データ # クライアントが接続するポート クライアントポート= 2181 # クライアント接続の最大数。 # より多くのクライアントを処理する必要がある場合は、これを増やします 最大クライアント接続数= 60 # # 必ずメンテナンスセクションをお読みください # 自動消去をオンにする前に管理者ガイドを参照してください。 # # https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # dataDirに保持するスナップショットの数 自動パージ.snapRetainCount = 3 #パージタスク間隔(時間単位) # 自動パージ機能を無効にするには「0」に設定します 自動パージ.パージ間隔= 0
## メトリクスプロバイダー # # https://prometheus.ioメトリクスエクスポーター metricsProvider .className = org .apache .zookeeper .metrics .prometheus .PrometheusMetricsProvider #metricsProvider .httpHost = 0.0 .0 .0 メトリックプロバイダー.httpPort = 9141 メトリックプロバイダー.exportJvmInfo = true 事前割り当てサイズ= 65536 スナップカウント= 100000 最大接続数= 0 許可しない= false クォーラムListenOnAllIPs = false 4 lw .commands .whitelist = srvr 、 mntr 、 ruok 最大セッション数= 40000 管理者サーバーポート= 8080 admin.enableServer = true サーバー.1 = zookeeper - 0 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 サーバー.2 = zookeeper - 1 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 サーバー.3 = zookeeper - 2 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 ClickHouse Helm Chartを独立してデプロイするここでのクリックハウス チャートは、sentry-kubernetes/charts によって管理されているバージョンを使用します。 - Sentry Snuba は現在、ClickHouse 21.x 以降には対応していません。ここでのミラーバージョンは yandex/clickhouse-server:20.8.19.4 です。
- https://github.com/sentry-kubernetes/charts/tree/develop/clickhouse
- ClickHouse Operator + ClickHouse Keeper については、以降の記事で説明します。
組み込みの clickhouse-charts にはいくつか問題があります。 「type:LoadBalancer」または「type:NodePort」の構成を許可するには、サービス部分を変更するだけです。 注: 外部ロード バランサーをサポートするクラウド プロバイダーのサービスを使用する場合は、サービスにロード バランサーを提供するために、サービス タイプを「LoadBalancer」に設定する必要があります。外部ロードバランサからのトラフィックはバックエンド Pod に直接リダイレクトされますが、これがどのように機能するかはクラウド プロバイダーによって異なります。 - 名前空間を作成します。
kubectl作成ns クラウド-クリックハウス- paas - values.yaml をカスタマイズするだけです:
上記の zoo.cfg 内の 3 つの zookeeper インスタンスのアドレスに注意してください。 サーバー.1 = zookeeper - 0 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 サーバー.2 = zookeeper - 1 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 サーバー.3 = zookeeper - 2 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local : 2888 : 3888 ; 2181 # zookeeper_servers を変更する クリックハウス: 設定マップ: 動物園管理サーバ: 設定: -ホストテンプレート: 'zookeeper-0.zookeeper-headless.cloud-zookeeper-paas.svc.cluster.local' インデックス:クリックハウス ポート: "2181" -ホストテンプレート: 'zookeeper-1.zookeeper-headless.cloud-zookeeper-paas.svc.cluster.local' インデックス:クリックハウス ポート: "2181" -ホストテンプレート: 'zookeeper-2.zookeeper-headless.cloud-zookeeper-paas.svc.cluster.local' インデックス:クリックハウス ポート: "2181" 有効: true 操作タイムアウト: "10000" セッションタイムアウト: "30000"
# Prometheus モニタリングに必要なサービスを公開する メトリクス: 有効: true もちろん、ここでは Headless Service を使用する必要はありません。これは同じクラスターの異なる名前空間間の内部アクセスであるため、ClusterIP タイプの Service を入力するだけで済みます。 # zookeeper_servers を変更する クリックハウス: 設定マップ: 動物園管理サーバ: 設定: -ホストテンプレート: 'zookeeper.cloud-zookeeper-paas.svc.cluster.local' インデックス:クリックハウス ポート: "2181" 有効: true 操作タイムアウト: "10000" セッションタイムアウト: "30000"
# Prometheus モニタリングに必要なサービスを公開する メトリクス: 有効: true - helm デプロイメント:
helm で clickhouse をインストールします。 /クリックハウス- f値.yaml - nクラウド-クリックハウス- paas - ClickHouseに接続
kubectl - n クラウド- clickhouse - paas exec - it clickhouse - 0 --clickhouse-client --multiline --host="clickhouse-1.clickhouse-headless.cloud-clickhouse-paas" - クラスターを検証する
データベースを表示します。 システム.clustersから*を選択します。 システム.zookeeperから*を選択します( path = '/clickhouse' )。 現在のClickHouseクラスタのConfigMap kubectl get configmap -n cloud-clickhouse-paas | grep クリックハウス クリックハウス-設定1 28時間 クリックハウス-メトリカ1 28時間 クリックハウス-ユーザー1 28時間 クリックハウス設定(config.xml) <ヤンデックス> <パス> / var / lib / clickhouse /</パス> <tmp_path> / var / lib / clickhouse / tmp / </tmp_path> <user_files_path> / var / lib / clickhouse / user_files / </user_files_path> <format_schema_path> / var / lib / clickhouse / format_schemas / </format_schema_path>
<include_from> /etc/clickhouse-server/metrica.d/metrica.xml </include_from>
<users_config> users.xml </users_config>
<表示名>クリックハウス</表示名> <listen_host> 0.0 .0 .0 </listen_host> <http_ポート> 8123 </http_ポート> <tcp_port> 9000 </tcp_port> <インターサーバーhttp_ポート> 9009 </インターサーバーhttp_ポート> <最大接続数> 4096 </最大接続数> <キープアライブタイムアウト> 3 </キープアライブタイムアウト> <最大同時クエリ> 100 </最大同時クエリ> <非圧縮キャッシュサイズ> 8589934592 </非圧縮キャッシュサイズ> <マークキャッシュサイズ> 5368709120 </マークキャッシュサイズ> <タイムゾーン> UTC </タイムゾーン> < umask > 022 </ umask > <mlock_executable>が偽</mlock_executable> < remote_servers incl = "clickhouse_remote_servers" optinotallow = "true" /> < zookeeper incl = "zookeeper-servers" optinotallow = "true" /> < macros incl = "マクロ" optinotallow = "true" /> <組み込み辞書の再読み込み間隔> 3600 </組み込み辞書の再読み込み間隔> <最大セッションタイムアウト> 3600 </最大セッションタイムアウト> <default_session_timeout> 60 </default_session_timeout> <内部 DNS キャッシュを無効にする> 1 </内部 DNS キャッシュを無効にする>
<クエリログ> <データベース>システム</データベース> <テーブル> query_log </テーブル> <partition_by> toYYYYMM (イベント日付) </partition_by> <フラッシュ間隔ミリ秒> 7500 </フラッシュ間隔ミリ秒> </クエリログ>
<クエリスレッドログ> <データベース>システム</データベース> <テーブル> query_thread_log </テーブル> <partition_by> toYYYYMM (イベント日付) </partition_by> <フラッシュ間隔ミリ秒> 7500 </フラッシュ間隔ミリ秒> </クエリ_スレッド_ログ>
<分散DDL > <パス> / clickhouse / task_queue / ddl </パス> </分散ddl > <ロガー> <レベル>トレース</レベル> <ログ> /var/log/clickhouse-server/clickhouse-server.log </ログ> <エラーログ> /var/log/clickhouse-server/clickhouse-server.err.log </errorlog> <サイズ> 1000M </サイズ> <カウント> 10 </カウント> </ロガー> </ヤンデックス> クリックハウスメトリカ(metrica.xml) <ヤンデックス> <動物園の飼育係 -サーバー> <ノードインデックス= "クリックハウス" > <ホスト> zookeeper - 0 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local </ホスト> <ポート> 2181 </ポート> </ノード> <ノードインデックス= "クリックハウス" > <ホスト> zookeeper - 1 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local </ホスト> <ポート> 2181 </ポート> </ノード> <ノードインデックス= "クリックハウス" > <ホスト> zookeeper - 2 .zookeeper - headless .cloud - zookeeper - paas .svc .cluster .local </ホスト> <ポート> 2181 </ポート> </ノード> <セッションタイムアウト> 30000 </セッションタイムアウト> <操作タイムアウト ミリ秒> 10000 </操作タイムアウト ミリ秒> <ルート></ルート> <アイデンティティ></アイデンティティ> </動物園管理人-サーバー> <クリックハウスリモートサーバー> <クリックハウス> <破片> <レプリカ> <内部レプリケーション>が true </内部レプリケーション> <ホスト> clickhouse - 0 .clickhouse - headless .cloud - clickhouse - paas .svc .cluster .local </ホスト> <ポート> 9000 </ポート> <ユーザー>デフォルト</ユーザー> <圧縮>真</圧縮> </レプリカ> </シャード> <破片> <レプリカ> <内部レプリケーション>が true </内部レプリケーション> <ホスト> clickhouse - 1 .clickhouse - headless .cloud - clickhouse - paas .svc .cluster .local </ホスト> <ポート> 9000 </ポート> <ユーザー>デフォルト</ユーザー> <圧縮>真</圧縮> </レプリカ> </シャード> <破片> <レプリカ> <内部レプリケーション>が true </内部レプリケーション> <ホスト> clickhouse - 2 .clickhouse - headless .cloud - clickhouse - paas .svc .cluster .local </ホスト> <ポート> 9000 </ポート> <ユーザー>デフォルト</ユーザー> <圧縮>真</圧縮> </レプリカ> </シャード> </クリックハウス> </クリックハウスリモートサーバー>
<マクロ> <レプリカ from_env = "ホスト名" ></レプリカ> <シャード from_env = "SHARD" ></シャード> </マクロ> </ヤンデックス> クリックハウスユーザー(users.xml) <ヤンデックス> </ヤンデックス> セントリーヘルムチャートカスタマイズClickHouse PaaSに接続し、複数のノードを持つ単一のクラスターvalues.ymlを変更するだけです Sentry-charts で clickHouse と zookeeper を無効にするクリックハウス: 有効: false 飼育員: 有効: false 外部Clickhouseを変更する外部クリックハウス: データベース:デフォルト ホスト: "clickhouse.cloud-clickhouse-paas.svc.cluster.local" httpポート: 8123 パスワード: "" シングルノード: false クラスター名: "clickhouse" tcpポート: 9000 ユーザー名:デフォルト 知らせ: - ここでは、マルチノードシャードクラスターをクラスターに接続するだけで、Snuba システムは複数の ClickHouse マルチノード マルチシャード マルチコピー クラスターに接続し、複数のスキーマを異なるクラスターに配布できるように設計されているため、超大規模なスループットを実現できます。これは同じクラスターの異なる名前空間間の内部アクセスであるため、タイプを ClusterIP Sevice として入力するだけです。
- singleNode は false に設定する必要があることに注意してください。複数のノードがあるため、clusterNameも指定する必要があります。ソースコード分析:
- これは、次のことを決定するために使用されます: 異なる ClickHouse テーブル エンジンなどを使用するかどうかを決定するために使用されます。
- もちろん、ClickHouse 自体は別の技術的な方向性であり、ここでは説明しません。
どの移行を実行するか(ローカルのみ、またはローカルと分散テーブル) クエリの違い - _local テーブルと _dist テーブルのどちらが選択されているかなど 展開する helm で sentry をインストールします。 /セントリー- f値.yaml - n セントリー _local および _dist テーブルと system.zookeeper を確認します。 kubectl - n クラウド- clickhouse - paas exec - it clickhouse - 0 --clickhouse-client --multiline --host="clickhouse-1.clickhouse-headless.cloud-clickhouse-paas"
データベースを表示します。
テーブルを表示します。
システム.zookeeperから*を選択します(パスは'/clickhouse'です)。 高度な部品とハイパースケールのスループットClickHouse マルチクラスタ/マルチノード/マルチシャード/マルチコピーミドルウェア PaaS にアクセスVKE LoadBlancer + VKE K8S Cluster + ZooKeeper-Operator + ClickHouse-Operator の複数のセットを個別にデプロイして、スキーマを異なるクラスターとマルチノード シャードに配布します。 Snuba システム設計の分析テストケースのソースコードを表示して、システム設計と高レベルの構成を理解する ClickHouse クラスターのシャードとレプリカ間の読み取りおよび書き込みの負荷分散、接続プールなどの問題について。 Snuba は、システム設計とコードに関して十分な考慮と最適化を行っています。 ClickHouse Operatorの独立した複数のクラウドネイティブオーケストレーションクラスターやSnubaシステム設計などの高度な部分については、VIPコラムライブクラスで別途解説します。 |