SLBの作成

AlibabaCloudの基本プロダクトサービスであるSLBの作成方法を解説します。

1. SLB

  SLB(Server Load Balancer)はアプリケーションや Web サイトのトラフィックを分散させるサービスです。

  SLB は、仮想サービスアドレスを設定することによって、追加の ECS インスタンスを高性能で可用性の高いアプリケーションサービスプールに仮想化し、クライアントからのリクエストを、 転送ルールに従ってサーバープール内のECS インスタンスに分配します。

  また、SLB は、追加されたバックエンドサーバーの状態をチェックし、異常状態の ECS インスタンスを自動的に分離します。そうすることで SPOF (単一障害点) 問題を除去し、アプリケ ーションの全体的なサービス性能を向上させます。 それに加え、Alibaba Anti-DDoS と組み合わせることで、SLB は DDoS 攻撃を防御することができます。


2. コンポーネント

  SLBは以下のコンポーネントが含まれています。

図 1

またServer Load Balancer (SLB) は、 ECS インスタンスの単一障害点 (SPOF)、アクティブゾーンの障害、などを防ぐ役割がありますので、SLBを組み合わせることでサービスの高可用性を実現することができます。

参考:高可用性のベストプラクティス


3. SLBのTerraformについて

  本題、SLB作成に移ります。まずは以下の構成図通り、簡単なソースを作ってみます。 図 2

resource "alicloud_slb" "SLB_instance" {
  name = "ELB_instance_for_terraform"
  vswitch_id = "${var.vswitch}"
  internet = true
}
resource "alicloud_slb_listener" "http" {
  load_balancer_id = "${alicloud_slb.SLB_instance.id}"
  backend_port = 80
  frontend_port = 80
  health_check_connect_port = 80
  bandwidth = -1
  protocol = "http"
  sticky_session = "on"
  sticky_session_type = "insert"
  cookie = "testslblistenercookie"
  cookie_timeout = 86400
}

resource "alicloud_slb_attachment" "default" {
  load_balancer_id = "${alicloud_slb.SLB_instance.id}"
  instance_ids = [
    "${alicloud_instance.app.*.id}",
  ]
}

output "slb_ip" {
  value = "${alicloud_slb.SLB_instance.address}"
}

SLBを作成する時はalicloud_slbalicloud_slb_listeneralicloud_slb_attachmentの3つの組み合わせが必要になります。

alicloud_slb

alicloud_slbはSLBを利用開始するために必要なパラメータです。

実行することにより、以下の属性情報が出力されます。

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/slb.html

alicloud_slb_listener

alicloud_slb_listenerはSLBのリスナーリソースを管理するパラメータです。

SLB_ListenerはSLBの心臓部でもあり、他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/slb_listener.html

alicloud_slb_attachment

alicloud_slb_attachmentはバックエンド・サーバーグループ(ECSインスタンス)をSLBに追加するパラメータです。


以下にSLBの実際の構築サンプルを入れていますので、こちらも参照してみてください。

example: SLBの構築と設定