Konfigurasi NTP yang tepat untuk beberapa server

9

Saya memiliki sekitar 20 server Linux di jaringan kecil dan saya perlu jam mereka saling berdekatan (misalnya dalam 20msec). Saya sudah mulai dengan masing-masing dari mereka disinkronkan ke europe.pool.ntp.org dan pekerjaan selesai.

Sekarang saya punya dua pertanyaan:

  1. Apakah saya beban yang nyata ke kolam renang? Yaitu apakah itu membuat terlihat perbedaan ke kolam renang jika aku memukul dari 20 server atau dari 2?
  2. Jika itu membuat perbedaan apa setup / konfigurasi yang akan membuat subnet saya disinkronkan dan kolam di bawah beban ringan? Ada pedoman untuk jaringan besar ( http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101 ) tetapi saya tidak menemukan satu pun untuk jaringan kecil.
ndemou
sumber
1
Biasanya Anda harus memiliki satu atau dua server waktu internal tempat Anda menyinkronkan jaringan internal Anda. Dua server internal Anda dapat memiliki peerhubungan. Lihat misalnya ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki
Terima kasih atas komentar dan tautan Marki. Mengenai tautan itu mencatat bahwa itu untuk "jaringan besar" yang tentunya bukan kasus saya. Mengenai saran Anda: Saya tidak berpikir satu server waktu internal adalah ide yang bagus (satu titik kegagalan) tetapi 2 sepertinya ide yang bagus. Bisakah Anda menjelaskan apa itu hubungan teman sebaya (atau memberikan tautan)?
ndemou
Harus juga dicatat bahwa saya jelas bukan ahli NTP - jauh dari itu :-)
ndemou
Tidak ada salahnya jika Anda sedikit Google tentang apa peer. Perhatikan bahwa situs ini tidak melayani apa pun di piring perak ketika orang tidak melakukan penelitian sama sekali.
Marki
Jangan salah paham, saya mengerjakan pekerjaan rumah saya, tetapi NTP adalah salah satu mata pelajaran ini di mana sebagian besar dokumentasi terlalu banyak ditelan (ini adalah ntp.conf - gunakan saja) atau terlalu dalam (50 halaman teori operasi untuk dibaca sebelum Anda dapat mulai memahami fakta-fakta dasar).
ndemou

Jawaban:

8
  1. Apakah saya beban yang nyata ke kolam renang? Yaitu apakah ada bedanya dengan kolam jika saya memukul dari 20 server atau dari 2?

Mengingat bahwa kumpulan selalu membutuhkan server selama bertahun-tahun (lihat [1]) saya akan mengatakan bahwa meskipun 2 atau 20 server tidak benar-benar membuat perbedaan, Anda harus selalu ingat bahwa Anda tidak sendirian. Jadi lebih baik Anda berpikir tentang katakanlah 1000 admin dalam hal ini kita sedang berbicara 2000 atau 20000 server dan ini tidak membuat perbedaan.

  1. Jika itu membuat perbedaan apa setup / konfigurasi yang akan membuat subnet saya disinkronkan dan kolam di bawah beban ringan?

Anda harus menyinkronkan dua [2] server di jaringan Anda dengan kumpulan (sebut saja Server NTP Primer ) dan kemudian menyinkronkan semua server lain ke keduanya. Metode ini juga memiliki keuntungan bahwa waktu antara semua server Anda akan lebih cocok (dalam waktu kurang dari 1 msec). Ini sesuai dengan praktik terbaik IETF .

1) Konfigurasi untuk Server NTP Primer

Ganti serverdan restrictbaris ntp [d] .conf Anda dengan yang berikut dan simpan sisanya ke default distribusi Anda [3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      The LAN IP of the _other_ Primary NTP server 
server 0.europe.pool.ntp.org 
server 1.europe.pool.ntp.org 
server 2.europe.pool.ntp.org 
server 3.europe.pool.ntp.org 
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Harap perhatikan bahwa konfigurasi ini juga memungkinkan host dari seluruh Internet untuk menanyakan waktu host Anda melalui permintaan NTP. Gunakan firewall Anda jika Anda tidak mau. Dalam contoh saya 10.11.12.1 dan 10.11.12.2 adalah IP dari Server NTP Primer (mereka memiliki dua kartu jaringan yang satu menghadap ke internet publik dan satu subnet 10.11.12.x lokal). Setiap Server NTP Primer memiliki yang lain dinyatakan sebagai rekan (peer pada dasarnya berarti server dan klien - Anda menggunakan host lain sebagai sumber waktu dan host lain menggunakan Anda sebagai sumber waktu juga). Jadi sesuaikan IP pada baris pertama sehingga konfigurasi dari masing-masing Server NTP Primer menunjuk ke yang lain sebagai peer. Lihat [4] tentang pilihan saya untuk menggunakan 4 server.

2) Konfigurasi untuk semua server lain

