Studi kasusInfrastruktur & keandalan
Dua pusat data yang berjalan seperti satu sistem
Dua lokasi fisik dijalankan sebagai satu kumpulan layanan bersama, sehingga hilangnya satu komponen tidak lagi langsung menjadi gangguan bagi pengguna.
- Peran
- System Administrator & DevOps Engineer
- Periode
- 2024 — sekarang
- Status
- Berjalan
- Dipakai
Konteks dan masalah
Infrastruktur perusahaan tumbuh tanpa pola yang seragam: sebagian layanan berjalan di satu fasilitas, sebagian di fasilitas lain, dan penyimpanan data tidak dirancang untuk saling menopang. Akibatnya satu perangkat yang rusak berpotensi menjadi gangguan layanan, sementara menambah kapasitas berarti menambah risiko baru. Pekerjaan ini menyusun ulang keduanya menjadi satu kesatuan yang mampu kehilangan satu komponen tanpa menghentikan layanan.
Yang menjadi kendala
- Dua fasilitas fisik berjalan dengan cara yang berbeda, sehingga tidak ada satu gambaran utuh tentang kondisi layanan.
- Data tidak punya salinan yang tersebar. Bila satu perangkat penyimpanan rusak, pemulihan bergantung pada cadangan, bukan pada sistem yang masih hidup.
- Layanan penunjuk alamat internal menjadi titik tunggal. Bila satu unit bermasalah, seluruh layanan yang saling memanggil ikut terhambat.
- Lebih dari seribu akun pengguna bergantung pada kumpulan server web yang harus tetap hidup saat komponen lain diperbaiki.
Batasan yang tidak bisa diubah
- Dua lokasi fisik tetap dipakai. Menggabungkan semuanya ke satu tempat bukan pilihan.
- Layanan yang sedang berjalan tidak boleh berhenti untuk perubahan rancangan.
- Perangkat keras yang sudah ada harus dimanfaatkan, termasuk instalasi fisik di rak oleh pihak ketiga.
- Tidak ada tambahan jumlah orang, sementara pekerjaan operasi harian tetap berjalan bersamaan.
Peran dan tanggung jawab saya
- Merancang dan membangun dua klaster virtualisasi yang saling menopang, masing-masing berpasangan dengan penyimpanan terdistribusi di lokasinya sendiri.
- Menyiapkan penyimpanan objek terdistribusi untuk keperluan internal dan sekumpulan basis data terklaster.
- Mengganti layanan penunjuk alamat internal menjadi susunan satu unit utama dengan dua salinan pendamping.
- Menata jalur masuk trafik dan perlindungan di tepi jaringan, termasuk pengelolaan sertifikat dan penyaringan permintaan.
- Menangani eskalasi tingkat tiga, termasuk instalasi perangkat keras fisik di pusat data.
Cara saya mengerjakannya
- 01
Menyamakan pola lebih dulu, baru menambah
Kedua lokasi disusun dengan pola yang sama supaya satu cara kerja berlaku di mana pun, dan tidak ada orang yang harus menghafal dua prosedur berbeda untuk pekerjaan yang sama.
- 02
Menyebar data pada banyak perangkat sekaligus
Penyimpanan dirancang agar data berada di beberapa unit dan tetap dapat dibaca ketika satu unit hilang, bukan dipusatkan pada perangkat yang paling cepat.
- 03
Menghilangkan titik tunggal pada penunjuk alamat
Satu unit utama bekerja bersama dua salinan pendamping, sehingga kegagalan pada satu unit tidak menghentikan penerjemahan nama internal.
- 04
Memisahkan tepi jaringan dari inti
Trafik masuk melewati perlindungan di tepi sebelum menyentuh layanan internal, dan lalu lintas antar lokasi berjalan melalui terowongan terenkripsi.
- 05
Menguji dengan melepas satu komponen
Keandalan dibuktikan dengan benar-benar mematikan atau melepas satu komponen saat layanan berjalan, bukan dengan asumsi bahwa rancangannya sudah tahan.
Dua lokasi fisik adalah kenyataan yang tidak bisa dihindari, jadi pertanyaannya berubah: bukan bagaimana menghindari dua lokasi, melainkan bagaimana keduanya bisa saling menutupi ketika salah satu bermasalah. Rancangan sebelumnya memperlakukan tiap lokasi sebagai pulau. Yang dikerjakan di sini adalah membuat keduanya berbagi pola yang sama, sehingga kegagalan satu komponen berhenti menjadi urusan seluruh pengguna.
Menyamakan pola sebelum menambah kapasitas
Menambah perangkat lebih dulu akan memperbanyak cara kerja yang berbeda, bukan mengurangi masalah. Karena itu kedua lokasi disusun dengan susunan yang sama lebih dulu: peran yang jelas untuk setiap kelompok mesin, cara pemeliharaan yang sama, dan cara penamaan yang sama. Setelah itu barulah kapasitas ditambah, dan penambahan itu tidak lagi memaksa siapa pun mempelajari prosedur baru.
Menyebar data agar satu kerusakan tidak berakibat besar
Bagian yang paling menentukan keandalan adalah penyimpanan. Data ditempatkan pada banyak perangkat sekaligus, bukan pada satu perangkat tercepat, sehingga hilangnya satu unit tidak menghentikan layanan dan perbaikan bisa dikerjakan sambil sistem tetap berjalan. Pilihan ini memakan kapasitas, dan itu diterima karena kapasitas yang tidak terpakai lebih murah daripada layanan yang berhenti.
Menjaga layanan penunjuk alamat tetap hidup
Layanan yang menerjemahkan nama internal adalah hal kecil yang mengganggu hampir semua hal lain ketika mati. Susunannya diubah menjadi satu unit utama dengan dua salinan pendamping, sehingga penerjemahan nama tetap berjalan meski satu unit hilang. Hal yang sama berlaku pada jalur masuk trafik dan perlindungan di tepi: dipusatkan, tetapi tidak bergantung pada satu titik.
Ringkasan hasil
Tersedia 56 TB kapasitas penyimpanan mentah pada dua klaster di dua pusat data. Sebanyak 12 server web produksi melayani lebih dari 1.000 akun pengguna aktif dengan nol henti layanan kritis, dan layanan penunjuk alamat internal berjalan sebagai satu unit utama dengan dua salinan pendamping. Di luar angka, penanganan eskalasi tingkat tiga membuat gangguan lapangan tidak lagi menumpuk di satu orang.
Hasil
Tersedia 56 TB kapasitas penyimpanan mentah yang tersebar pada dua klaster di dua pusat data.
Kapasitas yang terpasang dan dapat dipakai, bukan rencana pengadaan.
terverifikasi
12 server web produksi melayani lebih dari 1.000 akun pengguna aktif dengan nol henti layanan kritis.
Sebagian berjalan di atas perangkat keras langsung, sebagian di atas mesin virtual.
terverifikasi
Layanan penunjuk alamat internal berjalan sebagai satu unit utama dengan dua salinan pendamping.
terverifikasi
Dengan penanganan eskalasi tingkat tiga, gangguan lapangan bisa ditangani langsung di lokasi dan tidak lagi menumpuk di satu orang.
Detail teknis
Bagian ini hanya diperlukan bila Anda ingin menilai sisi teknisnya. Isi di atas sudah cukup untuk memahami hasilnya.
Buka detail implementasi3 keputusan
Dua klaster Proxmox VE high availability, masing-masing berpasangan dengan klaster penyimpanan terdistribusi Ceph di lokasinya sendiri, dengan total 56 TB kapasitas mentah. MinIO menyediakan penyimpanan objek yang kompatibel S3, ditambah basis data PostgreSQL terklaster. Penunjuk alamat internal memakai PowerDNS dengan satu primary dan dua replika. Trafik internal melewati HAProxy dan Nginx Proxy Manager, tepi diamankan Cloudflare, akses antar lokasi lewat WireGuard, dan surat berjalan pada Mailcow dengan relay SMTP WHM/Exim.
- Membangun dua klaster penyimpanan terdistribusi terpisah, bukan satu klaster tunggal yang membentang dua lokasi.
- Satu klaster tunggal akan lebih sederhana dilihat dari satu layar, tetapi setiap operasi tulis ikut bergantung pada mutu tautan antar lokasi dan menambah waktu tunggu bagi pengguna. Yang dikorbankan adalah kemudahan pengelolaan dan satu gambar terpadu tentang kapasitas.
- Menyebar salinan data di dalam penyimpanan terdistribusi meski memakan kapasitas.
- Salinan internal membuat kehilangan satu unit penyimpanan menjadi peristiwa yang tidak terasa oleh pengguna, tetapi sebagian kapasitas mentah yang tersedia dipakai untuk salinan itu dan tidak pernah bisa dipakai menyimpan data.
- Menjalankan virtualisasi dan penyimpanan dengan perangkat lunak yang berjalan di atas perangkat keras standar, bukan solusi terkelola satu vendor.
- Pendekatan ini menjaga kendali atas data dan menghindari ketergantungan pada satu pemasok, dengan konsekuensi pembaruan, pemantauan, dan pemulihan menjadi tanggung jawab tim sendiri.
Bagian yang paling tidak terlihat dari pekerjaan ini adalah instalasi fisik dan penanganan eskalasi di pusat data. Bagian itulah yang paling banyak mengajarkan di mana rancangan gagal, karena masalahnya terlihat langsung tanpa perantara dasbor. Yang akan dilakukan berbeda: menyiapkan prosedur pemulihan satu komponen secara tertulis lebih awal, karena menuliskannya setelah kejadian selalu lebih lambat.
Yang saya pelajari
- Keandalan lebih ditentukan oleh berapa banyak komponen yang boleh hilang, bukan oleh seberapa cepat satu komponen bekerja.
- Dua lokasi dengan pola yang sama lebih mudah dirawat daripada dua lokasi dengan solusi terbaik masing-masing.
- Pekerjaan eskalasi tingkat tiga memberi gambaran nyata tentang titik lemah rancangan, dan itu hanya terlihat bila ikut menangani gangguan langsung.