Rumah  >  Artikel  >  Tutorial sistem  >  Cara menggunakan konfigurasi autoritatif pembahagian OctoDNS dan DNS

Cara menggunakan konfigurasi autoritatif pembahagian OctoDNS dan DNS

王林
王林ke hadapan
2024-01-02 20:30:05393semak imbas
Pengenalan Membina sistem yang mantap memerlukan reka bentuk untuk kegagalan. Sebagai Jurutera Kebolehpercayaan Tapak (SRE) di GitHub, kami sentiasa mencari untuk membantu mengurangkan isu melalui lebihan, dan hari ini kami akan membincangkan kerja baru-baru ini yang telah kami lakukan untuk menyokong anda mencari pelayan kami melalui DNS.

Pembekal DNS yang besar mempunyai pelbagai tahap redundansi terbina dalam perkhidmatan mereka dan apabila isu berlaku yang menyebabkan gangguan, langkah boleh diambil untuk mengurangkan kesannya. Salah satu pilihan terbaik ialah membahagikan perkhidmatan berwibawa rantau anda di kalangan berbilang penyedia perkhidmatan. Mendayakan kuasa pemisahan adalah semudah mengkonfigurasi dua atau lebih set pelayan nama untuk zon anda di pendaftar domain anda dan permintaan DNS akan dibahagikan merentas senarai. Walau bagaimanapun, anda mesti menyimpan rekod dalam kawasan ini disegerakkan merentas berbilang pembekal dan, bergantung pada situasi, ini boleh menjadi sama ada rumit untuk disediakan atau proses manual sepenuhnya.

$ dig NS github.com. @a.gtld-servers.net.
...
;; QUESTION SECTION:
;github.com. IN NS
;; AUTHORITY SECTION:
github.com. 172800 IN NS ns4.p16.dynect.net.
github.com. 172800 IN NS ns-520.awsdns-01.net.
github.com. 172800 IN NS ns1.p16.dynect.net.
github.com. 172800 IN NS ns3.p16.dynect.net.
github.com. 172800 IN NS ns-421.awsdns-52.com.
github.com. 172800 IN NS ns-1283.awsdns-32.org.
github.com. 172800 IN NS ns2.p16.dynect.net.
github.com. 172800 IN NS ns-1707.awsdns-21.co.uk.
...

Pertanyaan di atas meminta pelayan nama TLD untuk rekod NS github.com. Ia mengembalikan nilai yang kami konfigurasikan dalam pendaftar domain, dalam kes ini terdapat dua pembekal perkhidmatan DNS dengan empat rekod setiap satu. Jika salah satu penyedia mengalami gangguan, ada harapan bahawa yang lain masih boleh melayani permintaan tersebut. Kami menyegerakkan rekod di mana-mana dan boleh mengubah suainya dengan selamat tanpa perlu risau tentang data basi atau keadaan yang salah.

Bahagian terakhir mengkonfigurasi kuasa berpecah sepenuhnya ialah menambahkan semua pelayan nama dalam kedua-dua pembekal perkhidmatan DNS sebagai rekod NS peringkat atas ke akar zon.

$ dig NS github.com. @ns1.p16.dynect.net.
...
;; QUESTION SECTION:
;github.com. IN NS
;; ANSWER SECTION:
github.com. 551 IN NS ns1.p16.dynect.net.
github.com. 551 IN NS ns2.p16.dynect.net.
github.com. 551 IN NS ns-520.awsdns-01.net.
github.com. 551 IN NS ns3.p16.dynect.net.
github.com. 551 IN NS ns-421.awsdns-52.com.
github.com. 551 IN NS ns4.p16.dynect.net.
github.com. 551 IN NS ns-1283.awsdns-32.org.
github.com. 551 IN NS ns-1707.awsdns-21.co.uk.