2A) Jika Anda memiliki dua antarmuka jaringan

Anda lebih baik menggunakan antarmuka ke-2 untuk membuat subnet lokal (misalnya 10.11.12.0/24) dan menggunakannya untuk permintaan NTP. Dalam hal ini garis pembatas bisa lebih ketat. Jadi, ganti lagi baris serverdan restrictntp [d] .conf Anda dengan yang berikut dan simpan sisanya ke default distribusi Anda [3]:

restrict -4 default ignore
restrict -6 default ignore
restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

2B) Jika Anda tidak memiliki dua antarmuka jaringan

Anda harus menggunakan garis pembatasan di bawah ini (dan baca catatan tentang menggunakan firewall Anda untuk memblokir akses ke server NTP Anda di atas). Jadi, ganti lagi baris serverdan restrictntp [d] .conf Anda dengan yang berikut dan simpan sisanya ke default distribusi Anda [3]:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

Catatan

[1] Dari 2006 hingga 2012 mereka terus-menerus meminta lebih banyak server untuk bergabung: permintaan 2006 , yang 2009 dan yang 2012 . Periksa www.pool.ntp.org untuk pembaruan tentang status saat ini.

[2] Dua Server NTP Primer hanya disarankan sebagai cara sederhana untuk memiliki redundansi tanpa pengaturan Ketersediaan Tinggi yang rumit. Anda dapat memilih 3 atau 4 untuk alasan lain (baca lagi praktik terbaik IETF )

[3] Dalam praktiknya dan apa pun distribusi Anda, satu-satunya hal lain yang perlu Anda sertakan dalam konfigurasi ntpd adalah baris yang mendefinisikan direktori untuk meletakkan file drift dan nama untuknya - misalnya driftfile /var/lib/ntp/ntp.drift. Saya sudah menguji solusi saya di CentOS, Debian dan Ubuntu. Saya kira itu bekerja di sebagian besar distro lainnya.

[4] Saya telah mengonfigurasi 4 server kumpulan mengikuti praktik terbaik . Mengkonfigurasi lebih dari 4 server diterima secara teknis tetapi Anda akan menambah beban ke kumpulan NTP untuk mendapatkan ketersediaan yang dipertanyakan jadi jangan lakukan itu. Dalam praktik terbaik saya melihat bahwa "dimulai dengan ntp-4.2.6, arahan 'pool' akan memunculkan asosiasi" cukup "untuk memberikan layanan waktu yang tangguh" jadi jika Anda menggunakan .pool. alamat seperti yang saya lakukan di sini dan ntp> = 4.2.6 jumlah garis server yang tepat mungkin tidak masalah.

Kata-kata kasar Oh! Saya benci NTP (kecuali saya suka itu berfungsi). Dokumentasi resmi penuh dengan informasi usang dan mereka memiliki "bagaimana cara menggunakannya?" informasi bercampur dengan detail ilmiah tentang bagian dalam. Dan saya juga benci bagaimana restrict 127.0.0.1sebenarnya artinyaallow everything for 127.0.0.1


Riwayat pembaruan

Saya telah menghapus iburstopsi dari konfigurasi Server NTP Lokal karena keramahan mereka ke kolam renang masih bisa diperdebatkan. (lihat komentar). Menghapusnya hanya menambah beberapa menit waktu tunggu untuk sinkronisasi pertama .


Kredit

Komentar dan jawaban dari pengguna SF Marki dan Sven memberikan titik awal yang baik untuk jawaban ini. Terima kasih untuk keduanya.

