メインコンテンツまでスキップ

クラスターにアクセス

Kubernetesは、VIP(Virtual IP)およびロードバランサーとしてServiceの使用を提供します。Serviceには3つの外部公開モードがあります:ClusterIP、NodePort、およびLoadBalancer。

ClusterIP

DorisはKubernetes上でデフォルトでClusterIPアクセスモードを提供します。ClusterIPアクセスモードは、Kubernetesクラスター内の内部IPアドレスを提供し、この内部IPを通じてサービスを公開します。ClusterIPモードでは、サービスはクラスター内でのみアクセス可能です。

ステップ1:Serviceの取得

クラスターのデプロイ後、以下のコマンドを使用してDoris Operatorによって公開されるサービスを確認できます:

kubectl -n doris get svc

返された結果は以下の通りです:

NAME                              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                               AGE
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 9m
doriscluster-sample-be-service ClusterIP 10.1.68.128 <none> 9060/TCP,8040/TCP,9050/TCP,8060/TCP 9m
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 14m
doriscluster-sample-fe-service ClusterIP 10.1.118.16 <none> 8030/TCP,9020/TCP,9030/TCP,9010/TCP 14m

上記の結果では、FEとBEに対して2種類のサービスがあり、それぞれ「internal」と「service」という接尾辞が付いています:

  • 「internal」接尾辞を持つサービスは、ハートビート、データ交換、その他の操作など、Doris内部での内部通信にのみ使用でき、外部使用はできません。
  • 「service」接尾辞を持つサービスは、ユーザーが使用できます。

Step 2: Dorisへのアクセス

以下のコマンドを使用して、現在のKubernetesクラスター内にmysqlクライアントを含むpodを作成できます:

kubectl run mysql-client --image=mysql:5.7 -it --rm --restart=Never --namespace=doris -- /bin/bash

クラスター内のコンテナから、外部に公開されている「service」サフィックス付きのサービス名を使用してDorisクラスターにアクセスできます:

mysql -uroot -P9030 -hdoriscluster-sample-fe-service

NodePort

DorisClusterのアクセス設定セクションに従い、NodePortを使用するアクセスモードを設定した後、MySQLプロトコルを使用してrootパスワードなしモードでFEにアクセスできます。手順は以下の通りです:

ステップ1:サービスの取得

クラスターをデプロイした後、以下のコマンドを使用してDoris Operatorによって公開されているサービスを表示できます:

kubectl get service

返される結果は以下の通りです:

NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                       AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 169d
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 2d
doriscluster-sample-fe-service NodePort 10.152.183.58 <none> 8030:31041/TCP,9020:30783/TCP,9030:31545/TCP,9010:31610/TCP 2d
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 2d
doriscluster-sample-be-service NodePort 10.152.183.244 <none> 9060:30940/TCP,8040:32713/TCP,9050:30621/TCP,8060:30926/TCP 2d

ステップ2: Dorisへのアクセス

NodePort経由でDorisにアクセスするには、ノードIPとマッピングされたポートを知る必要があります。ノードIPは以下のコマンドで取得できます:

  kubectl get nodes -owide

出力例::

NAME   STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE          KERNEL-VERSION          CONTAINER-RUNTIME
r60 Ready control-plane 14d v1.28.2 192.168.88.60 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r61 Ready <none> 14d v1.28.2 192.168.88.61 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r62 Ready <none> 14d v1.28.2 192.168.88.62 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22
r63 Ready <none> 14d v1.28.2 192.168.88.63 <none> CentOS Stream 8 4.18.0-294.el8.x86_64 containerd://1.6.22

その後、任意のノード(例:192.168.88.61、192.168.88.62、または192.168.88.63)のIPアドレスをマッピングされたポートと組み合わせて使用し、Dorisにアクセスできます。例えば、ノード192.168.88.62とポート31545を使用する場合:

  mysql -h 192.168.88.62 -P 31545 -uroot

LoadBalancer

DorisClusterアクセス設定セクションに従って、パブリッククラウドプラットフォームにおいて、LoadBalancerを使用するアクセスモードを設定した後、rootパスワードなしモードでMySQLプロトコルを使用してFEにアクセスできます。手順は以下の通りです:

Step 1: サービスを取得する

クラスターをデプロイした後、以下のコマンドを使用してDoris Operatorによって公開されたサービスを確認できます:

kubectl get service

返される結果は以下の通りです:

NAME                              TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                                                       AGE
kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 169d
doriscluster-sample-fe-internal ClusterIP None <none> 9030/TCP 2d
doriscluster-sample-fe-service LoadBalancer 10.152.183.58 ac4828493dgrftb884g67wg4tb68gyut-1137856348.us-east-1.elb.amazonaws.com 8030:31041/TCP,9020:30783/TCP,9030:31545/TCP,9010:31610/TCP 2d
doriscluster-sample-be-internal ClusterIP None <none> 9050/TCP 2d
doriscluster-sample-be-service LoadBalancer 10.152.183.244 ac4828493dgrftb884g67wg4tb68gyut-1137823345.us-east-1.elb.amazonaws.com 9060:30940/TCP,8040:32713/TCP,9050:30621/TCP,8060:30926/TCP 2d

ステップ2: Dorisへのアクセス

LoadBalancerを通じてDorisにアクセスするには、外部IP(EXTERNAL-IPフィールドで提供される)と対応するポートを使用します。例えば、mysqlコマンドを使用して:

mysql -h ac4828493dgrftb884g67wg4tb68gyut-1137856348.us-east-1.elb.amazonaws.com -P 31545 -uroot

Kubernetesにデプロイされたdorisへのstreamloadアクセス

Dorisはstreamloadメソッドを使用したデータインポートをサポートしています。クライアントとDorisクラスターが同一のローカルネットワーク内にある場合、クライアントはFrontend (FE) アドレスをリクエストエンドポイントとして直接使用できます。FEサービスはHTTP 301ステータスコードで応答し、Backend (BE) アドレスを提供して、クライアントにリクエストをBEにリダイレクトしてデータインポートを実行するよう指示します。

ただし、DorisがKubernetes上にデプロイされている場合、内部通信はKubernetesクラスター内でのみアクセス可能なアドレスを使用します。FEが301リダイレクトメカニズムを通じて内部でのみ到達可能なBEアドレスを返す場合、Kubernetesクラスター外のクライアントからのデータインポート試行は失敗します。

Kubernetes環境外に位置するクライアントからStreamLoadを使用してデータをインポートするには、外部からアクセス可能なBEアドレスでインポートアドレスを構成する必要があります。

BEサービスへの外部アクセスの構成

KubernetesクラスターからBEサービスへのアクセスを有効にするには、サービスをNodePortまたはLoadBalancerとして構成します。これらの変更を適用するためにDorisClusterリソースを適切に更新してください。

BEプロキシアドレスの構成

NodePortまたはLoadBalancerの説明に従って、外部からアクセス可能なアドレスと対応するweb_serverポートを取得します。StreamLoad経由でデータをインポートする際は、このアドレスとポートをリクエストエンドポイントとして使用してください。