日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

部署Web集群

更新時(shí)間:

本文介紹如何使用Terraform部署Web集群。

前提條件

在開(kāi)始之前,請(qǐng)您確保完成以下操作:

背景信息

在部署一個(gè)網(wǎng)站或者應(yīng)用時(shí),需要部署一系列的節(jié)點(diǎn),SLB對(duì)各個(gè)節(jié)點(diǎn)分配請(qǐng)求,并根據(jù)訪問(wèn)數(shù)量或者資源使用的情況來(lái)自動(dòng)伸縮。本文介紹將如何使用Terraform部署一個(gè)這樣的Web集群。在本示例中,整個(gè)應(yīng)用部署在一個(gè)可用區(qū),并且只提供8080端口訪問(wèn)hello world網(wǎng)頁(yè)。

操作步驟

  1. 創(chuàng)建VPC網(wǎng)絡(luò)和交換機(jī)。

    1. 創(chuàng)建terraform.tf文件,輸入以下內(nèi)容,并保存在當(dāng)前的執(zhí)行目錄中。

      provider "alicloud" {
        region = "cn-beijing"
      }
      resource "alicloud_vpc" "vpc" {
        vpc_name   = "tf_test_foo"
        cidr_block = "172.16.0.0/12"
      }
      
      resource "alicloud_vswitch" "vsw" {
        vpc_id     = alicloud_vpc.vpc.id
        cidr_block = "172.16.0.0/21"
        zone_id    = "cn-beijing-b"
      }
    2. 運(yùn)行terraform apply開(kāi)始創(chuàng)建。

    3. 運(yùn)行terraform show查看已創(chuàng)建的VPC和vSwitch。

      您也可以登錄VPC控制臺(tái)查看VPC和vSwitch的屬性。

  2. 創(chuàng)建安全組,并將安全組作用于上一步創(chuàng)建的VPC中。

    1. terraform.tf文件中增加以下內(nèi)容。

      resource "alicloud_security_group" "default" {
        name   = "default"
        vpc_id = alicloud_vpc.vpc.id
      }
      
      resource "alicloud_security_group_rule" "allow_all_tcp" {
        type              = "ingress"
        ip_protocol       = "tcp"
        nic_type          = "intranet"
        policy            = "accept"
        port_range        = "1/65535"
        priority          = 1
        security_group_id = alicloud_security_group.default.id
        cidr_ip           = "0.0.0.0/0"
      }
    2. 運(yùn)行terraform apply開(kāi)始創(chuàng)建。

    3. 運(yùn)行terraform show查看已創(chuàng)建的安全組和安全組規(guī)則。

  3. 創(chuàng)建負(fù)載均衡實(shí)例,為其分配公網(wǎng)IP。在本示例中,為負(fù)載均衡實(shí)例配置了從前端80端口到后端8080端口的映射,并輸出公網(wǎng)IP用于后續(xù)測(cè)試。

    1. 創(chuàng)建slb.tf文件,并增加以下內(nèi)容。

      resource "alicloud_slb_load_balancer" "listener" {
        load_balancer_name   = "tf-example"
        internet_charge_type = "PayByTraffic"
        address_type         = "internet"
        instance_charge_type = "PayByCLCU"
      }
      
      resource "alicloud_slb_listener" "http" {
        load_balancer_id          = alicloud_slb_load_balancer.listener.id
        backend_port              = 8080
        frontend_port             = 80
        bandwidth                 = 10
        protocol                  = "http"
        sticky_session            = "on"
        sticky_session_type       = "insert"
        cookie                    = "testslblistenercookie"
        cookie_timeout            = 86400
        health_check              = "on"
        health_check_type         = "http"
        health_check_connect_port = 8080
      }
      
      output "slb_public_ip" {
        value = alicloud_slb_load_balancer.listener.address
      }
    2. 運(yùn)行terraform apply開(kāi)始創(chuàng)建。

    3. 運(yùn)行terraform show查看已創(chuàng)建的負(fù)載均衡實(shí)例。

  4. 創(chuàng)建彈性伸縮。

    在本示例中,將創(chuàng)建以下資源:

    • 伸縮組:在模板中指定伸縮最小為2,最大為10,并將伸縮組與新建的負(fù)載均衡實(shí)例綁定。由于伸縮組的配置要求SLB必須有相應(yīng)配置的監(jiān)聽(tīng)器,因此模板中用depends_on屬性指定了部署順序。

    • 伸縮組配置:在模板中指定ECS實(shí)例的具體配置。在初始化配置(user-data)中生成一個(gè)Hello World的網(wǎng)頁(yè),并在8080端口提供服務(wù)。為簡(jiǎn)化操作,本示例中會(huì)為ECS實(shí)例分配公網(wǎng)IP,并且設(shè)置force_delete=true用于后續(xù)刪除環(huán)境。

    • 伸縮規(guī)則:定義具體的伸縮規(guī)則。

    1. 創(chuàng)建ess.tf文件,并增加以下內(nèi)容。

      resource "alicloud_ess_scaling_group" "scaling" {
        min_size           = 2
        max_size           = 10
        scaling_group_name = "tf-scaling"
        vswitch_ids        = alicloud_vswitch.vsw.*.id
        loadbalancer_ids   = alicloud_slb_load_balancer.listener.*.id
        removal_policies   = ["OldestInstance", "NewestInstance"]
        depends_on         = ["alicloud_slb_listener.http"]
      }
      
      resource "alicloud_ess_scaling_configuration" "config" {
        scaling_group_id           = alicloud_ess_scaling_group.scaling.id
        image_id                   = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
        instance_type              = "ecs.n4.large"
        security_group_id          = alicloud_security_group.default.id
        active                     = true
        enable                     = true
        user_data                  = "#!/bin/bash\necho \"Hello, World\" > index.html\nnohup busybox httpd -f -p 8080&"
        internet_max_bandwidth_in  = 10
        internet_max_bandwidth_out = 10
        internet_charge_type       = "PayByTraffic"
        force_delete               = true
      
      }
      
      resource "alicloud_ess_scaling_rule" "rule" {
        scaling_group_id = alicloud_ess_scaling_group.scaling.id
        adjustment_type  = "TotalCapacity"
        adjustment_value = 2
        cooldown         = 60
      }
    2. 運(yùn)行terraform apply開(kāi)始創(chuàng)建。

      創(chuàng)建成功后,會(huì)輸出SLB的公網(wǎng)IP。

      等待大約兩分鐘,彈性伸縮將自動(dòng)創(chuàng)建ECS實(shí)例。

    3. 輸入命令curl http://<slb public ip>進(jìn)行驗(yàn)證。

      如果看到Hello, World,表示成功通過(guò)負(fù)載均衡實(shí)例訪問(wèn)ECS實(shí)例提供的網(wǎng)頁(yè)。

  5. 運(yùn)行terraform destroy刪除測(cè)試環(huán)境。經(jīng)確認(rèn)后,整個(gè)部署的環(huán)境將被刪除。

    使用Terraform可以便捷地刪除和重新部署一個(gè)環(huán)境。如果您想重新部署,運(yùn)行terraform apply即可。