ndemou
sumber
1
+1 dari saya. Saya menjalankan server kumpulan, dan saya tidak bisa terlalu menekankan kebenaran postingan ini, kecuali itu iburstadalah parameter yang mengganggu untuk digunakan pada server publik, jadi tolong jangan (meskipun tidak seperti yang menyebalkan burst). Admin server kolam renang membantu Anda tanpa mengetahui siapa Anda, dan tanpa imbalan apa pun untuk diri mereka sendiri, semata-mata demi berjalannya internet dengan lebih baik. Jika Anda, dengan bekerja lebih keras, dapat membuat hidup mereka lebih mudah, Anda berhutang kepada mereka untuk melakukannya.
MadHatter
Terima kasih Madatter. Mengenai iburst, saya pikir itu OK untuk server "selalu aktif" yang khas. Apakah Anda memiliki tautan untuk mendukung saran Anda untuk tidak menggunakan opsi ini? (Saya telah memeriksa www.pool.ntp.org/en/use.html dan juga googled selama 10 menit tetapi tidak menemukan apa pun yang meyakinkan)
ndemou
Saya dengan senang hati akan membagikan statistik lalu lintas saya; sampel cepat menunjukkan bahwa host yang tidak terkonfigurasi, yaitu host yang mentransmisikan lebih dari satu menit, merupakan sekitar 45% dari klien saya tetapi bertanggung jawab atas sekitar 75% dari lalu lintas. Itu sebagian besar akan dari server yang menggunakan burst, tetapi bahkan iburstmengatakan (dari ntpdhalaman manual) " dengan opsi ini sejumlah pesan dipertukarkan untuk mengatur data dan mengatur jam di sekitar 10-an ". Menggunakan iburstkata " mengatur jam saya dengan cepat lebih penting daripada menjaga beban pada server Anda rendah ", dan itu tidak sopan.
MadHatter
Anda benar tentang "voli pesan" tetapi sejauh yang saya mengerti, burst ini hanya akan terjadi selama startup daemon NTP dan (mungkin) jika pool server tidak dapat dijangkau untuk sementara waktu (saya dari awal). Berikut ini adalah abstrak dari halaman Arch wiki NTPd: "Opsi iburst direkomendasikan, dan mengirimkan kumpulan paket hanya jika tidak dapat memperoleh koneksi dengan upaya pertama. Opsi burst selalu melakukan ini, bahkan pada upaya pertama, dan seharusnya tidak pernah digunakan tanpa izin eksplisit dan dapat mengakibatkan daftar hitam ".
ndemou
Anda benar, iburstjauh lebih tidak disukai burst. Maksud saya adalah bahwa ketika Anda menggunakan sumber daya orang lain secara gratis, ada argumen bahwa Anda harus membungkuk ke belakang untuk menjadi perhatian; sekadar tidak menjadi orang yang tidak peduli secara aktif mungkin tidak cukup. Saya setuju ini dikatakan sebagai praktik terbaik, tetapi dokumen-dokumen itu tidak memperhitungkan apakah server hulu yang Anda selaraskan adalah bagian dari perusahaan Anda atau tidak; mereka mendikte praktik terbaik teknis (yang, saya setuju, adalah menggunakan iburst) daripada praktik terbaik sosial .
MadHatter
6

Pendekatan biasa untuk ini adalah dengan menggunakan pengaturan berjenjang - Anda menyinkronkan satu atau dua server di jaringan Anda dengan kolam dan kemudian menggunakannya sebagai sumber waktu lokal Anda. Level ini disebut strata dalam istilah NTP.

Juga, pikirkan: Jika Anda melakukan ini seperti Anda deskripsikan, itu tidak akan benar-benar terlihat, tetapi jika 1000 situs ukuran Anda mulai ini, Anda berakhir dengan 20k sebagian besar permintaan yang tidak perlu dan pada titik tertentu, itu akan terlihat.

Baca http://en.wikipedia.org/wiki/Network_Time_Protocol

Sven
sumber
Tetapi pertimbangkan sudut pandang alternatif - dua puluh lebih klien di atas jutaan klien yang ada hampir tidak ada apa-apanya.
200_success
2
Seperti yang dia katakan, jika semua orang mulai berpikir seperti itu ...
Marki
Tetapi pada titik apa Anda berhenti? Pikirkan semua perangkat Linksys-kelas yang kapal di dikonfigurasikan untuk digunakan pool.ntp.org. Tentunya lalu lintas DNS melebihi lalu lintas NTP. Apakah Anda juga harus melakukan cache DNS secara lokal? Bahkan lalu lintas DNS mungkin sangat kecil dibandingkan dengan sisa konsumsi bandwidth Anda.
200_success
@ 200_success: Ini tidak layak untuk diperdebatkan, tetapi sebagian besar perangkat "kelas Linksys" ini memang men-cache lalu lintas DNS lokal, dan mereka menanyakan DNS ISP mereka, yang juga menyimpan cache ...
Sven
1
Jika Linksys mengirim perangkat yang disinkronkan ntp.pool.orgmereka melanggar persyaratan kumpulan ; jika mereka telah melakukannya dengan benar dengan melamar zona vendor (lihat tautan) maka mereka juga akan diharapkan untuk berkontribusi pada proyek kumpulan secara proporsional dengan beban mereka (sekali lagi, lihat tautan).
MadHatter