ダボでのプロキシレスメッシュの実践

ダボでのプロキシレスメッシュの実践

著者 |王成明

1. 背景

Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの道において新たな重要な一歩を踏み出しました。このバージョンでは、プロキシレス メッシュの新機能が追加されました。 Dubbo Proxyless Mesh は xDS プロトコル解析を直接実装し、Dubbo とコントロール プレーン間の直接通信を可能にすることで、トラフィック制御、サービス ガバナンス、可観測性、セキュリティなどの統合制御を実現し、サイドカー モードによってもたらされるパフォーマンスの低下や展開アーキテクチャの複雑さを回避します。 02​

2. サービスメッシュとは

サービス メッシュは、「サービス メッシュ」とも翻訳され、サービス間の通信のためのインフラストラクチャ層として機能します。 Buoyant の CEO である Willian Morgan 氏は、記事「サービス メッシュとは何か? なぜ必要なのか?」で、サービス メッシュとは何か、クラウド ネイティブ アプリケーションにサービス メッシュが必要な理由を説明しています。

William Morgan 氏は Service Mesh を次のように説明しています。

サービス メッシュは、サービス間通信を処理するための専用のインフラストラクチャ レイヤーです。最新のクラウド ネイティブ アプリケーションを構成するサービスの複雑なトポロジを通じて、リクエストを確実に配信する役割を担います。実際には、サービス メッシュは通常、アプリケーションが意識することなく、アプリケーション コードと一緒にデプロイされる軽量ネットワーク プロキシの配列として実装されます。

中国語に翻訳: サービス メッシュは、サービス間の通信を処理するインフラストラクチャ層です。最新のクラウドネイティブ アプリケーションを構成する複雑なサービス トポロジ全体でリクエストを確実に配信する役割を担います。実際には、サービス メッシュは通常、アプリケーションがプロキシの存在を認識することなく、アプリケーション コードと一緒にデプロイされる軽量ネットワーク プロキシの配列として実装されます。サービス メッシュについて話すとき、古典的なサイドカー アーキテクチャ モデルについて言及する必要があります。ビジネス コンテナの通信トラフィックを引き継ぐために、ビジネス ポッドにサイドカー コンテナを挿入します。同時に、サイドカー コンテナはグリッド プラットフォームのコントロール プレーンに接続されます。コントロール プレーンが発行するポリシーに基づいてプロキシ トラフィックを統制および管理し、元のサービス フレームワークの統制機能をサイドカー コンテナーに下げることで、基本的なフレームワーク機能を沈め、ビジネス システムから切り離します。

従来の Sidecar Mesh 展開アーキテクチャには、スムーズなアップグレード、多言語、ビジネスへの介入の少なさなど、多くの利点がありますが、次のような追加の問題も生じます。

  • プロキシによって生じるパフォーマンスの低下は、複雑なトポロジを持つネットワーク呼び出しで特に顕著になります。
  • トラフィック傍受によるアーキテクチャの複雑さ
  • サイドカーライフサイクル管理
  • 展開環境は制限されており、すべての環境が Sidecar トラフィック傍受条件を満たすわけではありません。

Sidecar Meshモデルの問題に対して、Dubboコミュニティは以前からDubboをコントロールプレーンに直接接続することを検討・検討しており、国内のオープンソースコミュニティで初めてProxyless Meshの概念を提案しました。もちろん、プロキシレスの概念は Google によって最初に提案されました。 03​

3. Dubbo プロキシレスメッシュ

Dubbo プロキシレス モードとは、Dubbo が Istiod と直接通信し、xDS プロトコルを通じてサービス検出やサービス ガバナンスなどの機能を実装することを意味します。

