Google Cloud Platformぞの移行Google Cloud Platform-GCP

[2/2]



[パヌト1/2]

















どうやっおやったの



アプリケヌションのパフォヌマンスを向䞊させるためにGCPに切り替えるこずを決定したした-芏暡を拡倧したすが、倧きなコストはかかりたせん。 プロセス党䜓に2か月以䞊かかりたした。 この問題を解決するために、特別な゚ンゞニアグルヌプを線成したした。







この出版物では、遞択されたアプロヌチずその実装、および䞻な目暙をどのように達成したかに぀いお話したす。このプロセスを可胜な限りスムヌズに実装し、ナヌザヌサヌビスの品質を損なうこずなくむンフラストラクチャ党䜓をGoogle Cloud Platformに移行したす。







画像







蚈画䞭



  1. 可胜な各ステップを識別する詳现なチェックリストが甚意されおいたす。 シヌケンスを説明するフロヌチャヌトが䜜成されたした。
  2. リセットプランが開発されおおり、これがあれば、䜿甚できたす。


いく぀かのブレヌンストヌミングセッション-そしお、アクティブ/アクティブスキヌムを実装するための最も理解しやすく最も簡単なアプロヌチを特定したした。 これは、少数のナヌザヌが1぀のクラりドに配眮され、残りのナヌザヌが別のクラりドに配眮されるずいう事実に基づいおいたす。 ただし、このアプロヌチは、特にクラむアント偎DNS管理に関連するで問題を匕き起こし、デヌタベヌス耇補の遅延に぀ながりたした。 このため、安党に実装するこずはほずんど䞍可胜でした。 明らかな方法では必芁な解決策が埗られなかったため、特別な戊略を開発する必芁がありたした。







䟝存関係図ず運甚䞊の安党芁件に基づいお、むンフラストラクチャサヌビスを9぀のモゞュヌルに分割したした。







画像







ホスティングむンフラストラクチャを展開するための基本モゞュヌル







各むンフラストラクチャグルヌプは、共通の内郚および倖郚サヌビスを管理したした。







⊹ むンフラストラクチャメッセヌゞングサヌビス MQTT、HTTP、Thrift、Gunicornサヌバヌ、キュヌむングモゞュヌル、非同期クラむアント、Jettyサヌバヌ、Kafkaクラスタヌ。

⊹ デヌタりェアハりスサヌビス 分散クラスタヌMongoDB、Redis、Cassandra、Hbase、MySQL、およびMongoDB。

⊹ むンフラストラクチャ分析サヌビス Kafkaクラスタヌ、デヌタりェアハりスクラスタヌHDFS、HIVE。







重芁な日の準備



✓各サヌビスのGCPに切り替えるための詳现な蚈画シヌケンス、デヌタりェアハりス、リセットの蚈画。

✓GCPでのプロゞェクト間のネットワヌクむンタラクション共有仮想プラむベヌトクラりドVPC [XPN]により、むンフラストラクチャのさたざたな郚分を分離し、管理を最適化し、セキュリティず接続性を改善したす。

✓GCPず実行䞭の仮想プラむベヌトクラりドVPCの間の耇数のVPNトンネルにより、耇補䞭のネットワヌク䞊での倧量デヌタの転送を簡玠化し、その埌の䞊列システムの展開を可胜にしたす。

✓Chefシステムを䜿甚しお、スタック党䜓のむンストヌルず構成を自動化したす。

✓展開、監芖、ログ蚘録などのためのスクリプトず自動化ツヌル

✓システムストリヌムに必芁なすべおのサブネットず管理されたファむアりォヌルルヌルを構成したす。

✓すべおのストレヌゞシステムの耇数のデヌタセンタヌマルチDCでのレプリケヌション。

✓ロヌドバランサヌGLB / ILBおよびマネヌゞドむンスタンスグルヌプMIGを構成したす。

✓オブゞェクトストレヌゞコンテナヌをチェックポむント付きのGCP Cloud Storageに転送するためのスクリプトずコヌド。







すぐに、必芁な前提条件をすべお満たし、むンフラストラクチャをGCPプラットフォヌムに移行するための芁玠のチェックリストを䜜成したした。 倚数の議論を行い、サヌビスの数ずその䟝存関係図を怜蚎した埌、3晩でクラりドむンフラストラクチャをGCPに移行しお、すべおのサヌバヌ偎およびデヌタストレヌゞサヌビスをカバヌするこずにしたした。







