更新时间:2023-12-22 GMT+08:00

高可用虚拟IP VIP

应用场景

虚拟IP主要用在弹性云服务器的主备切换,达到高可用性HA(High Availability)的目的。当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。

操作步骤

  1. 配置网络。

    创建main.tf文件,输入以下内容,并保存在当前的执行目录中。

    resource "huaweicloud_vpc" "vpc_1" {
      name = var.vpc_name
      cidr = var.vpc_cidr
    }
    
    resource "huaweicloud_vpc_subnet" "subnet_1" {
      vpc_id      = huaweicloud_vpc.vpc_1.id
      name        = var.subnet_name
      cidr        = var.subnet_cidr
      gateway_ip  = var.subnet_gateway
      primary_dns = var.primary_dns
    }

  2. 创建两台ECS实例。

    在main.tf文件中增加以下内容。

    data "huaweicloud_availability_zones" "myaz" {}
    
    data "huaweicloud_compute_flavors" "myflavor" {
      availability_zone = data.huaweicloud_availability_zones.myaz.names[0]
      performance_type  = "normal"
      cpu_core_count    = 2
      memory_size       = 4
    }
    
    data "huaweicloud_images_image" "myimage" {
      name        = "Ubuntu 18.04 server 64bit"
      most_recent = true
    }
    
    data "huaweicloud_networking_secgroup" "mysecgroup" {
      name = "default"
    }
    
    resource "huaweicloud_compute_instance" "mycompute" {
      name               = "mycompute_${count.index}"
      image_id           = data.huaweicloud_images_image.myimage.id
      flavor_id          = data.huaweicloud_compute_flavors.myflavor.ids[0]
      availability_zone  = data.huaweicloud_availability_zones.myaz.names[0]
      security_group_ids = [data.huaweicloud_networking_secgroup.mysecgroup.id]
      network {
        uuid = huaweicloud_vpc_subnet.subnet_1.id
      }
      count = 2
    }

  3. 申请虚拟IP地址并绑定ECS服务器对应的端口。

    在main.tf文件中增加以下内容。

    resource "huaweicloud_networking_vip" "vip_1" {
      network_id = huaweicloud_vpc_subnet.subnet_1.id
    }
    
    # associate ports to the vip
    resource "huaweicloud_networking_vip_associate" "vip_associated" {
      vip_id   = huaweicloud_networking_vip.vip_1.id
      port_ids = [
        huaweicloud_compute_instance.mycompute[0].network.0.port,
        huaweicloud_compute_instance.mycompute[1].network.0.port
      ]
    }

  4. 配置变量。

    创建variables.tf文件,输入以下内容,并保存在当前的执行目录中。您可以根据实际情况修改变量值。

    variable "vpc_name" {
      default = "vpc-basic"
    }
    variable "vpc_cidr" {
      default = "172.16.0.0/16"
    }
    variable "subnet_name" {
      default = "subent-basic"
    }
    variable "subnet_cidr" {
      default = "172.16.10.0/24"
    }
    variable "subnet_gateway" {
      default = "172.16.10.1"
    }
    variable "primary_dns" {
      default = "100.125.1.250"
    }

  5. 创建资源。

    1. 运行 terraform init 初始化环境。
    2. 运行 terraform plan 查看资源。
    3. 确认资源无误后,运行 terraform apply 开始创建。
    4. 运行 terraform show 查看已创建的资源。