Failover sederhana untuk situs web (pemantauan + DNS dinamis)

Pada artikel ini saya ingin menunjukkan betapa mudah dan gratisnya Anda dapat membuat skema failover untuk situs web (atau layanan Internet lainnya) menggunakan kombinasi pemantauan okerr dan layanan DNS dinamis. Artinya, jika ada masalah dengan situs utama (mulai dari masalah “PHP Error” pada halaman, kurangnya ruang, atau hanya sejumlah kecil pesanan yang mencurigakan dalam kasus toko online), pengunjung baru akan diarahkan ke server kedua (ketiga, dan seterusnya) lebih lanjut) yang diketahui berfungsi, atau ke halaman "Maaf", di mana mereka akan dengan sopan menjelaskan bahwa "ada masalah, kami sudah mengetahui dan sedang memperbaikinya, kami akan segera memperbaikinya” (dan dalam hal ini Anda sebenarnya sudah mengetahuinya dan dapat memperbaikinya).

Untuk hidup dengan failover atau tanpa?

Sampai suatu masalah terjadi, tidak banyak perbedaan. Tetapi ketika itu terjadi, hal berikut sering terjadi tanpa failover: Anda mencoba mencari tahu dengan cepat apa masalahnya, itu tidak berhasil (cadangan tidak diterapkan, perangkat lunak karena alasan tertentu tidak berfungsi sebagaimana mestinya dari dokumentasi , dll.), tetapi tidak ada waktu, tidak ada server - situs-situs tergeletak di sekitar, klien menelepon, semua orang gelisah, Anda mencoba memperbaikinya dengan kasar dan kotor "dengan selotip", lalu entah bagaimana sepertinya mulai dengan kruk dan nyawa. Anda berpikir bahwa di waktu luang Anda, Anda perlu memahaminya lebih detail dan mengulangi semuanya dengan indah, tetapi tidak ada yang lebih permanen daripada sementara.

Sekarang, bagaimana ini terjadi dalam versi cantik dengan filer:

  • Sebuah kesalahan terjadi
  • Kesalahan terdeteksi secara otomatis
  • Peringatan dikirim
  • Beralih ke salah satu server cadangan ditransfer
  • Dengan tenang dan tanpa panik, masalah diselesaikan, diperbaiki, dan server kembali beroperasi.

Skema ini tentu saja mungkin juga memiliki masalah tersendiri, namun tetap saja skemanya linier, setiap tahapannya sederhana dan yang terpenting dapat di-debug secara terpisah, sehingga kemungkinan kegagalan skema ini jauh lebih rendah, dan semua tindakan dapat diotomatisasi dan dilakukan dengan cepat (tidak seperti tugas menemukan dan memperbaiki omong kosong epik yang tidak diketahui). Pesawat Anda telah mendarat di negara yang jauh, Anda menghidupkan ponsel dan melihat pemberitahuan di telegram bahwa server mogok, tetapi semuanya baik-baik saja, server cadangan telah diaktifkan, Anda dapat melanjutkan perjalanan, Anda tidak perlu untuk terbang kembali atau memperbaikinya melalui SSH dari kafe terdekat dengan WiFi. Anda akan mengetahuinya jika lebih nyaman.

Masa depan sudah ada di sini!

Sebelumnya, masalah utama yang membuat failover sering kali menjadi solusi yang tidak dapat diterima adalah besarnya biaya yang harus dikeluarkan. Atau perlu membeli perangkat keras yang mahal (dan mengundang spesialis yang lebih mahal lagi). Atau pertanian kolektif sesuatu yang rumit menurut panduan (saya bahkan menemukan opsi di mana dua server juga terhubung dengan kabel modem nol, dan mereka mengirimkan detak jantung melaluinya, sehingga pada saat yang tepat server cadangan mengenalinya dan mengambil alih kontrol). Sekarang ada cara yang lebih mudah dan gratis. Jika Anda memiliki situs web dengan kucing, tidak ada alasan bagi Anda untuk tidak menerapkan failover untuk situs tersebut!

Selain itu, untuk skema failover Anda memerlukan server lain (dan mungkin lebih dari satu) dan sebelumnya ini merupakan biaya yang besar, sekarang Anda bisa mendapatkan VDS dengan harga yang murah.

