高可用虚拟IP VIP
应用场景
虚拟IP主要用在弹性云服务器的主备切换,达到高可用性HA(High Availability)的目的。当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。
操作步骤
- 配置网络。
创建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 }
- 创建两台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 }
- 申请虚拟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 ] }
- 配置变量。
创建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" }
- 创建资源。
- 运行 terraform init 初始化环境。
- 运行 terraform plan 查看资源。
- 确认资源无误后,运行 terraform apply 开始创建。
- 运行 terraform show 查看已创建的资源。