Klaster Vapor-native
Dalam deployment Vapor-native, Vapor menjalankan database OVN sendiri. Satu central adalah deployment lengkap; klaster yang terdiri dari tiga node atau lebih akan tetap berfungsi normal saat salah satu host mengalami gangguan.
Halaman ini membahas cara membentuk klaster tersebut dan menambahkan host ke dalamnya. Proses aktivasi itu sendiri dibahas dalam Mengaktifkan Jaringan Virtual.
Berapa Banyak Central yang Dibutuhkan
Database OVN direplikasi menggunakan konsensus RAFT, yang memerlukan persetujuan mayoritas anggota sebelum menerima operasi tulis.
| Central | Toleransi Gangguan | Catatan |
|---|---|---|
| 1 | Tidak ada | Berfungsi penuh. Kehilangan host akan menghentikan deployment |
| 2 | Tidak ada | Lebih berisiko daripada satu. Gangguan pada salah satu host akan menghilangkan kuorum mayoritas |
| 3 | 1 kegagalan | Klaster minimum yang bermanfaat |
| 5 | 2 kegagalan | Untuk deployment yang lebih besar |
Gunakan jumlah ganjil. Menambahkan central kedua ke deployment single-central membuat ketersediaan (availability) lebih buruk, bukan lebih baik, hingga Anda menambahkan central ketiga.
Host yang hanya menjalankan beban kerja (workload) tidak perlu dijadikan central. Deployment dengan tiga central dan dua puluh chassis adalah hal yang umum.
Membentuk Klaster
Tepat satu central memulai klaster; setiap central lainnya bergabung ke central yang telah memulainya.
Central pertama
Dalam wizard aktivasi, pilih Vapor-native, peran Central, dan Bootstrap a new cluster. Terapkan (Apply).
Setelah itu, kartu status OVN akan melaporkan host ini sebagai penyimpan database, dan halaman klaster menampilkannya sebagai satu-satunya anggota.
Menambahkan central
Setiap central tambahan mengautentikasi ke central yang sudah ada menggunakan token bergabung (join token). Pada central yang aktif, gunakan Mint join token pada kartu status OVN. Token hanya ditampilkan satu kali — hanya intisari (digest) yang disimpan, sehingga tidak dapat dipulihkan setelahnya. Secara default, token berlaku selama satu jam dan untuk satu kali penggunaan.
Pada host yang ditambahkan, jalankan wizard dengan Vapor-native, peran Central, Join an existing cluster, lalu:
- masukkan alamat central yang sudah ada (port 7770 diasumsikan jika Anda tidak menentukannya),
- tempelkan token,
- tekan Exchange token with central.
Vapor menghubungi central tersebut, dan setelah berhasil akan mengisi alamat database serta alamat klaster yang akan dituju. Anda tidak perlu menyalinnya secara manual.
Kemudian lanjutkan melalui preflight dan terapkan (Apply).
Mengapa pertukaran token terjadi di host, bukan di browser Anda
Browser Anda dilayani oleh satu host Vapor dan central berada di host lain, biasanya dengan sertifikat yang ditandatangani sendiri (self-signed). Host yang bergabung melakukan pertukaran token itu sendiri, yang juga menjadi alasan mengapa opsi Skip TLS verification for this exchange disediakan — proses bergabung pertama biasanya membutuhkannya. Nonaktifkan opsi ini setelah central menyajikan sertifikat yang dipercayai oleh host yang bergabung.
Menambahkan chassis
Sebuah chassis hanya memerlukan alamat database, bukan keanggotaan klaster RAFT. Anda dapat memasukkannya secara langsung, atau menggunakan token bergabung dengan cara yang sama agar alamat tersebut diisi secara otomatis untuk Anda.
Mengganti Database yang Ada
Membentuk atau bergabung dengan klaster akan mengganti file database OVN pada host ini. Jika host sudah memilikinya, Vapor akan menolak sampai Anda mencentang Allow this host's OVN databases to be replaced.
Perhatikan hal ini secara serius pada host yang telah berjalan standalone: database northbound-nya memuat seluruh konfigurasi logis — setiap switch, router, ACL, dan load balancer. Vapor akan memindahkan file yang ada ke samping alih-alih menghapusnya, dengan akhiran stempel waktu (timestamp) di /var/lib/ovn, tetapi buat cadangannya sebelum Anda melanjutkan.
Host yang sudah menjadi anggota klaster yang sehat tidak memerlukan opsi ini, dan penerapan ulang (re-applying) tidak akan mengganggu databasenya.
Cara Pengalamatan Klaster
Setelah klaster terbentuk, Vapor menyimpan alamat setiap anggota, bukan hanya satu:
tcp:10.0.0.1:6641,tcp:10.0.0.2:6641,tcp:10.0.0.3:6641Hal ini disengaja. Klien OVSDB hanya berbicara kepada leader yang aktif saat itu, sehingga satu alamat tersimpan akan berhenti berfungsi begitu kepemimpinan berpindah ke anggota lain — padahal justru peristiwa inilah yang dirancang untuk dapat diatasi oleh sebuah klaster. Dengan mencantumkan setiap anggota, klien dapat menemukan leader-nya sendiri.
Menerapkan ulang aktivasi pada salah satu anggota akan menyegarkan daftar tersebut, yang merupakan cara bagaimana host yang baru ditambahkan muncul dalam konfigurasi host lainnya.
Memeriksa Kesehatan Klaster
Tampilan klaster melaporkan setiap database secara terpisah, dengan peran server lokal, term saat ini, dan daftar keanggotaan penuh. Klaster tiga node yang sehat menampilkan tiga anggota untuk kedua database dan satu leader.
Kepemimpinan yang berpindah antar-anggota adalah hal yang wajar. Ini terjadi saat host me-restart dan setelah hilangnya kontak sementara, dan deployment tetap dapat digunakan selama proses tersebut.
Dua hal yang bukan merupakan kerusakan (fault):
- Nol port tunnel pada host tanpa port logis. OVN membangun tunnel sesuai kebutuhan (on demand).
- Anggota melaporkan status
follower. Hanya satu anggota yang menjadi leader pada satu waktu.
Port yang Harus Diizinkan antar-Central
| Port | Tujuan |
|---|---|
| 6641 | Database Northbound, klien |
| 6642 | Database Southbound, klien (chassis terhubung ke sini) |
| 6643 | Replikasi klaster Northbound |
| 6644 | Replikasi klaster Southbound |
| 6081/UDP | Tunnel Geneve antar-chassis |
Node central membutuhkan semua port ini terbuka di antara satu sama lain. Chassis membutuhkan port 6642 ke central dan Geneve ke chassis lainnya.
Bertahan Setelah Reboot
Vapor menulis parameter klaster di tempat unit service OVN membacanya dan membiarkan systemd mengelola proses database, sehingga node central dapat pulih kembali setelah reboot tanpa intervensi manual. Jika Vapor tidak dapat mengaktifkan unit-unit tersebut, hal itu akan dicatat dalam log: database sedang berjalan, tetapi tidak akan menyala kembali secara otomatis.