Saya memiliki server web yang terhubung ke basis data internal melalui VPN. Ada 2 IP (primer dan sekunder) ke database dari server web. Bagaimana saya bisa mengatur file / etc / hosts saya sehingga jika IP primer tidak tersedia maka IP sekunder akan digunakan?
Apakah ini berfungsi untuk file host saya?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Mike T
sumber
sumber
Jawaban:
File host tidak menyediakan mekanisme seperti itu. Jika Anda mencantumkan dua IP untuk nama yang sama, hanya yang pertama yang akan digunakan. Jadi, tidak ada yang namanya IP primer dan sekunder.
Juga, file host tidak menangani URL. Itu hanya menangani nama-nama seperti yang disediakan dalam pertanyaan. URL berisi jalur dan protokol lengkap seperti
http://host/path/to/resource
.sumber
Anda tidak bisa memberikan ketahanan atau penyeimbangan muatan round robin melalui
/etc/hosts
file - itu tidak dirancang untuk tujuan itu.Sebagai gantinya , opsi Anda adalah ... (tanpa urutan tertentu)
sumber
/ etc / hosts tidak mendukung round robin tetapi Anda dapat menulis skrip bash sederhana untuk menggantikan entri yang ditandai dengan komentar #RoundRobin (atau tag lain yang ingin Anda gunakan, hanya mencerminkannya di baris grep di skrip) .
Script di atas mengambil output dari nslookup untuk sub.domain.com dan menyimpannya dalam sebuah array. Ini kemudian mencetak nilai paling atas ke $ baru dan mengambil nilai yang ada untuk tag #RoundRobin ditugaskan di / etc / hosts ... terakhir, ia melakukan penggantian sed
/ etc / hosts entri file akan terlihat seperti ini
Terakhir, tempatkan skrip ini di crontab root untuk menjalankan setiap jam atau lebih dan sekarang Anda akan memiliki / etc / host round-robin.
Ini sangat berguna jika Anda memiliki halaman kode yang menarik beberapa data dari API dan pencarian DNS untuk server API menyebabkan banyak waktu hang dalam eksekusi skrip halaman ... menghasilkan konsumsi CPU yang tinggi untuk apa yang sebaliknya tampaknya halaman sederhana. Untuk menghindari pencarian DNS yang mahal (terutama jika situs Anda melakukan ratusan kali per menit untuk lalu lintas yang padat), Anda harus menggunakan / etc / hosts untuk menyelesaikan FQDN dari server API jarak jauh. Ini secara dramatis akan mengurangi penggunaan CPU untuk menarik data API dan menghasilkan halaman.
sumber
Ya, itu akan berhasil.
Namun, mekanisme pencarian hanya melakukan daftar sampai menemukan kecocokan.
Jadi, sementara jawaban untuk pertanyaan yang ditulis adalah YA, itu akan menjadi tantangan. Tapi tidak ada yang bisa diatasi.
Coba ini: Masing-masing alamat IP tersebut benar-benar perlu memiliki nama yang berbeda.
sumber
Cara mudah untuk mewujudkan hal ini adalah dengan menggunakan layanan DNS publik, seperti AWS Route53. Anda dapat memasukkan beberapa alamat IP per catatan A dengan prioritas
abc.efg.datastore.com
Selama tidak ada sertifikat yang terlibat, ini berfungsi dan bahkan tidak bertentangan dengan norma atau praktik terbaik apa pun.
NSLookup atau kueri domain lainnya akan mengembalikan kedua alamat. Aplikasi Anda harus mampu menangani ini. Dan ya, domain tersebut harus terdaftar secara publik, bukan hanya nama host lokal.
sumber
A
catatan tidak memiliki bidang prioritas. Beberapa layanan DNS resmi memiliki bobot catatan, tetapi hal itu dilakukan secara probabilistik termasuk atau tidak termasuk catatan.Mudah diatur, ikuti instruksi:
yang seharusnya merespons dua catatan dengan RR-DNS jadi jika satu node dari daftar tidak aktif - aplikasi Anda akan terhubung ke yang lain
sumber