Alamat IP virtual dengan ketersediaan tinggi (HaVip) menjaga alamat IP layanan Anda tetap tidak berubah selama proses failover antar instance ECS dalam zona yang sama.
Cara kerja
Kluster ketersediaan tinggi tipikal terdiri dari satu HaVip dan dua instance ECS dalam konfigurasi utama/sekunder:
Konfigurasi Keepalived: Asosiasikan HaVip dengan ECS1 dan ECS2, lalu instal Keepalived pada keduanya. Atur
virtual_ipaddresske alamat HaVip dan tetapkan nilaipriority—nilai prioritas yang lebih tinggi akan memenangkan pemilihan instans utama.Pemilihan instans utama: Keepalived membandingkan nilai
prioritymelalui VRRP dan memilih instans dengan prioritas lebih tinggi sebagai utama. Sistem memperbarui pemetaan HaVip, dan semua traffic yang ditujukan ke HaVip dialihkan ke ECS1.Failover: ECS1 mengirim heartbeat ke ECS2 dengan interval yang ditentukan oleh
advert_int. Jika ECS2 gagal menerima heartbeat dalam batas waktu timeout, Keepalived mempromosikan ECS2 menjadi instans utama. Sistem memperbarui pemetaan HaVip ke ECS2, dan semua traffic dialihkan sesuai—alamat IP layanan tetap tidak berubah.
Untuk mengaktifkan akses publik, asosiasikan HaVip dengan EIP. Traffic kemudian dirutekan melalui EIP untuk menyediakan layanan yang menghadap internet dengan ketersediaan tinggi.
Gunakan HaVip untuk failover
Asosiasikan HaVip dengan instance ECS atau elastic network interfaces (ENIs) dalam vSwitch yang sama. Dikombinasikan dengan Keepalived, hal ini menjaga alamat IP layanan Anda tetap tidak berubah selama failover.
Kuota: Login ke Konsol Pusat Kuota dan ajukan izin pembuatan HaVip. Nilai kuota 1 berarti pembuatan HaVip diaktifkan.
Versi IP: HaVip hanya mendukung IPv4.
Sumber daya terkait:
HaVip hanya dapat diasosiasikan dengan satu jenis resource dalam satu waktu. Untuk mengganti jenis, putuskan asosiasi resource saat ini terlebih dahulu.
Saat Anda mengasosiasikan HaVip dengan ENI, pastikan ENI tersebut telah disambungkan ke instance ECS.
Jika instance ECS atau ENI yang diasosiasikan dihapus, sistem secara otomatis memutus asosiasi HaVip dari resource tersebut.
Melepas ENI sekunder dari instance ECS tidak memengaruhi asosiasi HaVip ke ENI tersebut.
Konsol
Buat dan asosiasikan HaVip
Buka halaman Konsol VPC - HaVip. Pilih wilayah instance ECS Anda, lalu klik Create HaVip.
Pilih VPC dan vSwitch tempat instance ECS berada. Anda dapat menetapkan alamat IP privat secara otomatis dari blok CIDR vSwitch atau menentukan alamat IP yang tidak ditugaskan.
Instal Keepalived pada instance ECS utama dan cadangan, lalu jalankan
systemctl start keepaliveduntuk menjalankan Keepalived.Klik ID HaVip target. Di bagian Resources, klik Bind di sebelah kanan ECS Instances, lalu pilih instance ECS atau ENI yang ingin diasosiasikan.
Setelah asosiasi selesai, Anda dapat melihat status utama dan sekunder di kolom Associated Instance atau di bagian Resources pada halaman detail.
Verifikasi hasil:
Jalankan perintah berikut pada instans utama dan sekunder untuk membuat layanan uji web yang mengembalikan hasil berbeda.
Periksa penggunaan port dengan menjalankan perintah
netstat -an | grep 8000. Jika port 8000 sedang digunakan, Anda perlu memilih port lain.Instans utama:
echo "ECS 1" > index.html # Instans utama mengembalikan "ECS 1" python3 -m http.server 8000Instans sekunder:
echo "ECS 2" > index.html # Instans sekunder mengembalikan "ECS 2" python3 -m http.server 8000Dari instance ECS lain dalam VPC yang sama, menjalankan
curl <havip_private_ip>:8000mengembalikanECS 1. Setelah server utama berhenti, perintah tersebut mengembalikanECS 2.Pastikan grup keamanan instans utama dan sekunder mengizinkan traffic HTTP dari dalam VPC yang sama untuk mengakses port 8000.
Putuskan asosiasi resource
Klik ID HaVip target. Di bagian Resources, temukan instance ECS atau elastic network interface target dalam daftar resource Associated , lalu klik Delete Association.
Hapus HaVip
Sebelum menghapus HaVip, pastikan HaVip tidak diasosiasikan dengan instance ECS, ENI, atau EIP apa pun. Di kolom Actions untuk HaVip target, atau pada halaman detailnya, klik Delete.
API
Panggil CreateHaVip untuk membuat HaVip.
Panggil AssociateHaVip untuk mengasosiasikan HaVip dengan instance ECS atau ENI.
Panggil UnassociateHaVip untuk memutus asosiasi HaVip dari instance ECS atau ENI.
Panggil DeleteHaVip untuk menghapus HaVip.
Terraform
Resource: alicloud_havip, alicloud_havip_attachment, alicloud_instance, alicloud_security_group, alicloud_security_group_rule
# Tentukan wilayah tempat Anda ingin membuat HaVip.
provider "alicloud" {
region = "cn-hangzhou"
}
# Tentukan ID VPC.
variable "vpc_id" {
default = "vpc-bp1k******" # Ganti dengan ID VPC Anda yang sebenarnya.
}
# Tentukan ID vSwitch.
variable "vswitch_id" {
default = "vsw-bp1y******" # Ganti dengan ID vSwitch Anda yang sebenarnya.
}
# Tentukan tipe instans.
variable "instance_type" {
default = "ecs.e-c1m1.large"
}
# Tentukan ID image.
variable "image_id" {
default = "aliyun_3_x64_20G_alibase_20221102.vhd"
}
# Buat HaVip.
resource "alicloud_havip" "test_havip" {
ha_vip_name = "test_havip_name"
vswitch_id = var.vswitch_id
ip_address = "192.168.0.24" # Tentukan alamat IP untuk HaVip dari blok CIDR vSwitch. Jika tidak ditentukan, sistem akan menetapkannya.
}
# Buat grup keamanan.
resource "alicloud_security_group" "test_security_group" {
security_group_name = "test_security_group_name"
vpc_id = var.vpc_id
}
# Buat aturan grup keamanan. Anda perlu menyesuaikan protokol, sumber, dan port berdasarkan traffic aktual Anda.
resource "alicloud_security_group_rule" "allow_vpc_tcp" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "8000/8000"
priority = 1
security_group_id = alicloud_security_group.test_security_group.id
cidr_ip = "192.168.0.0/24"
}
# Buat server utama.
resource "alicloud_instance" "test_master_instance" {
instance_name = "test_master_instance_name"
vswitch_id = var.vswitch_id
instance_type = var.instance_type
image_id = var.image_id
system_disk_category = "cloud_essd"
security_groups = [alicloud_security_group.test_security_group.id]
user_data = base64encode(<<-EOT
#!/bin/sh
yum install keepalived -y
printf '! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER # Tetapkan sebagai instans utama.
interface eth0 # Antarmuka jaringan tempat alamat IP virtual diikat. Contoh ini menggunakan eth0.
virtual_router_id 51 # virtual_router_id kluster utama/sekunder. Kluster berbeda dalam VPC yang sama memerlukan nilai virtual_router_id berbeda.
nopreempt # Tetapkan ke mode non-preemptive.
priority 100 # Prioritas. Nilai lebih tinggi menunjukkan prioritas lebih tinggi. Contoh ini menetapkan prioritas ke 100 agar instans ini menjadi utama.
advert_int 1 # Interval pengiriman pesan heartbeat, dalam detik. Nilai kecil membuat konfigurasi rentan terhadap fluktuasi jaringan, yang dapat menyebabkan failover sering terjadi atau skenario split-brain sementara. Nilai besar dapat memperpanjang waktu failover setelah instans utama gagal.
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.0.25 # Alamat IP privat instans ini. Contoh ini menggunakan 192.168.0.25.
unicast_peer {
192.168.0.26 # Alamat IP privat instans peer. Contoh ini menggunakan 192.168.0.26. Jika Anda memiliki beberapa instance ECS sekunder, deklarasikan alamat IP setiap instans peer di baris baru. Jangan gunakan koma atau pemisah lainnya.
}
virtual_ipaddress {
192.168.0.24 # Alamat IP virtual. Atur ke alamat IP HaVip. Contoh ini menggunakan 192.168.0.24.
}
garp_master_delay 1 # Penundaan dalam detik sebelum memperbarui cache ARP setelah failover ke instans ini.
garp_master_refresh 5 # Interval pengiriman pesan ARP, dalam detik.
track_interface {
eth0 # Antarmuka jaringan tempat alamat IP virtual diikat. Contoh ini menggunakan eth0.
}
}' > /etc/keepalived/keepalived.conf
systemctl start keepalived
EOT
) # Tentukan skrip inisialisasi untuk server utama guna menginstal Keepalived.
private_ip = "192.168.0.25" # Tentukan alamat IP privat server utama.
instance_charge_type = "PostPaid" # Atur metode penagihan ke bayar sesuai penggunaan.
spot_strategy = "SpotWithPriceLimit" # Atur sebagai spot instans dengan batas harga.
}
# Buat server sekunder.
resource "alicloud_instance" "test_backup_instance" {
instance_name = "test_backup_instance_name"
vswitch_id = var.vswitch_id
instance_type = var.instance_type
image_id = var.image_id
system_disk_category = "cloud_essd"
security_groups = [alicloud_security_group.test_security_group.id]
user_data = base64encode(<<-EOT
#!/bin/sh
yum install keepalived -y
printf '! Configuration File for keepalived
vrrp_instance VI_1 {
state BACKUP # Tetapkan sebagai instans sekunder.
interface eth0 # Antarmuka jaringan tempat alamat IP virtual diikat. Contoh ini menggunakan eth0.
virtual_router_id 51 # virtual_router_id kluster utama/sekunder. Kluster berbeda dalam VPC yang sama memerlukan nilai virtual_router_id berbeda.
nopreempt # Tetapkan ke mode non-preemptive.
priority 10 # Prioritas. Nilai lebih tinggi menunjukkan prioritas lebih tinggi. Contoh ini menetapkan prioritas ke 10 agar instans ini menjadi sekunder.
advert_int 1 # Interval pengiriman pesan heartbeat, dalam detik. Nilai kecil membuat konfigurasi rentan terhadap fluktuasi jaringan, yang dapat menyebabkan failover sering terjadi atau skenario split-brain sementara. Nilai besar dapat memperpanjang waktu failover setelah instans utama gagal.
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.0.26 # Alamat IP privat instans ini. Contoh ini menggunakan 192.168.0.26.
unicast_peer {
192.168.0.25 # Alamat IP privat instans peer. Contoh ini menggunakan 192.168.0.25. Jika Anda memiliki beberapa instance ECS sekunder, deklarasikan alamat IP setiap instans peer di baris baru. Jangan gunakan koma atau pemisah lainnya.
}
virtual_ipaddress {
192.168.0.24 # Alamat IP virtual. Atur ke alamat IP HaVip. Contoh ini menggunakan 192.168.0.24.
}
garp_master_delay 1 # Penundaan dalam detik sebelum memperbarui cache ARP setelah failover ke instans ini.
garp_master_refresh 5 # Interval pengiriman pesan ARP, dalam detik.
track_interface {
eth0 # Antarmuka jaringan tempat alamat IP virtual diikat. Contoh ini menggunakan eth0.
}
}' > /etc/keepalived/keepalived.conf
systemctl start keepalived
EOT
) # Tentukan skrip inisialisasi untuk server sekunder guna menginstal Keepalived.
private_ip = "192.168.0.26" # Tentukan alamat IP privat server sekunder.
instance_charge_type = "PostPaid" # Atur metode penagihan ke bayar sesuai penggunaan.
spot_strategy = "SpotWithPriceLimit" # Atur sebagai spot instans dengan batas harga.
}
# Asosiasikan dengan server utama.
resource "alicloud_havip_attachment" "test_havip_attachment" {
ha_vip_id = alicloud_havip.test_havip.id
instance_id = alicloud_instance.test_master_instance.id # Tentukan ID instans yang akan diasosiasikan dengan HaVip.
}
# Asosiasikan dengan server sekunder.
resource "alicloud_havip_attachment" "test_havip_attachment_new" {
ha_vip_id = alicloud_havip.test_havip.id
instance_id = alicloud_instance.test_backup_instance.id # Tentukan ID instans yang akan diasosiasikan dengan HaVip.
}Asosiasikan EIP untuk akses publik
HaVip adalah alamat IP privat dalam vSwitch. Untuk mengaktifkan akses internet, asosiasikan Elastic IP Address (EIP) dengan HaVip. Perhatikan bahwa EIP dikenai biaya.
1. EIP harus berada di wilayah yang sama dengan HaVip dan tersedia.
2. Saat instance ECS mengakses internet melalui EIP yang diasosiasikan dengan HaVip, alamat IP sumber paket outbound adalah alamat IP privat HaVip, bukan alamat IP privat instance ECS.
Konsol
Asosiasikan atau putuskan asosiasi EIP
Sebelum mengasosiasikan EIP, buat terlebih dahulu di Konsol EIP atau klik Create EIP pada halaman asosiasi.
Di kolom Actions untuk HaVip target, klik Associate EIP atau Disassociate EIP.
API
Sebelum mengasosiasikan EIP, panggil AllocateEipAddress untuk membuatnya.
Panggil AssociateEipAddress untuk mengasosiasikan EIP dengan HaVip.
Panggil UnassociateEipAddress untuk memutus asosiasi EIP dari HaVip.
Terraform
Resource: alicloud_eip_address, alicloud_eip_association
# Tentukan wilayah HaVip.
provider "alicloud" {
region = "cn-hangzhou"
}
# Tentukan ID HaVip.
variable "havip_id" {
default = "havip-8vb0******" # Ganti dengan ID HaVip Anda yang sebenarnya.
}
# Buat EIP.
resource "alicloud_eip_address" "test_eip" {
address_name = "test_eip_name"
isp = "BGP"
netmode = "public"
bandwidth = "1"
payment_type = "PayAsYouGo"
}
# Asosiasikan EIP.
resource "alicloud_eip_association" "test_eip_havip_association" {
allocation_id = alicloud_eip_address.test_eip.id
instance_type = "HAVIP"
instance_id = var.havip_id # Tentukan ID HaVip.
}Informasi tambahan
Penagihan
HaVip berada dalam pratinjau publik dan gratis. Tidak ada SLA yang disediakan selama masa pratinjau publik.
Resource terkait seperti instance ECS dan EIP ditagih sesuai aturan harga masing-masing.
Wilayah yang didukung
Area | Wilayah |
Asia Pasifik - Tiongkok | Tiongkok (Hangzhou), Tiongkok (Shanghai), , Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Heyuan), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Zhongwei), Tiongkok (Hong Kong), Tiongkok (Wuhan - Local Region), dan Tiongkok (Fuzhou - Local Region, decommissioning) |
Asia Pasifik - Lainnya | Jepang (Tokyo), Korea Selatan (Seoul), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Filipina (Manila), Thailand (Bangkok), dan Malaysia (Johor) |
Eropa & Amerika | Jerman (Frankfurt), Inggris (London), Prancis (Paris), AS (Silicon Valley), AS (Virginia), dan Meksiko |
Timur Tengah | UEA (Dubai) dan Arab Saudi (Riyadh, partner region) |
Kuota
HaVip berada dalam pratinjau publik. Untuk mengaktifkannya, login ke Konsol Pusat Kuota dan ajukan permohonan.
Nama kuota | Deskripsi | Batas default | Dapat disesuaikan |
Tidak ada | Jenis jaringan yang mendukung HaVip. | VPC | Tidak |
Jumlah maksimum HaVip per instance ECS. | 5 | ||
Jumlah maksimum EIP per HaVip. | 1 | ||
Jumlah maksimum instance ECS atau elastic network interfaces (ENIs) yang dapat diasosiasikan dengan HaVip secara bersamaan. | 10 1. HaVip dapat diasosiasikan hingga 10 instance ECS atau 10 ENI, tetapi tidak keduanya secara bersamaan. 2. HaVip hanya dapat diasosiasikan dengan instance ECS atau ENI yang berada dalam vSwitch yang sama dengan HaVip. | ||
Apakah HaVip mendukung komunikasi broadcast dan multicast. | Tidak didukung HaVip hanya mendukung komunikasi unicast. Jika Anda menggunakan perangkat lunak pihak ketiga seperti Keepalived untuk mengimplementasikan ketersediaan tinggi, Anda harus mengubah mode komunikasi ke unicast dalam file konfigurasi. | ||
Jumlah maksimum HaVip yang dapat Anda buat per akun. | 50 | ||
Jumlah maksimum HaVip yang dapat Anda buat dalam satu VPC. | 50 | ||
vpc_quota_havip_custom_route_entry | Jumlah maksimum entri rute dalam tabel rute dengan tujuan ke HaVip. | 5 | Ya. Untuk meminta peningkatan kuota, kunjungi Halaman Manajemen Kuota atau Pusat Kuota. |