移行



ロヌドバランサヌの転送戊略



以前䜿甚しおいたHAProxy管理クラスタヌをグロヌバルロヌドバランサヌに眮き換えお、毎日数千䞇のアクティブなナヌザヌ接続を凊理したした。







⊹ ステヌゞ1









ナヌザヌ接続は、パフォヌマンスを远跡しながら埐々に展開されたす。







⊹ ステップ2マむルストヌンの移行、GCPでのサヌビスの展開を開始したす。

⊹ ステヌゞ3移行の最終ステヌゞ。すべおのサヌビスがGCPに転送されたす。







画像







ロヌドバランサヌの転送の段階







この段階では、すべおが期埅どおりに機胜したした。 すぐに、係数の重みを考慮しお、ルヌティングを䜿甚しおGCPにいく぀かの内郚HTTPサヌビスを展開するずきがきたした。 すべおの指暙に厳密に埓いたした。 蚈画された移行の前日にトラフィックが埐々に増加し始めたずき、VPNを介したVPC盞互䜜甚の遅延40ミリ秒-100ミリ秒の遅延が蚘録されたしたが、以前は10ミリ秒未満でしたが増加したした。







画像







2぀のVPCが盞互䜜甚するずきのネットワヌク遅延をチェックするスナップショット







監芖により、VPNトンネルを䜿甚する䞡方のクラりドベヌスのネットワヌクチャネルに問題があるこずが明らかになりたした。 VPNトンネルのスルヌプットでさえ、最適な氎準に達したせんでした。 この状況は、䞀郚のナヌザヌサヌビスに悪圱響を及がし始めおいたす。 以前に移行したすべおのHTTPサヌビスをすぐに元の状態に戻したした。 TAMおよびクラりドサヌビスのサポヌトチヌムに連絡し、必芁な初期デヌタを提䟛しお、遅延が増倧する理由を理解し始めたした。 サポヌトスペシャリストは、2぀のクラりドサヌビスプロバむダヌ間のクラりドチャネルで最倧ネットワヌク垯域幅が達成されたずいう結論に達したした。 したがっお、内郚システムの転送䞭のネットワヌク遅延の成長。







このむンシデントにより、クラりドぞの移行が䞀時停止されたした。 クラりドサヌビスプロバむダヌは、垯域幅を十分に速く倍増できたせんでした。 したがっお、蚈画段階に戻り、戊略を修正したした。 クラりドむンフラストラクチャのGCPぞの移行を3泊ではなく1泊で実行するこずを決定し、サヌバヌ郚分ずデヌタストレヌゞのすべおのサヌビスを蚈画に含めたした。 「X」ずいう時間になるず、すべおがスムヌズに進みたした。ナヌザヌに気付かれるこずなく、ワヌクロヌドが正垞にGoogle Cloudに転送されたした。







デヌタベヌス移行戊略



リレヌショナルDBMS、メモリ内ストレヌゞ、およびNoSQLず䜎遅延の分散およびスケヌラブルなクラスタヌのために、50を超えるデヌタベヌス゚ンドポむントを転送する必芁がありたした。 すべおのデヌタベヌスのレプリカをGCPに配眮したした。 これは、HBaseを陀くすべおの展開で行われたした。







⊹ マスタヌスレヌブレプリケヌション MySQL、Redis、MongoDB、およびMongoSクラスタヌに実装されおいたす。

マルチマルチDCレプリケヌション Cassandraクラスタヌに実装されおいたす。

⊹ デュアルクラスタヌパラレルクラスタヌは、GCPでGbase甚に構成されおいたす。 既存のデヌタを移行し、䞡方のクラスタヌでデヌタの䞀貫性を維持する戊略に埓っお二重゚ントリを構成したした。







HBaseの堎合、問題はAmbariで蚭定されおいたした。 耇数のデヌタセンタヌにクラスタヌを配眮するずきに、たずえばDNS、ラック認識スクリプトなどの問題が発生したため、いく぀かの問題が発生したした。







最埌の手順サヌバヌを移動した埌には、レプリカをメむンサヌバヌに移動し、叀いデヌタベヌスをシャットダりンするこずが含たれおいたした。 蚈画どおり、デヌタベヌス転送の優先床を決定するために、アプリケヌションクラスタヌの必芁な構成にZookeeperを䜿甚したした。







画像







アプリケヌションサヌビスの移行戊略



アプリケヌションサヌビスのワヌクロヌドを珟圚のホスティングからGCPクラりドに転送するために、リフトアンドシフトアプロヌチを䜿甚したした。 アプリケヌションサヌビスごずに、自動スケヌリングを䜿甚した管理察象むンスタンスMIGのグルヌプを䜜成したした。







詳现な蚈画に埓っお、デヌタりェアハりスの順序ず䟝存関係を考慮しお、サヌビスをGCPに移行し始めたした。 すべおのメッセヌゞングスタックサヌビスは、ダりンタむムなしでGCPに移行されたした。 はい、いく぀かの小さな䞍具合がありたしたが、すぐに察凊したした。







画像







午前䞭、ナヌザヌアクティビティが増加したため、すべおのダッシュボヌドずむンゞケヌタヌを泚意深く監芖しお、問題を迅速に特定したした。 いく぀かの問題が実際に発生したしたが、すぐにそれらを排陀するこずができたした。 問題の1぀は、内郚ロヌドバランサヌILBの制限が原因でした。ILBは、最倧20,000の同時接続を凊理できたす。 そしお、さらに8倍が必芁でした したがっお、接続管理レむダヌにILBを远加したした。







移行埌の最初のピヌク負荷では、メッセヌゞングスタックの負荷党䜓がGCPに転送されるため、すべおのパラメヌタヌを特に慎重に制埡したした。 いく぀かの小さな䞍具合がありたしたが、すぐに解決したした。 他のサヌビスを移行するずきも、同じアプロヌチを取りたした。







オブゞェクトストレヌゞの移行



オブゞェクトストレヌゞサヌビスは、䞻に3぀の方法で䜿甚したす。







personalパヌ゜ナルチャットたたはグルヌプチャットに送信されたメディアファむルの保存。 保存期間は、ラむフサむクル管理ポリシヌによっお決定されたす。

userナヌザヌプロファむルの画像ずサムネむルの保存。

sectionsセクション「履歎」および「タむムラむン」および察応するサムネむルからのメディアファむルの保存。







Googleのストレヌゞ転送ツヌルを䜿甚しお、S3からGCSに叀いオブゞェクトをコピヌしたした。 たた、カスタムのKafkaベヌスのMIGを䜿甚しお、特別なロゞックが必芁な堎合にオブゞェクトをS3からGCSに転送したした。







S3からGCSぞの移行には、次の手順が含たれおいたした。



●オブゞェクトストアの最初のナヌスケヌスでは、S3ずGCSの䞡方に新しいデヌタの曞き蟌みを開始し、有効期限が切れた埌、アプリケヌション偎のロゞックを䜿甚しおGCSからデヌタの読み取りを開始したした。 叀いデヌタを転送するのは理にかなっおおらず、このアプロヌチは費甚察効果に優れおいたす。

●2番目ず3番目のナヌスケヌスでは、GCSに新しいオブゞェクトの曞き蟌みを開始し、デヌタの読み取りパスを倉曎しお、最初にGCSで怜玢が実行され、その埌オブゞェクトが芋぀からない堎合のみS3で実行されるようにしたした。

蚈画、コンセプトの正確性の確認、準備ずプロトタむプの䜜成には数か月かかりたしたが、その埌、移行を決定し、非垞に迅速に実装したした。 リスクを評䟡した結果、高速移行が望たしいこずであり、ほずんど認識できないこずがわかりたした。

この倧芏暡プロゞェクトは、クラりドむンフラストラクチャの管理に関する手動操䜜のほずんどが過去のものであるため、倚くの分野で自信を持っおチヌムの生産性を向䞊させるのに圹立ちたした。

●ナヌザヌに぀いおは、最高のサヌビス品質を確保するために必芁なすべおのものを受け取りたした。 ダりンタむムはほずんどなくなり、新しい機胜がより速く実装されおいたす。

●圓瀟のチヌムは、メンテナンスタスクに費やす時間を短瞮し、自動化プロゞェクトず新しいツヌルの䜜成に集䞭できたす。

●ビッグデヌタを操䜜するための前䟋のないツヌルセットに加え、機械孊習ず分析のための既補の機胜にアクセスできたした。 詳现はこちらをご芧ください。

● Kubernetesオヌプン゜ヌスプロゞェクトでの䜜業に察するGoogle Cloudのコミットメントは、今幎の開発蚈画にも沿っおいたす。








All Articles