Situs paling andal dengan kucing

Untuk menggambarkan secara praktis solusi dengan okerr + dns dinamis, kami meluncurkan situs web kami dengan kucing cat.okerr.com. Kami benci kucing, jadi jumlahnya tidak banyak di sana. Ada tiga situs secara total, masing-masing terlihat kira-kira sama (semuanya dalam template yang sama), tetapi dengan anak kucing yang berbeda agar mudah dibedakan, dan masing-masing situs menulis informasi teknis untuk melihat cara kerja failover. Halaman diperbarui sendiri setiap 1 menit sekali, namun Anda selalu dapat mengklik muat ulang di browser.

Di informasi teknis ada baris “status=OK”. Terkadang server berpura-pura bermasalah dan menulis status=ERR. Server utama “tampaknya mogok” pada 20 menit setiap jam (0:20, 1:20, 2:20,…). Server cadangan dalam 40 menit. Server terakhir (server "maaf") selalu berjalan. Pada 0 menit setiap jam, server utama dan cadangan “dipulihkan”.

Failover sederhana untuk situs web (pemantauan + DNS dinamis)

Jika Anda membuka situs dan membiarkannya di tab, Anda akan melihat bahwa situs tersebut tidak pernah mogok (walaupun setiap server secara berkala menyimulasikan masalah), dan jika ada masalah dengan server, situs tersebut hanya “berjalan” di antara server langsung. Gambar, nama dan alamat server serta perannya akan berubah. Terkadang Anda dapat menangkap momen ketika status = ERR (masalah sudah ada, tetapi seluruh skema failover belum berfungsi), tetapi pembaruan berikutnya akan menampilkan halaman dari situs yang berfungsi.

Failover pada okerr + DNS dinamis

Mari kita lihat cara kerjanya. Tugas filer adalah memastikan bahwa alamat cat.okerr.com selalu menunjuk ke alamat IP server yang berfungsi.
Di belakang setiap server yang menghosting situs kucing kami di okerr terdapat indikator yang memeriksa statusnya satu menit sekali.

Failover sederhana untuk situs web (pemantauan + DNS dinamis)

Pada tangkapan layar ini kita melihat bagaimana situs cat.okerr.com diperiksa dari server alpha.okerr.com. Halaman tersebut seharusnya berisi status=OK, dan seperti yang kita lihat di atas, status indikator kita sekarang OK. Ketika server “rusak”, akan terjadi ERR. (Ini hanya salah satu contoh indikator, okerr itu monitoring, jadi anda bisa memasangkan indikator apa saja, misalnya mengecek ruang kosong di disk, jumlah order baru di database, bahkan indikator logika, misalnya , pada malam hari akan ada beberapa kriteria kesalahan, dan pada siang hari lainnya) .

Dalam pengaturan proyek kami membuat skema failover dengan indikator berikut:

Failover sederhana untuk situs web (pemantauan + DNS dinamis)

Skema ini memiliki tiga indikator (tiga server), berbeda prioritasnya. Server utama untuk situs ini adalah charlie, jika tidak berfungsi (tidak akan memiliki "status=OK" atau tidak tersedia), maka bravo dan dalam kasus terakhir - alpha. Sisi kanan halaman menunjukkan status data DNS di server yang berbeda.

Bagi mereka yang memperhatikan bahwa nama cat.he.okerr.com digunakan: Kami menggunakan skema yang sedikit lebih rumit. Daripada hanya mengubah catatan DNS cat.okerr.com, kami mengubah cat.he.okerr.com (pada penyedia DNS Dinamis Badai Listrik), dan cat.okerr.com adalah CNAME (alias), yang tidak berubah, selalu menunjuk ke cat.he.okerr.com. Kami lebih menyukai Hurricane sebagai DNS dinamis, dan memiliki kunci untuk mengelola satu entri (daripada seluruh zona), menurut kami ini lebih aman. Anda juga tidak perlu menentukan kata sandi kunci di okerr untuk mengelola seluruh domain, tetapi hanya untuk subdomain atau record.

Dari jatuh hingga bangkit

Langkah demi langkah cara kerja skema ini:

  1. Terjadi masalah (simulasi) di server
  2. Sensor okerr memeriksa status setiap server satu menit sekali dan melaporkan ke server proyek utama di okerr
  3. Indikator server terkait berubah dari OK menjadi ERR
  4. Ketika status indikator berubah, failover dihitung ulang, dan alamat mana yang perlu disetel dihitung (jika perlu. Misalnya, jika server utama berfungsi, dan pada saat yang sama server cadangan mati, tidak ada perubahan yang akan terjadi. dibuat)
  5. Alamat ini dilaporkan ke layanan dns dinamis. Setelah menyelesaikan tahap ini, Anda akan melihat status “disinkronkan” di sebelah kanan.
  6. Segera (detik) catatan akan mencapai server DNS domain Anda (untuk situs cat adalah ns1-ns5.he.net).
  7. Mulai saat ini, beberapa pengguna sudah berada di server langsung yang baru. Namun belum semua server DNS di dunia telah memperbarui catatannya, dan catatan lama mungkin masih disimpan dalam cache di suatu tempat. Anda dapat melihat bagaimana data di server DNS publik “menari”, menunjukkan nilai baru atau lama. Jika Anda memperbarui halaman konfigurasi failover, operator sendiri akan meminta data baru dari server DNS.
  8. Setelah data stabil, catatan cache lama membusuk di mana-mana - semua 100% permintaan masuk ke server baru.

Untuk mempercepat tahap 7 (sering kali paling lama), TTL data DNS dinamis harus disetel serendah mungkin. Biasanya layanan mengizinkan interval 90-120 detik. Ini adalah kompromi yang sepenuhnya masuk akal.

tambahan

Semua ini dapat dikonfigurasi di malam hari (jika Anda sudah memiliki server cadangan). Layanan DNS okerr dan dinamis gratis. Untuk mendapatkan lebih banyak cek di okerr dan periode verifikasi yang lebih singkat, Anda perlu menyelesaikan pelatihan (dari halaman profil Anda). Setelah selesai, level segera meningkat (20 indikator per jam + 1 cepat, 10 menit). Dan jika jumlahnya sedikit, tulislah ke [email dilindungi], kemungkinan besar bisa meningkat (selama ini peluang selalu ada, saya tidak pernah menolak, malah saya sendiri yang menawarkan). Hanya saja pada awalnya saya tidak ingin menjanjikan segalanya kepada semua orang, saya tidak yakin apakah saya memiliki kapasitas yang cukup untuk menepati janji saya. Namun sejauh ini penggunanya masih sedikit, sehingga tidak ada masalah dalam peningkatan limit.

Apa yang bisa dilakukan okerr secara umum - lihat situs webnya presentasi dari. Secara umum, ini adalah pemantauan (zabbix dari cloud), dan filer adalah fungsi tambahan yang bagus. Anda juga dapat mengakses demo dari situsnya tanpa registrasi.

Ketika status indikator berubah, pemberitahuan dikirim melalui email atau Telegram. (Kami melihat apa yang terjadi dan menyadari bahwa telegram tampaknya menjadi utusan yang paling dapat diandalkan. Terima kasih kepada RKN untuk stress testnya!) Dengan okerr dikonfigurasi dengan benar, pemberitahuan apa pun dapat berupa sinyal “hentikan semuanya, kami harus memperbaikinya!” , atau “lampu padam!” Seharusnya tidak ada peringatan tambahan dari okerra (jika ada, peringatan tersebut perlu dikonfigurasi secara berbeda). Misalnya, untuk situs kucing kami, server alfa adalah yang terakhir dan tidak pernah memalsukan kesalahan. Jika dia berbaring, kita perlu mengetahuinya. Namun server lain terus-menerus berpura-pura melakukan kesalahan, oleh karena itu, agar tidak menerima peringatan beberapa kali dalam satu jam, indikator tersebut berstatus “senyap”.

Masuk akal juga untuk membuat server maaf (di hosting termurah mana pun), yang akan memuat halaman permintaan maaf Anda (jika semua server utama dan cadangan mati) atau akan mengarahkan Anda ke halaman status di okerr (misalnya, milik kami cp.okerr.com/status/okerr) atau halaman status.io.

Sumber: www.habr.com

Tambah komentar