Di GitHub kami mempunyai berpuluh-puluh kawasan dan beribu-ribu rekod, dan kebanyakan kawasan ini tidak cukup kritikal untuk memerlukan lebihan, jadi kami hanya perlu berurusan dengan beberapa sahaja. Kami ingin mempunyai penyelesaian yang boleh memastikan rekod ini disegerakkan merentas berbilang penyedia perkhidmatan DNS, dan secara amnya mengurus semua rekod DNS secara dalaman dan luaran. Jadi hari ini kami mengumumkan OctoDNS.

Tatarajah

OctoDNS membolehkan kami mencipta semula aliran kerja DNS kami. Wilayah dan rekod kami disimpan dalam fail konfigurasi dalam repositori Git. Gunakan aliran GitHub untuk perubahan kepada mereka dan gunakannya dengan cawangan seperti tapak. Kita juga boleh membuat penggunaan "kosong" untuk melihat rekod yang akan diubah suai dalam perubahan. Fail konfigurasi ialah kamus yaml, satu bagi setiap rantau, yang kunci peringkat teratasnya ialah nama rekod dan nilai kunci ialah ttl, jenis dan data khusus jenis. Contohnya, apabila disertakan dalam fail zon github.com.yaml, konfigurasi berikut akan mencipta rekod A untuk octodns.github.com.

octodns:
type: A
values:
- 1.2.3.4
- 1.2.3.5

Bahagian kedua konfigurasi memetakan sumber data rekod kepada pembekal perkhidmatan DNS. Coretan kod berikut memberitahu OctoDNS untuk memuatkan zon github.com daripada pembekal konfigurasi dan menyegerakkan hasilnya kepada dyn dan route53.

zones:
github.com.:
sources:
- config
targets:
- dyn
- route53
Segerakkan

Setelah konfigurasi kami selesai, OctoDNS boleh menilai keadaan semasa dan membina pelan yang menggariskan set perubahan yang diperlukan untuk memadankan keadaan sasaran dengan sumber. Dalam contoh di bawah, octodns.github.com ialah rekod baharu, jadi tindakan yang diperlukan ialah mencipta rekod dalam kedua-duanya.

$ octodns-sync --config-file=./config/production.yaml
...
********************************************************************************
* github.com.
********************************************************************************
* route53 (Route53Provider)
* Create
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
* dyn (DynProvider)
* Create
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
********************************************************************************
...

Secara lalai octodns-sync berada dalam mod larian simulasi, jadi tiada tindakan akan diambil. Setelah kami menyemak perubahan dan berpuas hati dengannya, kami boleh menambah bendera `--doit' dan menjalankan arahan itu semula. OctoDNS akan meneruskan aliran pemprosesannya, kali ini membuat perubahan yang diperlukan dalam Route53 dan Dynect untuk mencipta rekod baharu.

$ octodns-sync --config-file=./config/production.yaml --doit
...

Pada ketika ini, kami mempunyai rekod data yang sama dalam kedua-dua penyedia perkhidmatan DNS dan boleh membahagikan permintaan DNS kami dengan mudah antara mereka, dengan mengetahui bahawa ia akan memberikan hasil yang tepat. Apabila kami menjalankan perintah OctoDNS di atas secara langsung, aliran kerja dalaman kami bergantung pada skrip penggunaan dan sembang. Anda boleh mendapatkan maklumat lanjut dalam bahagian aliran kerja README.

Ringkasan

Kami berpendapat kebanyakan tapak web boleh mendapat manfaat daripada pihak berkuasa yang berpecah, dan diharapkan dengan OctoDNS, halangan terbesar telah dialih keluar. Walaupun anda tidak berminat untuk memisahkan kuasa, OctoDNS masih patut dilihat kerana ia membawa faedah infrastruktur sebagai kod kepada DNS.

Ingin membantu pasukan GitHub SRE menyelesaikan masalah yang menarik? Kami ingin menyertai kami. Mohon disini.

Atas ialah kandungan terperinci Cara menggunakan konfigurasi autoritatif pembahagian OctoDNS dan DNS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam