GLBとVPCピアリングを使用して、高可用性のEコマースウェブサイトを展開する
紹介
この記事では、グローバルロードバランサー(GLB)とVPCピアリングを使用して、DigitalOcean上に高可用性のeコマースウェブサイトをデプロイするプロセスについて説明します。フロントエンドにはNext.js、バックエンドにはNode.jsを使用して構築されたこのウェブサイトは、負荷分散と高可用性を備えたスケーラブルなインフラストラクチャを持ちます。
フランクフルトとサンフランシスコにGLBの背後に2つのドロップレットを使用し、シンガポールに高可用性のために設定されたMySQL管理のデータベースを置きます。このセットアップには、フロントエンドサーバーとデータベース間の安全な通信を可能にするためのVPCピアリングも含まれます。
ここに、複数のリージョンに展開されたサービスを持つウェブサイトのために、グローバルロードバランサー(GLB)をデプロイし、VPCピアリングを実装する方法を示すビデオがあります。
前提条件
始める前に、次のものを揃えていることを確認してください:
- DigitalOceanアカウント。
- クラウドネットワーキング、VPC、およびロードバランシングの基本知識。
- 高可用性のために、好みの別々の地域で作成された複数のドロップレット(仮想マシン)。
- お好みの地域において、高可用性のためにスタンバイノードを使用して設定された管理されたMySQLデータベース。
- Next.jsとNode.jsアプリケーションをデプロイする基本的な知識。
アーキテクチャダイアグラム
ステップ1 — ドロップレットを展開する
異なる地域のユーザーに対して冗長性を確保し、レイテンシを最小限に抑えるために、フランクフルトとサンフランシスコの地域にそれぞれ1つずつ、2つのドロップレットを展開しました。
ドロップレットを作成する
- ダッシュボードから、2つ以上のリージョンに2つのドロップレットを作成します。
- すべてのドロップレットは、均一なパフォーマンスを確保するために、CPU、RAM、およびストレージの仕様が同じでなければなりません。
必要なソフトウェアをインストールする
- 各ドロップレットにSSH接続し、アプリスタック(Node.jsおよびNext.js)に必要なソフトウェアをインストールします。
- ドロップレットにあなたのeコマースアプリがデプロイされていることを確認してください。これには、Gitリポジトリからコードを取得し、環境変数を設定し、PM2のようなプロセスマネージャーを使用してアプリを起動することが含まれます。
ステップ2 — 高可用性(HA)を持つMySQLマネージドデータベースを構成する
私たちのeコマースウェブサイトが障害中にも利用可能であることを保証するために、データベースが高可用性で設定されていることを確認する必要があります。
MySQL管理データベースを作成する
- 高可用性が有効な管理されたMySQLデータベースサービスを設定します。このサービスは自動的にフェイルオーバーとレプリケーションを処理します。
高可用性を有効にする
- データベース作成プロセス中に、冗長性(HA)およびスタンバイ構成を有効にします。
- さらに、別のアベイラビリティゾーンにRO(読み取り専用レプリカ)MySQLノードを構成して、全体的な地域が影響を受けた場合にそれをプライマリとして昇格させることができます。
セキュリティを設定する
- ファイアウォールルールを設定して、あなたのドロップレットからのみMySQLデータベースにアクセスできるようにします。
接続テスト
- アプリがMySQLデータベースに正常に読み書きできることを確認するために、両方のドロpletからデータベース接続をテストしてください。
ステップ3 — グローバルロードバランサー(GLB)を設定します
グローバルロードバランサー (GLB) は、トラフィックを複数の地域に均等に分配するために重要であり、世界の異なる部分からのユーザーに最良のパフォーマンスを提供します。
- DigitalOceanのダッシュボードにログインします。
- グローバルロードバランサーを作成する: ロードバランサーのセクションに移動し、新しいGLBを作成します。フランクフルトとサンフランシスコの2つのドロップレット間でトラフィックを分散するように設定してください。
- フロントエンドの設定: フロントエンドをポート80または443(HTTP/HTTPS用)でリッスンするように設定します。
- ヘルスチェック: GLBが健康なドロップレットにのみトラフィックをルーティングすることを確認するために、ヘルスチェックを有効にします。私たちのアプリケーションはポート3000で実行されているため、ヘルスチェックを同じポートでリッスンするように設定します。
- 負荷分散ルールを設定する: 最小接続数やラウンドロビン方式などの要因に基づいて、2つのドロップレット間の受信トラフィックをバランスさせるルールを定義します。
- DNS設定: ドメインをGLBのIPアドレスに向けるようにDNSレコードを設定します。
このステップの終わりまでに、あなたのGLBはアクティブになり、フランクフルトとサンフランシスコのドロップレットの間でトラフィックを分配しているはずです。
ステップ4 — DropletsとManaged DBの間にVPCピアリングを設定する
VPCピアリングは、パブリックIPの代わりにプライベートIPを使用することで、フロントエンドのドロップレットと管理されたデータベース間の安全な通信を可能にします。
VPCピアリングを作成する
- クラウドプロバイダーのダッシュボードからVPCセクションに移動し、ドロップレットのVPC(私たちの場合、フランクフルトとサンフランシスコ)と管理されたMySQLデータベース(シンガポール)との間にVPCピアリング接続を作成します。
ルーティングテーブルを更新する
- VPCピアリング接続が確立されると、ドロップレットとデータベースVPCの両方のルーティングテーブルを更新して、トラフィックがピアリング接続を通じてルートできるようにします。
ファイアウォール
- ドロップレットのファイアウォールを更新して、MySQLインスタンスへのアウトバウンドトラフィックを許可してください。
- 同様に、データベースの信頼できるソースセクションを設定して、ドロップレットからの受信接続を受け入れるようにします。
接続をテストする
- 両方のドロップレットから、VPCピアリングが正しく設定されていること、またフロントエンドとバックエンドの間でデータが安全に流れていることを確認するために、データベースへの接続をテストしてください。プライベートにDBに接続するには
telnetを使用できます。
ステップ 5 — E コマース アプリ スタック (Next.js + Node.js) をデプロイする
インフラが整ったので、ドロplets上にeコマースアプリを展開できます。
アプリケーションをクローンする
- 各ドロップレットにSSH接続し、eコマースアプリのリポジトリをクローンするか、アプリのコードをドロップレットにアップロードしてください。
依存関係をインストールする
- Node.js、npm(またはyarn)およびあなたのNext.jsとNode.jsアプリに必要な他の依存関係がインストールされていることを確認してください。
環境変数を設定する
- フロントエンドとバックエンドの両方の環境変数を設定します。これには、APIキーやデータベースの資格情報などが含まれる場合があります。
アプリケーションを起動する
- PM2や他のプロセスマネージャーを使って、Next.jsアプリ(フロントエンド)とNode.jsアプリ(バックエンド)の両方を起動します。
- アプリケーションがロードバランサーのDNS名を介してアクセス可能であることを確認してください。
アプリケーションの機能を確認する
- アプリケーションを各地域(フランクフルトとサンフランシスコ)でテストし、ユーザーがグローバルロードバランサーを介して正しくルーティングされていることを確認し、フロントエンドとバックエンドの両方のコンポーネントが期待通りに動作していることを検証します。
結論
この記事では、グローバルロードバランサーとVPCピアリングを使用して、eコマースウェブサイトを成功裏に展開しました。高可用性の管理されたMySQLデータベースや、異なるリージョンに複数のドロップレットを設定することで、クラウドサービスを活用し、グローバルユーザーベースに対する高可用性と低遅延を確保しました。フロントエンドのドロップレットとデータベース間のVPCピアリングにより、スケーラブルなインフラストラクチャを維持しながら通信を安全にしました。これらのステップを踏むことで、世界中に分散したeコマースアプリケーションのためのレジリエントで高性能なアーキテクチャを構築できます。

