App Runner で Global LoadBalancer (勝手に命名)を構築!
背景
最近血圧が高いままの @___nix___ です。
さて、AWSサービスを使っていて、冗長化されたオンプレミスサーバーにロードバランシングしたいという要件があったりしませんか?
実は現在のAWS製品のロードバランサーでは構成を複雑にしないと実現できません。
これをクリアにするためには VPC を作成して VPN を張ったり、Transit Gateway を使ったり、或いは DirectConnect を使ったり... 荷が重いですよね。
それをサクッと解消してしまおうというのが今回の Global LoadBalancer (by Terraform)です。
概要
今回、利用するのが App Runner です。
AWS App Runner とは?
AWS App Runnerは、Amazon Web Services(AWS)が提供するマネージドサービスの1つで、コンテナ化されたアプリケーションを簡単かつ迅速にデプロイおよび実行することができます。
App Runnerは、DockerコンテナとAmazon Elastic Container Registry(ECR)またはDocker Hubのどちらかに格納されたコンテナイメージを使用してアプリケーションを実行します。アプリケーションのセットアップ、ロードバランシング、スケーリング、モニタリングなどの面倒なタスクをAWSが自動的に処理するため、アプリケーションのデプロイメントに必要な手順を最小限に抑えることができます。
また、App Runnerは、AWS CLI、AWS Management Console、またはAWS SDKを使用して簡単に操作できるため、DevOpsチームがコンテナ化されたアプリケーションのデプロイメントプロセスを迅速かつシンプルに設定することができます。
by ChatGPT.
さて、説明用の構成図です。
仕様
- フルマネージド
- ラウンドロビン(デフォルト)
- アクセスログ、エラーログは CloudWatchLogs で確認可能
手順
では早速構築していきましょう。
今回、GitHub に全てを上げてありますので以下のリポジトリを参照してください。
※ 但し、Docker が稼働していることが条件になっていますのでご注意ください。
1. リポジトリへアクセス
2. 意外に重要
画面右上の★スターをクリック
3. README に沿って実行
以上です!
実に簡単に構築が出来てしまいました。
完全マネージドサービスなのでスケーリングも自在です!
皆様も宜しければご活用くださいませ。
一言
今回は Round-Robin の nginx.conf を仕込んでありますが、重みを変えたり、Least-Connected や Ip-Hash の設定にしても良いかもしれませんね。
あとは App Runner ってこんな使い方できるんだ!という発見に繋がれば幸いです。
Discussion