1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】Gateway Load Balancerについてのメモ ※CFnテンプレート付き

Posted at

1. はじめに

Amazon ELBといえばALBやNLBを連想する方が多いかと思いますが(CLBは流石にもういないかな)、それらとは別にGateway Load Balancer(GWLB)という種類のロードバランサーがあります。

ALBやNLBと違って、用途が大分限定されており、主にサードパーティ製のセキュリティ製品をAWSにマイグレーションする際に使用されます。

本記事では、Gateway Load Balancerに関して管理人が調査した内容をメモ代わりに記載していくものになります。

2. Gateway Load Balancerとは?

Gateway Load Balancerとは、2020年11月のRE:inventにて発表されたAWSの新しいロードバランサーです。

主にサードパーティ製のセキュリティ製品をAWSにマイグレーションする際に使用されます。

具体的には、サードパーティ製のセキュリティ製品をAWS上にデプロイする際、監視対象のサーバに対して、VPC PeeringやTransit Gatewayなどでネットワークをつないでルーティングしたり、NATして連携したりしていましたが、GWLBの登場によってそれら全ての手法をGWLBに代替することができます。

一言で言うと、クラウド上のセキュリティ製品との連携が楽になったというわけです。

[参照]

※以下の記事はGWLBとはなんぞやということがざっくりとまとめられています

3. 他のロードバランサーとの違い

他のロードバランサー(ALB,NLB)とのざっくりとした違いとしては、以下の通りとなります。

  • ALB
    • NW層:L7
    • HTTP,HTTPSに対応
  • NLB
    • NW層:L4
    • TCPに対応
  • GWLB
    • NW層:L3
    • Genevaに対応

GWLBはポート6081でGENEVEプロトコルを使用されます。
GENEVEとは簡単に言うとトラフィックをカプセル化する際に使用されるプロトコルです。
GWLBeが受け取ったプロトコルをこのGENEVEプロトコルがカプセル化してターゲットまで中継してくれるわけです。

4. ロードバランサーとしての理解

GWLBは従来のロードバランサーとしての考え方というよりはPrivateLinkの概念に近い存在です。
なので、そもそもPrivatelinkやゲートウェイ型エンドポイントの理解が無いとイメージが付きにくいです・・

というのも、先述の通り、GWLB自体はプロトコルを受け取りません。
GWLBエンドポイント(GWLBe)というVPCエンドポイントがプロトコルを受け取ります。
GENEVEプロトコルがGWLBeで受け取ったプロトコルを中継してくれるわけです。

なので、ロードバランサーというよりは、Privatelinkの概念の一つとして理解しておくと良いでしょう。

[参照]

PrivateLinkの概要については以下の記事がオススメです。

ゲートウェイ型エンドポイントの概要については以下の記事がオススメです。

5. GWLBの使用例

繰り返しにはなりますが、GWLBは主にサードパーティ製のセキュリティ製品をAWSにマイグレーションする際に使用されます。

AWSもその目的で開発しています。

なので、GWLBを経由してのWebサービスの構築だとかそういう用途には全く向いていません。
むしろ、GWLBの実態はただのゲートウェイ型VPCエンドポイントなので、そもそもHTTP(s)プロトコルは運んでくれない気がする・・・

なので、GWLBのリリースから1年以上経った今でも、誰でもできるような簡易的なハンズオン系の記事はありません。
(セキュリティ製品前提のサービスなので、どうしても個人で調達できるレベルではない)

実際にセキュリティ製品との連携方法等、GWLBの使用例をまとめてくださっている記事を以下にまとめます。
以下の記事を読んで、GWLBの使用イメージを固めて下さればと思います。

[参照]

クラスメソッドさんが以下の記事で、PaloAltoをベースとしたGWLBに関するハンズオン内容をまとめてくれていますので、一読しておくことをオススメします。

AWSの公式ドキュメントで、GWLBの使用方法があがっています。
※ 現状、この経路くらいでしかGWLBの使用用途はないです。

「AWSの基礎を学ぼう Gateway Load Balancer」というハンズオンセミナーに参加された方のブログです。
セミナーの資料を用いて、GWLBの使用方法について解説して下さっていて、GWLBの使用法についてとても分かりやすくまとめられているので、是非一読しておくことをオススメします。

6. CloudFormationテンプレート

CloudFormationでGWLBを構築する場合のテンプレートを以下に記載します。

Gateway Load Balancer

# ------------------------------------------------------------
# Gateway Load Balancer
# ------------------------------------------------------------
### GWLB ###
  GWLB:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: "GWLB"
      Type: gateway
      Subnets:
        - !Ref PrivateSubnet
      Tags:
      - Key: Name
        Value: "GWLB"
        
### Target Group(GWLB) ###
  GWLBTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      Name: "GWLB-TG"
      Port: 6081
      Protocol: GENEVE
      TargetGroupAttributes:
      - Key: deregistration_delay.timeout_seconds
        Value: 20
      VpcId: !Ref VPC
      HealthCheckPort: 80
      HealthCheckProtocol: TCP
      TargetType: instance
      Targets:
        - Id: !Ref EC2Web
      Tags:
      - Key: Name
        Value: "GWLB-TG"
        
### GWLB リスナー ###
  GWLBListener: 
    Type: "AWS::ElasticLoadBalancingV2::Listener"
    Properties: 
      DefaultActions: 
        - TargetGroupArn: !Ref GWLBTargetGroup
          Type: forward
      LoadBalancerArn: !Ref GWLB

EndPoint Service

# ------------------------------------------------------------
# EndPointService
# ------------------------------------------------------------
  VPCEndpointService:
    Type: AWS::EC2::VPCEndpointService
    Properties: 
      AcceptanceRequired: true
      GatewayLoadBalancerArns:
        - !Ref GWLB


# ------------------------------------------------------------
# Output Parameter
# ------------------------------------------------------------
Outputs:
  VPCEndpointService:
    Value: { "Fn::Sub": "com.amazonaws.vpce.${AWS::Region}.${VPCEndpointService}" }
    Export:
      Name: "VPCEndpointService"

EndPoint

# ------------------------------------------------------------
# EndPoint
# ------------------------------------------------------------
  GWLBe:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcId: !Ref VPC
      ServiceName: { "Fn::ImportValue": !Sub "VPCEndpointService" }
      VpcEndpointType: GatewayLoadBalancer
      SubnetIds:
       - !Ref SubnetId

7. 参考

GWLBで利用できるパートナー

・Aviatrix
・Check Point
・Cisco Systems
・ePlus Technology
・cPacket Networks
・Glasnostic
・Fortinet
・HashiCorp
・NETSCOUT
・Palo Alto Networks
・Radware
・Trend Micro
・Valtix

8. まとめ

単純にロードバランサーが一つ増えた的な感じで軽く考えていましたが、中身を突き詰めていくとそんな単純なものではないと気付かされました。

本記事はまだ記事として完成しているわけではなく、これからもGWLBについて調査を進めて、その結果を追記していこうと思います。

また、本記事について、情報が誤りがある場合は、是非コメント欄よりご指摘下さい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?