プロキシレス モードでは、マイクロサービスは 2.x 時代のデプロイメント アーキテクチャに戻ります。これは、Dubbo の従来のサービス ガバナンス モードと非常によく似ています。したがって、このモードは新しいものではありません。 Dubbo は最初からこのように設計されていました。そうすることで、アプリケーションのパフォーマンスが大幅に向上し、ネットワークの遅延が短縮されます。このアプローチは、元の SDK ベースのマイクロサービス モデルに応えるものだと考える人もいます。実際、Envoy の xDS API はまだ使用されていますが、アプリケーションに Sidecar プロキシを挿入する必要がなくなったため、アプリケーション パフォーマンスの低下を軽減できます。

ヒント: 対応する検出サービスとそれに対応するAPIはxDSと呼ばれます

しかし、メッシュ アーキテクチャと比較すると、Dubbo の従来のサービス ガバナンス モデルは、コントロール プレーンの統合制御を重視していません。これはまさにサービス メッシュが重視している点です。トラフィック、可観測性、証明書などの標準化された制御とガバナンスを重視しており、これはメッシュ コンセプトの高度な側面でもあります。

Dubbo プロキシレス アーキテクチャ モードでは、Dubbo プロセスはコントロール プレーンと直接通信し、Dubbo プロセスは直接通信モードを維持し続けます。プロキシレス アーキテクチャの利点は次のとおりです。

  • 追加のプロキシトランジットロスがないため、パフォーマンスに敏感なアプリケーションに適しています。
  • レガシーシステムのスムーズな移行に貢献
  • シンプルなアーキテクチャ、簡単な操作とメンテナンスの導入
  • ほぼすべての導入環境に適しています

4. サービス検出

xDS アクセスは登録センターモードで接続されます。ノード検出は、他の登録センターのサービス イントロスペクション モデルと同じです。 xDS の負荷分散およびルーティング構成は、ServiceInstance の動的ランタイム構成を通じて送信されます。構成パラメータは、Invoker の構築時に構成アドレスに渡されます。

5. 証明書管理

ゼロトラスト アーキテクチャでは、ワークロードの識別と信頼を厳密に区別する必要があり、X.509 証明書を発行することが推奨される認証方法です。 Kubernetes クラスターでは、サービスは DNS 名を介して相互にアクセスし、ネットワーク トラフィックは DNS スプーフィング、BGP/ルーティング ハイジャック、ARP スプーフィングなどによってハイジャックされる可能性があります。サービス名 (DNS 名) をサービス ID に強力に関連付けるために、Istio は X.509 証明書に配置された安全な命名メカニズムを使用します。 SPIFFE は、Istio で採用されている安全な命名仕様です。これは、クラウド ネイティブによって定義された標準化された移植可能なワークロード ID 仕様でもあります。 Secure Production Identity Framework For Everyone (SPIFFE) は、サービス間の相互 ID 認証のための一連の標準であり、主に次のものが含まれます。

  • SPIFFE ID標準では、SPIFFE IDはサービスの一意の識別子であり、特定の実装ではURIリソース識別子を使用します。
  • SPIFFE検証可能ID文書(SVID)標準。SPIFFE IDを暗号的に検証可能なデータ形式にエンコードします。
  • SVIDの発行と取り消しのためのAPI標準(SVIDはSPIFFE IDの識別資格情報です)

SPIFFE ID は、ワークロードの一意の識別子として、spiffe://<信頼ドメイン>/<ワークロード識別子> などの URI 形式を指定します。 Istio は独自のエコシステム内では、セキュリティ名として SPIFFE ID のみを使用します。データ形式は独自に実装されており、通信形式はCNCFがサポートするxDSプロトコル仕様(証明書認証通信は具体的にはxDSのSDS)を採用しています。 Istio は、特定の形式の SPIFFE ID をセキュア名として使用し、X.509 証明書の subjectAltName 拡張に挿入します。 「trust_domain」パラメータは、Istiod 環境変数 TRUST_DOMAIN を通じて挿入され、マルチクラスター環境での対話に使用されます。​

具体的な形式は次のとおりです: spiffe://<trust_domain>/ns/<namespace>/sa/<service_account>

