この記事では主に、仮想ネットワーク制御プレーン上の ServiceMesh テクノロジーと転送プレーン上のプログラム可能なスイッチを使用して、UCloud の仮想ネットワークでグレースケール リリースを実現する方法について詳しく説明します。 ServiceMeshはグレースケールのコントロールサーフェスを実装します コントロール プレーンでは、初期のグレースケール リリースは APIGW を使用して実装されました。 APIGW は通常、ユーザー トラフィックの入口にのみ導入され、完全なグレースケール リリースには 2 つのシステムを完全に導入する必要があります。しかし、マイクロサービス時代においては、マイクロサービスへの変更には 2 つのシステムを完全に展開する必要があり、コストがかかるだけでなく、製品の変更速度にも重大な影響を及ぼします。 ServiceMesh は、集中管理を提供しながら、APIGateway をローカルにデプロイするのと同様の方法でこれらの問題を完全に解決します。 UCloud の軽量 ServiceMesh プラットフォームは Istio をベースとしており、Envoy プロキシを引き続き使用します。完全な DSL サポートを維持しながら、K8S からの独立した操作を実現するように Pilot を変更します。 そのため、ネットワーク チームは、独自のニーズをよりよく満たすために Pilot を高度にカスタマイズしました。 カスタマイズプラン1:アカウントごとにグレースケール。 GRPC または HTTP リクエストにカスタム ヘッダー x-ucloud-routeby を追加します。 x-ucloud-routeby は Cookie エンコード形式を使用し、アカウント情報を含みます。ヘッダーに基づいてポリシー ルーティングを実行するように Envoy を構成します。 カスタマイズされたソリューション 2: IPTables の透過的な転送の代わりに明示的なプロキシを使用して Envoy と統合し、HTTP 1.0、HTTP 2.0、gRPC をサポートします。 Envoy のプロキシ ポートが設定されている場合、ServiceMesh は Envoy を介して接続されます。ドメイン名が設定されているが、Envoy のプロキシが設定されていない場合は、ETCD gRPC の命名と検出が自動的に使用されます。 IP アドレスとポートが設定されている場合は、指定されたアドレスに直接接続されます。
カスタマイズ ソリューション 3 : docker-compose を使用してコンテナーを管理し、サイドカーを実装します。新しいソリューションでは、マイクロサービスをパッケージ化してデプロイするために引き続きコンテナ アプローチを使用しますが、既存のサービスのネットワーク通信方法を簡素化するためにホスト ネットワーク アプローチを使用します。 docker-compose を使用してコンテナを管理し、サイドカーを実装することで、シンプルなサービス管理、バージョン管理、クラスター管理、ルーティング ポリシー管理レイヤーが実装されます。クラスター内の各ノード (VM または物理サーバー) に対して docker-compose 構成ファイルが生成され、各ノードのサービスが展開および管理されます。 プログラマブルスイッチは転送プレーングレースケールを実装する 転送プレーンのグレースケール ソリューションの選択に関しては、チームはプログラム可能なスイッチ (Barefoot Tofino チップに基づく) を使用してグレースケール ゲートウェイを実装し、通常のスイッチを置き換えて強力なグレースケール機能を実現しました。 Grayscale Gateway*** は 64 個の 100G インターフェイスを備え、6.4T の帯域幅を提供します。PPS パフォーマンスは 4400 メガビットに達し、レイテンシは 10 万米ドルレベルであるため、ネットワーク ブロードバンドの高性能要件を十分にサポートできます。 Grayscale Gateway は、一貫性のあるハッシュ ECMP 機能を提供できます。任意のカスタム フィールド (内部仮想ネットワーク アドレスやテナント ID を含む) に基づいてハッシュを計算できます。ハッシュを計算する前にグレースケール ルールを適用することを優先し、任意のフィールドに基づいてグレースケール ルールをカスタマイズでき、最小粒度は TCP ストリームによってグレースケール化できます。
転送面のグレースケール例 これらの新しいツールを使用すると、新しい戦略を展開することで、よりきめ細かいグレースケールのリリースを実現できます。具体的な解決策は、プログラム可能なスイッチ BGP がトラフィックを転送するためのクラスター VIP をアナウンスし、選択フィールドに基づいて一貫性のあるハッシュを計算し、トラフィックをバックエンド サーバーに分散し、選択フィールド (VNI、送信元アドレス、宛先アドレス) に従ってグレースケール ルールを構成することです。 グレースケールの手順は次のとおりです。 VMの粒度に基づいてトラフィックをグレースケールバックエンドサーバーに切り替える スイッチ完了後すぐに自動回帰テストを実施し、ルーティングテーブルに基づいて監視アドレスリストを自動生成し、ネットワークの相互運用性をPingテストします。 テストに合格すると、グレースケールVMアドレスが徐々に増加します VPCトラフィック全体がグレースケールバックエンドサーバーに切り替えられるまで シャード内のすべての VPC が新しいグレースケールバックエンドサーバーに切り替わるまで、新しい VPC に切り替えます。 グレースケールリリース完了
上記のコンテンツは、10月12日に上海でUCloudが主催したTech Talk***イベントで初めて公開されました。Tech Talkは、ユーザーとの詳細な技術交流を目的としたUCloudのオフラインイベントです。今後も継続して開催いたしますので、ぜひご参加ください。 |