操作
開発実装 #60
未完了開始日:
2024-02-12
期日:
2024-02-12 (約8ヶ月 遅れ)
進捗率:
0%
予定工数:
説明
ALB(Application Load Balancer) とは¶
- AWS が提供するロードバランサー
- アプリケーションレイヤーでの振り分けが可能
- SSL/TLS の暗号化/複号化
- AWS Cognito との連携(今回 Rails 側で連携スクリプトを実装したためお役御免にはなるが、将来的には...)
採用可否¶
- NginxコンテナがWebサーバーの役割を果たしてくれるが、果たしてELBは必要なのか
- ALBを利用することで、複数のNginxコンテナにトラフィックを均等に分散することができる。
- 正直Nginxコンテナを複数構築することはない。
- ALBは複数のアベイラビリティーゾーンにわたって可用性を提供する。
- 現状のシステムは高度な可用性は求められない。
- ALBを使用することで、SSL/TLSの終端を行うことができる。
- Nginxコンテナ上でSSL/TLSの導入は可能であるが、ALBでSSL/TLS機能を担ってくれた方が管理が簡素になる。
- セキュリティの向上
- Nginxコンテナをプライベートサブネット下に配置できる。
ALB採用の理由¶
ALB¶
- リクエストヘッダーやパスなどの情報に基づいてトラフィックをルーティングおよびバランシングできる。
- nginxコンテナに静的コンテンツを配置して、HTTPリクエストのパス次第でアプリサーバーを介さずにNginxサーバーからリクエストを返す、といった仕様が組める?
NLB¶
- 高速かつ効率的なロードバランシングが可能
- 高速性を求めていない。
- NLBは静的IPアドレスをサポート
- 外部クライアントやDNSレコードなどが常に同じIPアドレスに接続できる。
- 外部クライアントの連携はしない、DNSにRoute53を導入すればなんとかなる
Lunatic1998 さんが8ヶ月前に更新
ALB作成時に発生したエラー¶
- どうやらALBリソースを作成するには、二つ以上のサブネットが必要とのことです。
│ Error: creating application Load Balancer: ValidationError: At least two subnets in two different Availability Zones must be specified
│ status code: 400, request id: ec68e889-09fb-49a2-afc8-ade089ca01d7
│
│ with module.lb.aws_lb.alb,
│ on lb/main.tf line 1, in resource "aws_lb" "alb":
│ 1: resource "aws_lb" "alb" {
解決¶
- 正直ふたつもパブリックサブネットは不要と思っている。
- しかし一旦ダミー用のパブリックサブネットを作成することで解決。
terraform destroy
で削除できない¶
- deletion protectionを有効化していたため
╷
│ Error: deleting LB: OperationNotPermitted: Load balancer 'arn:aws:elasticloadbalancing:ap-northeast-1:887353572756:loadbalancer/app/alb/dd91466400d57dea' cannot be deleted because deletion protection is enabled
│ status code: 400, request id: ac9a5932-8883-4167-b0cf-7d5413cb34d1
操作