Dubbo Proxyless Mesh 証明書を発行するプロセスは次のとおりです。

  • RSA秘密鍵を作成する
  • CSR(証明書署名要求)テンプレートを作成する
  • 自己署名CSRを使用して証明書を生成する
  • CA 証明書と秘密鍵を保存するための Kubernetes Secret リソースを作成する (CA サービスによって処理される)

VI.ケース実践

次に、既存のプロジェクトをプロキシレス メッシュ モードで簡単に実行する例を紹介します。

1. 環境整備

  • Dockerをインストールする

参考:

  • minikubeをインストールする

推奨: https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/

  • istioをインストールする

https://istio.io/latest/docs/setup/getting-started/

注: Istio をインストールするときは、first-party-jwt サポートを有効にする必要があります (istioctl ツールを使用してインストールするときに --set values.global.jwtPolicy=first-party-jwt パラメータを追加します)。そうしないと、クライアント認証が失敗します。

参照コマンドは次のとおりです。

 https://istio.io/downloadIstio 実行します sh -
cd istio - 1.xx.x
エクスポート PATH = $PWD / bin : $PATH
istioctl インストール--set profile=demo --set values.global.jwtPolicy=first-party-jwt -y

2. コードの準備

ここでは、公式サンプルを直接再利用します。コード アドレス: https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-xds これまでのところ、環境とコードはすべて準備完了です。 03

3. イメージを構築する

(1)Dockerを起動する

(2)minikubeを起動する

minikube はローカル K8s であるため、起動するには仮想エンジンが必要であり、ここでは docker を使用して管理します。次のコマンドで起動します

minikube スタート

dockerでminikubeを見ることができます

(3)istioの状態を確認する

(4)イメージを構築する

コードの場所をローカルで見つけ、次のコマンドを順番に実行します。

 # プロバイダーが配置されているパスを見つける
cd ./dubbo-samples-xds-provider/
# プロバイダーイメージをビルドする
docker build -t apache / dubbo - demo : dubbo - samples - xds - provider_0 .0 .1 を実行します。

 # 消費者が位置するパスを見つける
cd ../dubbo-samples-xds-consumer/
# 消費者イメージの構築
docker build -t apache / dubbo - demo : dubbo - samples - xds - consumer_0 .0 .1 を実行します。


(5)現地の画像を確認する

(6)名前空間を作成する

 # 名前空間を初期化する
kubectl apply -f https://raw.githubusercontent.com/apache/dubbo-samples/master/dubbo-samples-xds/deploy/Namespace.yml

# 名前空間を切り替える
kubens dubbo -デモ

名前空間を作成しないと、次のエラーが表示されます。

4. コンテナをデプロイする

 # プロバイダーが配置されているパスを見つける
cd ./dubbo-samples-xds-provider/src/main/resources/k8s
# dubbo -サンプル- xds / dubbo -サンプル- xds -プロバイダー/ src / main / resources / k8s / Deployment.yml
# dubbo -サンプル- xds / dubbo -サンプル- xds -プロバイダー/ src / main / resources / k8s / Service.yml

# プロバイダーのデプロイメントとサービスをデプロイする
kubectl 適用-f デプロイメント.yml
kubectl apply -fサービス.yml


# 消費者が位置するパスを見つける
cd ../../../../../dubbo-samples-xds-consumer/src/main/resources/k8s
# dubbo -サンプル- xds / dubbo -サンプル- xds -コンシューマー/ src / main / resources / k8s / Deployment.yml

# コンシューマーのデプロイメントをデプロイする
kubectl 適用-f デプロイメント.yml

minikubeダッシュボードで、デプロイしたポッドを確認します。

5. 消費者効果を観察する

kubectl ログ xxx

結果:こんにちは xDS Consumer さん! ホスト: 172.17.0.5 
結果:こんにちは xDS Consumer さん! ホスト: 172.17.0.5
結果:こんにちは xDS Consumer さん! ホスト: 172.17.0.6
結果:こんにちは xDS Consumer さん! ホスト: 172.17.0.6

7. まとめと展望

この記事では、主にアーキテクチャ、サービス検出、証明書管理など、Dubbo Proxyless Mesh のコアプロセスを分析します。最後に、例を通して Dubbo Proxyless の使用方法を説明します。

Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの道において新たな重要な一歩を踏み出しました。今年末には、Dubbo Mesh はサービス検出機能を備えたバージョンをリリースする予定です。これにより、すべての Dubbo ユーザーは、下位​​バージョンから Mesh アーキテクチャにスムーズに移行できるようになります。ガバナンス機能を備えたバージョンは来年の春先にリリースされる予定です。ホットプラグインアップデート機能を備えたバージョンは来年末までにリリースされる予定です。 Dubbo のクラウドネイティブの旅を目の当たりにすることに興味のある学生が、コミュニティへの貢献に積極的に参加してくれることを願っています。

著者について

Ant Financial エンジニアであり、Apache Dubbo コミッターでもある Wang Chengming 氏は、RPC、サービス メッシュ、クラウド ネイティブに重点を置いています。

<<:  Kubernetes アプリケーション構成管理を 1 つの記事で理解する

>>:  エッジコンピューティングの種類と用途

推薦する

マルチクラウド環境で成功するために必要なこと

[[341783]] [51CTO.com クイック翻訳] 企業がビジネス上の問題を解決するための万...

SEO空間ドメイン名選択の最適化戦略

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO を...

初心者は、ウェブサイトはトレードオフを行うプロセスであることを理解する必要があります。

最近、私のウェブマスターQQグループがなぜか静かになっているのか分かりません。百度の耐え難いKステー...

Baiduの外部リンクツールがアップグレードされ、インターネット上のすべての外部リンクをチェックできるようになりました

Yahoo のバックリンク ツールが閉鎖されて以来、外部リンクの確認は SEO 担当者にとって常に頭...

収益の伸びは2四半期連続で鈍化し、オラクルのクラウド事業の勢いは衰えつつある

オラクルは、ハイパースケールプロバイダーと競争できるクラウドプラットフォームとして自社を再配置する取...

今こそ、新しいエンタープライズ テクノロジー ベンダーとの提携を検討する時期でしょうか?

多くの企業は、IT サプライヤーと長期的な関係を築いていると考えられます。いずれにしても、確立された...

#11.11# dogyun: クラウドサーバーの最適化された全13ラインが30%オフ、独立サーバーは月額100元オフ、香港特別価格クラウドは年間168元まで安くなる

Dogyun(犬雲)はダブル11プロモーションを実施しました。すべてのエラスティッククラウドサーバー...

パシフィック・ダイレクト・ショッピング・ネットワークのカスタマーサービスは資金が凍結されたと述べた。

ある弁護士は、中国ではBMCモデルに関する具体的な法的定義はなく、依然として境界上にあると述べた。 ...

ハイブリッドクラウド: 顧客体験を向上させる 5 つの方法

組織のクラウド戦略を策定する際には、ハイブリッド クラウドの利点に関する専門家の洞察を考慮することが...

Baidu は人工知能に注力しているが、インターネットの未来を掴めるだろうか?

[IT Times Weekly 編集者注] Baidu が最近、Andrew Ng 氏などの一流学...

インタビューエピソード11: SEOテクノロジーを活用して利益を最大化し、ビジネスを立ち上げる方法

インタビューゲスト:馬海斌ゲスト情報: SEO の専門家、別名 Feather Teacher面接日...

ウェブサイトでBaidu Libraryの外部リンクを巧みに増やす方法

SEO担当者として、私たちはBaidu Wenkuをよく知っている必要があります。Baiduの製品と...

「ネットセレブ営業」ゲームは終了しました! ?

これまでの製品発表と同様に、羅永浩のエイプリルフールの最初のライブストリーミング番組はさまざまな分野...

インフラストラクチャ監視: 課題とベストプラクティス

インフラストラクチャ監視とは、テクノロジー スタック全体のパフォーマンスと可用性の問題を自動的に診断...