Bagaimana untuk menskala pusat data. Laporan Yandex

Kami telah membangunkan reka bentuk rangkaian pusat data yang membenarkan penggunaan kluster pengkomputeran yang lebih besar daripada 100 ribu pelayan dengan lebar jalur pembahagian dua puncak melebihi satu petabait sesaat.

Daripada laporan Dmitry Afanasyev, anda akan belajar tentang prinsip asas reka bentuk baharu, topologi penskalaan, masalah yang timbul dengan ini, pilihan untuk menyelesaikannya, ciri penghalaan dan penskalaan fungsi pesawat pemajuan peranti rangkaian moden dalam "bersambung padat" topologi dengan sejumlah besar laluan ECMP. Di samping itu, Dima secara ringkas bercakap tentang organisasi sambungan luaran, lapisan fizikal, sistem kabel dan cara untuk meningkatkan lagi kapasiti.

Bagaimana untuk menskala pusat data. Laporan Yandex

- Selamat tengahari semua! Nama saya Dmitry Afanasyev, saya seorang arkitek rangkaian di Yandex dan terutamanya mereka bentuk rangkaian pusat data.

Bagaimana untuk menskala pusat data. Laporan Yandex

Kisah saya adalah mengenai rangkaian pusat data Yandex yang dikemas kini. Ia merupakan evolusi reka bentuk yang kami ada, tetapi pada masa yang sama terdapat beberapa elemen baharu. Ini adalah pembentangan gambaran keseluruhan kerana terdapat banyak maklumat yang perlu dikemas dalam masa yang singkat. Kita akan mulakan dengan memilih topologi logik. Kemudian akan terdapat gambaran keseluruhan satah kawalan dan masalah dengan kebolehskalaan satah data, pilihan tentang perkara yang akan berlaku pada tahap fizikal, dan kami akan melihat beberapa ciri peranti. Mari kita sentuh sedikit tentang perkara yang berlaku dalam pusat data dengan MPLS, yang kita bincangkan suatu masa dahulu.

Bagaimana untuk menskala pusat data. Laporan Yandex

Jadi, apakah Yandex dari segi beban dan perkhidmatan? Yandex ialah hyperscaler biasa. Jika kami melihat pengguna, kami memproses permintaan pengguna terutamanya. Juga pelbagai perkhidmatan penstriman dan pemindahan data, kerana kami juga mempunyai perkhidmatan penyimpanan. Jika lebih dekat dengan bahagian belakang, maka beban infrastruktur dan perkhidmatan muncul di sana, seperti storan objek teragih, replikasi data dan, sudah tentu, baris gilir yang berterusan. Salah satu jenis beban kerja utama ialah MapReduce dan sistem yang serupa, pemprosesan strim, pembelajaran mesin, dsb.

Bagaimana untuk menskala pusat data. Laporan Yandex

Bagaimanakah infrastruktur di atasnya semua ini berlaku? Sekali lagi, kami adalah hyperscaler yang agak tipikal, walaupun kami mungkin lebih dekat sedikit dengan bahagian hyperscaler yang lebih rendah dalam spektrum. Tetapi kita mempunyai semua sifat. Kami menggunakan perkakasan komoditi dan penskalaan mendatar di mana mungkin. Kami mempunyai pengumpulan sumber penuh: kami tidak berfungsi dengan mesin individu, rak individu, tetapi menggabungkannya ke dalam kumpulan besar sumber yang boleh ditukar ganti dengan beberapa perkhidmatan tambahan yang berurusan dengan perancangan dan peruntukan, dan bekerja dengan keseluruhan kumpulan ini.

Jadi kita mempunyai tahap seterusnya - sistem pengendalian di peringkat kluster pengkomputeran. Adalah sangat penting untuk kita mengawal sepenuhnya susunan teknologi yang kita gunakan. Kami mengawal titik akhir (hos), rangkaian dan timbunan perisian.

Kami mempunyai beberapa pusat data besar di Rusia dan di luar negara. Mereka disatukan oleh tulang belakang yang menggunakan teknologi MPLS. Infrastruktur dalaman kami hampir sepenuhnya dibina pada IPv6, tetapi memandangkan kami perlu menyediakan trafik luaran yang masih datang terutamanya melalui IPv4, kami mesti menghantar permintaan yang datang melalui IPv4 ke pelayan hadapan, dan sedikit lagi pergi ke IPv4- Internet luaran - untuk contoh, untuk pengindeksan.

Beberapa lelaran terakhir reka bentuk rangkaian pusat data telah menggunakan topologi Clos berbilang lapisan dan L3 sahaja. Kami meninggalkan L2 sebentar tadi dan menarik nafas lega. Akhir sekali, infrastruktur kami termasuk ratusan ribu contoh pengiraan (pelayan). Saiz kluster maksimum suatu masa dahulu ialah kira-kira 10 ribu pelayan. Ini sebahagian besarnya disebabkan oleh cara sistem pengendalian peringkat kluster yang sama, penjadual, peruntukan sumber, dsb. boleh berfungsi. Memandangkan kemajuan telah berlaku pada sisi perisian infrastruktur, saiz sasaran kini ialah kira-kira 100 ribu pelayan dalam satu kluster pengkomputeran, dan Kami mempunyai tugas - untuk dapat membina kilang rangkaian yang membolehkan pengumpulan sumber yang cekap dalam kelompok sedemikian.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apa yang kita mahu daripada rangkaian pusat data? Pertama sekali, terdapat banyak lebar jalur yang murah dan diedarkan secara seragam. Kerana rangkaian adalah tulang belakang di mana kita boleh mengumpulkan sumber. Saiz sasaran baharu ialah kira-kira 100 ribu pelayan dalam satu kluster.

Kami juga, sudah tentu, mahukan pesawat kawalan yang berskala dan stabil, kerana pada infrastruktur yang begitu besar, banyak sakit kepala timbul walaupun hanya dari peristiwa rawak, dan kami tidak mahu pesawat kawalan itu membawa kita sakit kepala juga. Pada masa yang sama, kita mahu meminimumkan keadaan di dalamnya. Lebih kecil keadaan, lebih baik dan lebih stabil semuanya berfungsi, dan lebih mudah untuk didiagnosis.

Sudah tentu, kita memerlukan automasi, kerana adalah mustahil untuk menguruskan infrastruktur sedemikian secara manual, dan ia adalah mustahil untuk beberapa waktu. Kami memerlukan sokongan operasi sebanyak mungkin dan sokongan CI/CD setakat mana ia boleh disediakan.

Dengan saiz pusat dan kluster data sedemikian, tugas untuk menyokong penggunaan tambahan dan pengembangan tanpa gangguan perkhidmatan telah menjadi agak teruk. Jika pada kelompok bersaiz seribu mesin, mungkin hampir sepuluh ribu mesin, mereka masih boleh dilancarkan sebagai satu operasi - iaitu, kami merancang pengembangan infrastruktur, dan beberapa ribu mesin ditambah sebagai satu operasi, maka sekumpulan mesin bersaiz seratus ribu tidak timbul serta merta seperti ini, ia dibina dalam satu tempoh masa. Dan adalah wajar bahawa selama ini apa yang telah dipam keluar, infrastruktur yang telah digunakan, harus tersedia.

Dan satu keperluan yang kami ada dan tinggalkan: sokongan untuk multitenancy, iaitu virtualisasi atau pembahagian rangkaian. Kini kami tidak perlu melakukan ini di peringkat fabrik rangkaian, kerana sharding telah pergi ke hos, dan ini telah menjadikan penskalaan sangat mudah untuk kami. Terima kasih kepada IPv6 dan ruang alamat yang besar, kami tidak perlu menggunakan alamat pendua dalam infrastruktur dalaman; semua pengalamatan sudah unik. Dan terima kasih kepada fakta bahawa kami telah mengambil penapisan dan pembahagian rangkaian kepada hos, kami tidak perlu mencipta sebarang entiti rangkaian maya dalam rangkaian pusat data.

Bagaimana untuk menskala pusat data. Laporan Yandex

Perkara yang sangat penting ialah apa yang kita tidak perlukan. Jika beberapa fungsi boleh dialih keluar daripada rangkaian, ini menjadikan hidup lebih mudah, dan, sebagai peraturan, mengembangkan pilihan peralatan dan perisian yang tersedia, menjadikan diagnostik sangat mudah.

Jadi, apa yang kita tidak perlukan, apa yang kita mampu berputus asa, tidak selalu dengan kegembiraan pada masa ia berlaku, tetapi dengan rasa lega apabila proses itu selesai?

Pertama sekali, meninggalkan L2. Kami tidak memerlukan L2, tidak nyata mahupun dicontohi. Tidak digunakan sebahagian besarnya disebabkan oleh fakta bahawa kami mengawal timbunan aplikasi. Aplikasi kami boleh skala mendatar, ia berfungsi dengan pengalamatan L3, mereka tidak terlalu bimbang bahawa sesetengah contoh individu telah keluar, mereka hanya melancarkan yang baharu, ia tidak perlu dilancarkan di alamat lama, kerana terdapat tahap penemuan perkhidmatan yang berasingan dan pemantauan mesin yang terletak dalam kelompok. Kami tidak menyerahkan tugas ini kepada rangkaian. Tugas rangkaian adalah untuk menghantar paket dari titik A ke titik B.

Kami juga tidak mempunyai situasi di mana alamat bergerak dalam rangkaian, dan ini perlu dipantau. Dalam kebanyakan reka bentuk ini biasanya diperlukan untuk menyokong mobiliti VM. Kami tidak menggunakan mobiliti mesin maya dalam infrastruktur dalaman Yandex yang besar, dan, lebih-lebih lagi, kami percaya bahawa walaupun ini dilakukan, ia tidak sepatutnya berlaku dengan sokongan rangkaian. Jika ia benar-benar perlu dilakukan, ia perlu dilakukan di peringkat hos, dan menolak alamat yang boleh berhijrah ke dalam tindanan, supaya tidak menyentuh atau membuat terlalu banyak perubahan dinamik pada sistem penghalaan dasar itu sendiri (rangkaian pengangkutan) .

Satu lagi teknologi yang kami tidak gunakan ialah multicast. Jika anda mahu, saya boleh memberitahu anda secara terperinci mengapa. Ini menjadikan hidup lebih mudah, kerana jika seseorang telah menanganinya dan melihat dengan tepat rupa satah kawalan multicast, dalam semua tetapi pemasangan yang paling mudah, ini adalah sakit kepala yang besar. Dan lebih-lebih lagi, sukar untuk mencari pelaksanaan sumber terbuka yang berfungsi dengan baik, sebagai contoh.

Akhir sekali, kami mereka bentuk rangkaian kami supaya ia tidak terlalu banyak berubah. Kita boleh bergantung pada fakta bahawa aliran peristiwa luaran dalam sistem penghalaan adalah kecil.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apakah masalah yang timbul dan apakah sekatan yang perlu diambil kira apabila kami membangunkan rangkaian pusat data? Kos, sudah tentu. Kebolehskalaan, tahap yang kita mahu kembangkan. Keperluan untuk berkembang tanpa menghentikan perkhidmatan. Lebar jalur, ketersediaan. Keterlihatan apa yang berlaku pada rangkaian untuk sistem pemantauan, untuk pasukan operasi. Sokongan automasi - sekali lagi, sebanyak mungkin, kerana tugas yang berbeza boleh diselesaikan pada tahap yang berbeza, termasuk pengenalan lapisan tambahan. Nah, tidak [mungkin] bergantung kepada vendor. Walaupun dalam tempoh sejarah yang berbeza, bergantung pada bahagian mana yang anda lihat, kemerdekaan ini lebih mudah atau lebih sukar untuk dicapai. Jika kita mengambil keratan rentas cip peranti rangkaian, maka sehingga baru-baru ini adalah sangat bersyarat untuk bercakap tentang kebebasan daripada vendor, jika kita juga mahukan cip dengan daya pemprosesan yang tinggi.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apakah topologi logik yang akan kami gunakan untuk membina rangkaian kami? Ini akan menjadi Clos berbilang peringkat. Malah, tiada alternatif sebenar pada masa ini. Dan topologi Clos agak baik, walaupun jika dibandingkan dengan pelbagai topologi canggih yang lebih dalam bidang minat akademik sekarang, jika kita mempunyai suis radix yang besar.

Bagaimana untuk menskala pusat data. Laporan Yandex

Bagaimanakah rangkaian Clos berbilang peringkat tersusun secara kasar dan apakah unsur yang berbeza dipanggil di dalamnya? Pertama sekali, angin naik, untuk mengorientasikan diri anda di mana utara, di mana selatan, di mana timur, di mana barat. Rangkaian jenis ini biasanya dibina oleh mereka yang mempunyai trafik barat-timur yang sangat besar. Bagi elemen yang tinggal, di bahagian atas adalah suis maya yang dipasang dari suis yang lebih kecil. Ini adalah idea utama pembinaan rekursif rangkaian Clos. Kami mengambil elemen dengan beberapa jenis radix dan menyambungkannya supaya apa yang kami dapat boleh dianggap sebagai suis dengan radix yang lebih besar. Jika anda memerlukan lebih banyak lagi, prosedur boleh diulang.

Dalam kes, contohnya, dengan Clos dua peringkat, apabila mungkin untuk mengenal pasti dengan jelas komponen yang menegak dalam rajah saya, ia biasanya dipanggil satah. Jika kita membina Clos dengan tiga tahap suis tulang belakang (semuanya bukan suis sempadan atau ToR dan yang digunakan hanya untuk transit), maka pesawat akan kelihatan lebih kompleks; yang dua peringkat kelihatan betul-betul seperti ini. Kami memanggil blok ToR atau suis daun dan suis tulang belakang peringkat pertama yang dikaitkan dengannya sebagai Pod. Suis tulang belakang tahap tulang belakang-1 di bahagian atas Pod adalah bahagian atas Pod, bahagian atas Pod. Suis yang terletak di bahagian atas keseluruhan kilang adalah lapisan atas kilang, Bahagian atas kain.

Bagaimana untuk menskala pusat data. Laporan Yandex

Sudah tentu, persoalan timbul: Rangkaian Clos telah dibina untuk beberapa lama; idea itu sendiri biasanya datang dari zaman telefon klasik, rangkaian TDM. Mungkin sesuatu yang lebih baik telah muncul, mungkin sesuatu boleh dilakukan dengan lebih baik? Ya dan tidak. Secara teorinya ya, dalam amalan dalam masa terdekat pasti tidak. Oleh kerana terdapat beberapa topologi yang menarik, sesetengah daripadanya juga digunakan dalam pengeluaran, contohnya, Dragonfly digunakan dalam aplikasi HPC; Terdapat juga topologi yang menarik seperti Xpander, FatClique, Jellyfish. Jika anda melihat laporan pada persidangan seperti SIGCOMM atau NSDI baru-baru ini, anda boleh menemui sejumlah besar kerja pada topologi alternatif yang mempunyai sifat yang lebih baik (satu atau yang lain) daripada Clos.

Tetapi semua topologi ini mempunyai satu sifat yang menarik. Ia menghalang pelaksanaannya dalam rangkaian pusat data, yang kami cuba bina pada perkakasan komoditi dan menelan belanja yang agak berpatutan. Dalam semua topologi alternatif ini, kebanyakan lebar jalur malangnya tidak boleh diakses melalui laluan terpendek. Oleh itu, kami serta-merta kehilangan peluang untuk menggunakan pesawat kawalan tradisional.

Secara teorinya, penyelesaian kepada masalah itu diketahui. Ini, sebagai contoh, pengubahsuaian keadaan pautan menggunakan laluan terpendek k, tetapi, sekali lagi, tiada protokol sedemikian yang akan dilaksanakan dalam pengeluaran dan tersedia secara meluas pada peralatan.

Selain itu, memandangkan kebanyakan kapasiti tidak boleh diakses melalui laluan terpendek, kita perlu mengubah suai lebih daripada satah kawalan untuk memilih semua laluan tersebut (dan dengan cara ini, ini adalah keadaan yang lebih ketara dalam satah kawalan). Kami masih perlu mengubah suai satah pemajuan, dan, sebagai peraturan, sekurang-kurangnya dua ciri tambahan diperlukan. Ini ialah keupayaan untuk membuat semua keputusan tentang pemajuan paket sekali sahaja, sebagai contoh, pada hos. Sebenarnya, ini adalah penghalaan sumber, kadangkala dalam literatur mengenai rangkaian sambungan ini dipanggil keputusan pemajuan serentak. Dan penghalaan adaptif ialah fungsi yang kita perlukan pada elemen rangkaian, yang bermuara, sebagai contoh, kepada fakta bahawa kita memilih lompatan seterusnya berdasarkan maklumat tentang beban paling sedikit pada baris gilir. Sebagai contoh, pilihan lain mungkin.

Oleh itu, arahnya menarik, tetapi, malangnya, kita tidak boleh menggunakannya sekarang.

Bagaimana untuk menskala pusat data. Laporan Yandex

Baiklah, kami telah menyelesaikan pada topologi logik Clos. Bagaimana kita akan mengukurnya? Mari lihat bagaimana ia berfungsi dan apa yang boleh dilakukan.

Bagaimana untuk menskala pusat data. Laporan Yandex

Dalam rangkaian Clos terdapat dua parameter utama yang entah bagaimana kita boleh berbeza-beza dan mendapatkan hasil tertentu: radix elemen dan bilangan tahap dalam rangkaian. Saya mempunyai gambarajah skema tentang bagaimana kedua-duanya mempengaruhi saiz. Sebaik-baiknya, kami menggabungkan kedua-duanya.

Bagaimana untuk menskala pusat data. Laporan Yandex

Ia boleh dilihat bahawa lebar akhir rangkaian Clos adalah hasil daripada semua peringkat suis tulang belakang radix selatan, berapa banyak pautan yang kita ada ke bawah, bagaimana ia bercabang. Beginilah cara kita menskalakan saiz rangkaian.

Bagaimana untuk menskala pusat data. Laporan Yandex

Mengenai kapasiti, terutamanya pada suis ToR, terdapat dua pilihan penskalaan. Sama ada kita boleh, sambil mengekalkan topologi umum, menggunakan pautan yang lebih pantas, atau kita boleh menambah lebih banyak satah.

Jika anda melihat versi rangkaian Clos yang dikembangkan (di sudut kanan bawah) dan kembali ke gambar ini dengan rangkaian Clos di bawah...

Bagaimana untuk menskala pusat data. Laporan Yandex

... maka ini adalah topologi yang sama, tetapi pada slaid ini ia runtuh dengan lebih padat dan satah kilang bertindih antara satu sama lain. Ia adalah sama.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apakah rupa penskalaan rangkaian Clos dalam nombor? Di sini saya menyediakan data tentang lebar maksimum rangkaian boleh diperolehi, berapa bilangan rak maksimum, suis ToR atau suis daun, jika mereka tidak berada dalam rak, kita boleh dapatkan bergantung pada radix suis yang kita gunakan untuk tahap tulang belakang, dan berapa tahap yang kita gunakan.

Berikut ialah berapa banyak rak yang boleh kita miliki, berapa banyak pelayan dan kira-kira berapa banyak semua ini boleh digunakan berdasarkan 20 kW setiap rak. Sedikit lebih awal saya menyebut bahawa kami menyasarkan saiz kluster kira-kira 100 ribu pelayan.

Ia dapat dilihat bahawa dalam keseluruhan reka bentuk ini, dua setengah pilihan menarik. Terdapat pilihan dengan dua lapisan duri dan suis 64-port, yang pendek sedikit. Kemudian terdapat pilihan yang sesuai untuk suis tulang belakang 128-port (dengan radix 128) dengan dua tahap, atau suis dengan radix 32 dengan tiga tahap. Dan dalam semua kes, di mana terdapat lebih banyak radix dan lebih banyak lapisan, anda boleh membuat rangkaian yang sangat besar, tetapi jika anda melihat pada penggunaan yang dijangka, biasanya terdapat gigawatt. Adalah mungkin untuk meletakkan kabel, tetapi kami tidak mungkin mendapat bekalan elektrik sebanyak itu di satu tapak. Jika anda melihat statistik dan data awam mengenai pusat data, anda boleh menemui sangat sedikit pusat data dengan anggaran kapasiti lebih daripada 150 MW. Yang lebih besar biasanya kampus pusat data, beberapa pusat data besar terletak agak berdekatan antara satu sama lain.

Terdapat satu lagi parameter penting. Jika anda melihat pada lajur kiri, lebar jalur yang boleh digunakan disenaraikan di sana. Adalah mudah untuk melihat bahawa dalam rangkaian Clos sebahagian besar port digunakan untuk menyambungkan suis antara satu sama lain. Jalur lebar yang boleh digunakan, jalur yang berguna, adalah sesuatu yang boleh diberikan di luar, ke arah pelayan. Sememangnya, saya bercakap tentang port bersyarat dan khususnya mengenai band. Sebagai peraturan, pautan dalam rangkaian adalah lebih pantas daripada pautan ke arah pelayan, tetapi setiap unit lebar jalur, seberapa banyak yang boleh kami hantar ke peralatan pelayan kami, masih terdapat beberapa jalur lebar dalam rangkaian itu sendiri. Dan lebih banyak tahap yang kami buat, lebih besar kos khusus untuk menyediakan jalur ini ke luar.

Lebih-lebih lagi, walaupun band tambahan ini tidak betul-betul sama. Walaupun rentang pendek, kita boleh menggunakan sesuatu seperti DAC (tembaga sambungan langsung, iaitu kabel twinax), atau optik berbilang mod, yang menelan belanja lebih atau kurang berpatutan. Sebaik sahaja kami beralih ke rentang yang lebih panjang - sebagai peraturan, ini adalah optik mod tunggal, dan kos lebar jalur tambahan ini meningkat dengan ketara.

Dan sekali lagi, kembali ke slaid sebelumnya, jika kita membuat rangkaian Clos tanpa terlebih langganan, maka mudah untuk melihat rajah, lihat bagaimana rangkaian itu dibina - menambah setiap tahap suis tulang belakang, kami mengulangi keseluruhan jalur yang berada di bawah. Tahap tambah - ditambah jalur yang sama, bilangan port pada suis yang sama seperti yang terdapat pada tahap sebelumnya, dan bilangan transceiver yang sama. Oleh itu, adalah sangat wajar untuk meminimumkan bilangan tahap suis tulang belakang.

Berdasarkan gambar ini, jelas bahawa kami benar-benar mahu membina sesuatu seperti suis dengan radix 128.

Bagaimana untuk menskala pusat data. Laporan Yandex

Di sini, pada dasarnya, semuanya adalah sama seperti yang saya katakan tadi; ini adalah slaid untuk dipertimbangkan kemudian.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apakah pilihan yang ada yang boleh kita pilih sebagai suis sedemikian? Ia adalah berita yang sangat menggembirakan bagi kami bahawa kini rangkaian sedemikian akhirnya boleh dibina pada suis cip tunggal. Dan ini sangat keren, mereka mempunyai banyak ciri yang bagus. Sebagai contoh, mereka hampir tidak mempunyai struktur dalaman. Ini bermakna mereka lebih mudah pecah. Mereka pecah dengan pelbagai cara, tetapi mujurlah mereka pecah sepenuhnya. Dalam peranti modular terdapat sejumlah besar kerosakan (sangat tidak menyenangkan), apabila dari sudut pandangan jiran dan satah kawalan nampaknya berfungsi, tetapi, sebagai contoh, sebahagian daripada kain telah hilang dan ia tidak berfungsi pada kapasiti penuh. Dan trafik ke sana adalah seimbang berdasarkan fakta bahawa ia berfungsi sepenuhnya, dan kita boleh mendapat beban yang berlebihan.

Atau, sebagai contoh, masalah timbul dengan backplane, kerana di dalam peranti modular terdapat juga SerDes berkelajuan tinggi - ia benar-benar kompleks di dalamnya. Sama ada tanda antara elemen pemajuan disegerakkan atau tidak disegerakkan. Secara umum, mana-mana peranti modular produktif yang terdiri daripada sejumlah besar elemen, sebagai peraturan, mengandungi rangkaian Clos yang sama di dalam dirinya sendiri, tetapi sangat sukar untuk didiagnosis. Selalunya sukar bagi vendor sendiri untuk mendiagnosis.

Dan ia mempunyai sejumlah besar senario kegagalan di mana peranti merosot, tetapi tidak terkeluar daripada topologi sepenuhnya. Oleh kerana rangkaian kami adalah besar, pengimbangan antara elemen yang sama digunakan secara aktif, rangkaian itu sangat teratur, iaitu, satu laluan di mana segala-galanya teratur tidak berbeza daripada laluan yang lain, adalah lebih menguntungkan bagi kami untuk kehilangan beberapa peranti daripada topologi daripada berakhir dalam keadaan di mana sesetengah daripada mereka kelihatan berfungsi, tetapi sesetengah daripada mereka tidak.

Bagaimana untuk menskala pusat data. Laporan Yandex

Ciri menarik seterusnya peranti cip tunggal ialah ia berkembang dengan lebih baik dan lebih pantas. Mereka juga cenderung mempunyai kapasiti yang lebih baik. Jika kita mengambil struktur terpasang yang besar yang kita ada pada bulatan, maka kapasiti setiap unit rak untuk port dengan kelajuan yang sama hampir dua kali lebih baik daripada peranti modular. Peranti yang dibina di sekeliling satu cip adalah nyata lebih murah daripada yang modular dan menggunakan lebih sedikit tenaga.

Tetapi, sudah tentu, ini semua ada sebab, ada juga keburukannya. Pertama, radix hampir selalu lebih kecil daripada peranti modular. Jika kita boleh mendapatkan peranti yang dibina di sekitar satu cip dengan 128 port, maka kita boleh mendapatkan satu modular dengan beberapa ratus port sekarang tanpa sebarang masalah.

Ini adalah saiz jadual pemajuan yang ketara lebih kecil dan, sebagai peraturan, segala-galanya yang berkaitan dengan kebolehskalaan satah data. Penampan cetek. Dan, sebagai peraturan, fungsi yang agak terhad. Tetapi ternyata jika anda mengetahui sekatan ini dan berhati-hati dalam masa untuk memintasnya atau hanya mengambil kiranya, maka ini tidak begitu menakutkan. Hakikat bahawa radix lebih kecil tidak lagi menjadi masalah pada peranti dengan radix 128 yang akhirnya muncul baru-baru ini; kita boleh membina dua lapisan duri. Tetapi masih mustahil untuk membina sesuatu yang lebih kecil daripada dua yang menarik bagi kami. Dengan satu tahap, kelompok yang sangat kecil diperolehi. Malah reka bentuk dan keperluan kami sebelum ini masih melebihi mereka.

Malah, jika tiba-tiba penyelesaian berada di suatu tempat di ambang, masih ada cara untuk skala. Memandangkan tahap terakhir (atau pertama), paling rendah di mana pelayan disambungkan ialah suis ToR atau suis daun, kami tidak perlu menyambungkan satu rak kepada mereka. Oleh itu, jika penyelesaiannya kurang separuh, anda boleh berfikir tentang hanya menggunakan suis dengan radix besar di peringkat bawah dan menyambung, sebagai contoh, dua atau tiga rak ke dalam satu suis. Ini juga merupakan pilihan, ia mempunyai kosnya, tetapi ia berfungsi dengan baik dan boleh menjadi penyelesaian yang baik apabila anda perlu mencapai kira-kira dua kali ganda saiz.

Bagaimana untuk menskala pusat data. Laporan Yandex

Untuk meringkaskan, kami sedang membina topologi dengan dua peringkat duri, dengan lapan lapisan kilang.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apa yang akan berlaku kepada fizik? Pengiraan yang sangat mudah. Jika kami mempunyai dua tahap tulang belakang, maka kami hanya mempunyai tiga tahap suis, dan kami menjangkakan bahawa akan ada tiga segmen kabel dalam rangkaian: daripada pelayan ke suis daun, ke tulang belakang 1, ke tulang belakang 2. Pilihan yang kami boleh penggunaan adalah - ini ialah twinax, multimode, mod tunggal. Dan di sini kita perlu mempertimbangkan jalur yang tersedia, berapa kosnya, apakah dimensi fizikal, rentang yang boleh kita tutup, dan cara kita akan meningkatkan.

Dari segi kos, semuanya boleh dibariskan. Twinax adalah jauh lebih murah daripada optik aktif, lebih murah daripada transceiver berbilang mod, jika anda mengambilnya setiap penerbangan dari hujung, agak lebih murah daripada port suis 100-gigabit. Dan, sila ambil perhatian, kosnya kurang daripada optik mod tunggal, kerana pada penerbangan di mana mod tunggal diperlukan, di pusat data untuk beberapa sebab adalah masuk akal untuk menggunakan CWDM, manakala mod tunggal selari (PSM) tidak begitu mudah untuk berfungsi dengan, pek yang sangat besar diperoleh gentian, dan jika kita menumpukan pada teknologi ini, kita mendapat kira-kira hierarki harga berikut.

Satu lagi nota: malangnya, tidak mungkin untuk menggunakan port berbilang mod 100 hingga 4x25 yang dibongkar. Oleh kerana ciri reka bentuk transceiver SFP28, ia tidak jauh lebih murah daripada 28 Gbit QSFP100. Dan pembongkaran ini untuk multimode tidak berfungsi dengan baik.

Satu lagi had ialah disebabkan saiz kluster pengkomputeran dan bilangan pelayan, pusat data kami ternyata besar secara fizikal. Ini bermakna sekurang-kurangnya satu penerbangan perlu dilakukan dengan singlemod. Sekali lagi, disebabkan saiz fizikal Pod, tidak mungkin untuk menjalankan dua rentang twinax (kabel tembaga).

Akibatnya, jika kami mengoptimumkan harga dan mengambil kira geometri reka bentuk ini, kami mendapat satu rentang twinax, satu rentang multimod dan satu rentang singlemode menggunakan CWDM. Ini mengambil kira kemungkinan laluan naik taraf.

Bagaimana untuk menskala pusat data. Laporan Yandex

Beginilah rupanya baru-baru ini, ke mana kita tuju dan apa yang mungkin. Adalah jelas, sekurang-kurangnya, cara untuk bergerak ke arah SerDes 50-Gigabit untuk kedua-dua mod berbilang dan mod tunggal. Lebih-lebih lagi, jika anda melihat apa yang ada dalam transceiver mod tunggal sekarang dan pada masa hadapan untuk 400G, selalunya walaupun apabila SerDes 50G tiba dari bahagian elektrik, 100 Gbps setiap lorong sudah boleh pergi ke optik. Oleh itu, agak mungkin bahawa daripada beralih kepada 50, akan ada peralihan kepada 100 Gigabit SerDes dan 100 Gbps setiap lorong, kerana menurut janji banyak vendor, ketersediaan mereka dijangka tidak lama lagi. Tempoh 50G SerDes adalah yang terpantas, nampaknya, tidak akan terlalu lama, kerana salinan pertama 100G SerDes akan dilancarkan hampir tahun depan. Dan selepas beberapa lama selepas itu mereka mungkin akan bernilai wang yang berpatutan.

Bagaimana untuk menskala pusat data. Laporan Yandex

Satu lagi nuansa tentang pilihan fizik. Pada dasarnya, kita sudah boleh menggunakan port 400 atau 200 Gigabit menggunakan 50G SerDes. Tetapi ternyata ini tidak masuk akal, kerana, seperti yang saya katakan sebelum ini, kami mahukan radix yang agak besar pada suis, dalam sebab, sudah tentu. Kami mahu 128. Dan jika kami mempunyai kapasiti cip yang terhad dan kami meningkatkan kelajuan pautan, maka radix secara semula jadi berkurangan, tidak ada keajaiban.

Dan kita boleh meningkatkan jumlah kapasiti menggunakan pesawat, dan tiada kos khas; kita boleh menambah bilangan pesawat. Dan jika kita kehilangan radix, kita perlu memperkenalkan tahap tambahan, jadi dalam keadaan semasa, dengan kapasiti maksimum yang tersedia setiap cip semasa, ternyata lebih cekap menggunakan port 100-gigabit, kerana ia membenarkan anda untuk mendapatkan radix yang lebih besar.

Bagaimana untuk menskala pusat data. Laporan Yandex

Soalan seterusnya ialah bagaimana fizik disusun, tetapi dari sudut pandangan infrastruktur kabel. Ternyata ia dianjurkan dengan cara yang agak lucu. Pengkabelan antara suis daun dan duri peringkat pertama - tidak banyak pautan di sana, semuanya dibina secara ringkas. Tetapi jika kita mengambil satu kapal terbang, apa yang berlaku di dalam ialah kita perlu menyambung semua tulang belakang tahap pertama dengan semua tulang belakang tahap kedua.

Selain itu, sebagai peraturan, terdapat beberapa keinginan tentang bagaimana ia harus kelihatan di dalam pusat data. Sebagai contoh, kami benar-benar ingin menggabungkan kabel menjadi satu berkas dan menariknya supaya satu panel tampalan berketumpatan tinggi masuk sepenuhnya ke dalam satu panel tampalan, supaya tiada zoo dari segi panjang. Kami berjaya menyelesaikan masalah ini. Jika anda pada mulanya melihat topologi logik, anda dapat melihat bahawa satah adalah bebas, setiap satah boleh dibina sendiri. Tetapi apabila kita menambah ikatan sedemikian dan ingin menyeret keseluruhan panel tampalan ke dalam panel tampalan, kita perlu mencampurkan satah yang berbeza di dalam satu berkas dan memperkenalkan struktur perantaraan dalam bentuk sambungan silang optik untuk membungkusnya semula daripada cara ia dipasang. pada satu segmen , dalam cara ia akan dikumpulkan pada segmen lain. Terima kasih kepada ini, kami mendapat ciri yang bagus: semua pensuisan kompleks tidak melampaui rak. Apabila anda perlu menjalin sesuatu dengan sangat kuat, "buka satah", seperti yang kadangkala dipanggil dalam rangkaian Clos, semuanya tertumpu di dalam satu rak. Kami tidak mempunyai yang sangat dibongkar, sehingga ke pautan individu, bertukar antara rak.

Bagaimana untuk menskala pusat data. Laporan Yandex

Ini adalah bagaimana ia kelihatan dari sudut pandangan organisasi logik infrastruktur kabel. Dalam gambar di sebelah kiri, blok berbilang warna menggambarkan blok suis tulang belakang peringkat pertama, masing-masing lapan keping dan empat berkas kabel yang datang daripadanya, yang pergi dan bersilang dengan berkas yang datang daripada blok suis spine-2 .

Petak kecil menunjukkan persimpangan. Di bahagian atas sebelah kiri ialah pecahan setiap persimpangan tersebut, ini sebenarnya modul sambung silang 512 x 512 port yang membungkus semula kabel supaya ia dimasukkan sepenuhnya ke dalam satu rak, di mana hanya terdapat satu satah tulang belakang-2. Dan di sebelah kanan, imbasan gambar ini adalah lebih terperinci sedikit berhubung dengan beberapa Pod pada tahap tulang belakang-1, dan cara ia dibungkus dalam sambungan silang, bagaimana ia datang ke tahap tulang belakang-2.

Bagaimana untuk menskala pusat data. Laporan Yandex

Inilah rupanya. Dirian tulang belakang-2 yang belum dipasang sepenuhnya (di sebelah kiri) dan dirian sambung silang. Malangnya, tidak banyak yang boleh dilihat di sana. Keseluruhan struktur ini sedang digunakan sekarang di salah satu pusat data besar kami yang sedang dikembangkan. Ini adalah kerja yang sedang dijalankan, ia akan kelihatan lebih bagus, ia akan diisi dengan lebih baik.

Bagaimana untuk menskala pusat data. Laporan Yandex

Soalan penting: kami memilih topologi logik dan membina fizik. Apakah yang akan berlaku kepada pesawat kawalan? Ia agak terkenal dari pengalaman operasi, terdapat beberapa laporan bahawa protokol keadaan pautan adalah baik, ia adalah keseronokan untuk bekerja dengan mereka, tetapi, malangnya, mereka tidak berskala dengan baik pada topologi yang bersambung padat. Dan terdapat satu faktor utama yang menghalang perkara ini - ini adalah cara banjir berfungsi dalam protokol keadaan pautan. Jika anda hanya mengambil algoritma banjir dan melihat bagaimana rangkaian kami distrukturkan, anda dapat melihat bahawa akan terdapat fanout yang sangat besar pada setiap langkah, dan ia hanya akan membanjiri pesawat kawalan dengan kemas kini. Khususnya, topologi sedemikian tidak bercampur dengan algoritma banjir tradisional dalam protokol keadaan pautan.

Pilihannya ialah menggunakan BGP. Cara menyediakannya dengan betul diterangkan dalam RFC 7938 tentang penggunaan BGP di pusat data yang besar. Idea asas adalah mudah: bilangan awalan minimum bagi setiap hos dan secara amnya bilangan awalan minimum pada rangkaian, gunakan pengagregatan jika boleh dan sekat pemburuan laluan. Kami mahukan pengedaran kemas kini yang sangat berhati-hati, sangat terkawal, apa yang dipanggil bebas lembah. Kami mahu kemas kini digunakan tepat sekali semasa ia melalui rangkaian. Jika mereka berasal dari bahagian bawah, mereka naik, tidak lebih daripada sekali. Seharusnya tiada zigzag. Zigzag sangat teruk.

Untuk melakukan ini, kami menggunakan reka bentuk yang cukup mudah untuk menggunakan mekanisme BGP yang mendasari. Iaitu, kami menggunakan eBGP yang dijalankan pada pautan setempat, dan sistem autonomi ditetapkan seperti berikut: sistem autonomi pada ToR, sistem autonomi pada keseluruhan blok suis spine-1 satu Pod, dan sistem autonomi umum pada keseluruhan Atas daripada Fabrik. Tidak sukar untuk melihat dan melihat bahawa walaupun tingkah laku biasa BGP memberikan kami pengedaran kemas kini yang kami mahukan.

Bagaimana untuk menskala pusat data. Laporan Yandex

Sememangnya, pengagregatan pengalamatan dan alamat perlu direka bentuk supaya ia serasi dengan cara penghalaan dibina, supaya ia memastikan kestabilan satah kawalan. Pengalamatan L3 dalam pengangkutan terikat dengan topologi, kerana tanpa ini adalah mustahil untuk mencapai pengagregatan; tanpa ini, alamat individu akan merayap ke dalam sistem penghalaan. Dan satu perkara lagi ialah pengagregatan, malangnya, tidak bergaul dengan baik dengan berbilang laluan, kerana apabila kita mempunyai berbilang laluan dan kita mempunyai pengagregatan, semuanya baik-baik saja, apabila keseluruhan rangkaian sihat, tidak ada kegagalan di dalamnya. Malangnya, sebaik sahaja kegagalan muncul dalam rangkaian dan simetri topologi hilang, kita boleh sampai ke titik dari mana unit diumumkan, dari mana kita tidak boleh pergi lebih jauh ke tempat yang perlu kita tuju. Oleh itu, adalah lebih baik untuk mengagregat di mana tiada lagi laluan berbilang, dalam kes kami ini adalah suis ToR.

Bagaimana untuk menskala pusat data. Laporan Yandex

Malah, adalah mungkin untuk mengagregat, tetapi berhati-hati. Jika kita boleh melakukan pengasingan terkawal apabila kegagalan rangkaian berlaku. Tetapi ini adalah tugas yang agak sukar, kami juga tertanya-tanya sama ada mungkin untuk melakukan ini, sama ada mungkin untuk menambah automasi tambahan, dan mesin keadaan terhingga yang akan menendang BGP dengan betul untuk mendapatkan tingkah laku yang diingini. Malangnya, pemprosesan kes sudut sangat tidak jelas dan kompleks, dan tugas ini tidak diselesaikan dengan baik dengan melampirkan lampiran luaran pada BGP.

Kerja yang sangat menarik dalam hal ini telah dilakukan dalam rangka protokol RIFT, yang akan dibincangkan dalam laporan seterusnya.

Bagaimana untuk menskala pusat data. Laporan Yandex

Satu lagi perkara penting ialah cara satah data berskala dalam topologi padat, di mana kami mempunyai sejumlah besar laluan alternatif. Dalam kes ini, beberapa struktur data tambahan digunakan: kumpulan ECMP, yang seterusnya menerangkan kumpulan Next Hop.

Dalam rangkaian yang biasa berfungsi, tanpa kegagalan, apabila kita naik topologi Clos, cukup untuk menggunakan hanya satu kumpulan, kerana semua yang bukan tempatan diterangkan secara lalai, kita boleh naik. Apabila kita pergi dari atas ke bawah ke selatan, maka semua laluan bukan ECMP, ia adalah laluan laluan tunggal. Semuanya baik-baik sahaja. Masalahnya ialah, dan keanehan topologi Clos klasik ialah jika kita melihat Bahagian Atas fabrik, pada mana-mana elemen, hanya ada satu laluan ke mana-mana elemen di bawah. Jika kegagalan berlaku di sepanjang laluan ini, maka elemen tertentu di bahagian atas kilang ini menjadi tidak sah tepat untuk awalan yang terletak di belakang laluan yang rosak. Tetapi untuk selebihnya ia sah, dan kita perlu menghuraikan kumpulan ECMP dan memperkenalkan keadaan baharu.

Apakah rupa kebolehskalaan satah data pada peranti moden? Jika kita melakukan LPM (padanan awalan terpanjang), semuanya agak baik, lebih 100k awalan. Jika kita bercakap tentang kumpulan Next Hop, maka semuanya lebih teruk, 2-4 ribu. Jika kita bercakap tentang jadual yang mengandungi perihalan Next Hops (atau adjacencies), maka ini adalah dari 16k hingga 64k. Dan ini boleh menjadi masalah. Dan di sini kita sampai kepada penyimpangan yang menarik: apa yang berlaku kepada MPLS di pusat data? Pada dasarnya, kami mahu melakukannya.

Bagaimana untuk menskala pusat data. Laporan Yandex

Dua perkara berlaku. Kami melakukan pembahagian mikro pada hos; kami tidak perlu lagi melakukannya pada rangkaian. Ia tidak begitu baik dengan sokongan daripada vendor yang berbeza, dan lebih-lebih lagi dengan pelaksanaan terbuka pada kotak putih dengan MPLS. Dan MPLS, sekurang-kurangnya pelaksanaan tradisionalnya, malangnya, digabungkan dengan sangat teruk dengan ECMP. Dan itulah sebabnya.

Bagaimana untuk menskala pusat data. Laporan Yandex

Inilah rupa struktur pemajuan ECMP untuk IP. Sebilangan besar awalan boleh menggunakan kumpulan yang sama dan blok Next Hops yang sama (atau bersebelahan, ini mungkin dipanggil secara berbeza dalam dokumentasi berbeza untuk peranti berbeza). Intinya ialah ini diterangkan sebagai port keluar dan apa yang perlu ditulis semula alamat MAC untuk sampai ke Next Hop yang betul. Untuk IP semuanya kelihatan mudah, anda boleh menggunakan bilangan awalan yang sangat besar untuk kumpulan yang sama, blok Next Hops yang sama.

Bagaimana untuk menskala pusat data. Laporan Yandex

Seni bina MPLS klasik membayangkan bahawa, bergantung pada antara muka keluar, label boleh ditulis semula kepada nilai yang berbeza. Oleh itu, kita perlu menyimpan kumpulan dan blok Next Hops untuk setiap label input. Dan ini, sayangnya, tidak skala.

Sangat mudah untuk melihat bahawa dalam reka bentuk kami, kami memerlukan kira-kira 4000 suis ToR, lebar maksimum ialah 64 laluan ECMP, jika kami beralih dari tulang belakang-1 ke arah tulang belakang-2. Kami hampir tidak masuk ke dalam satu jadual kumpulan ECMP, jika hanya satu awalan dengan ToR hilang, dan kami tidak masuk ke jadual Next Hops sama sekali.

Bagaimana untuk menskala pusat data. Laporan Yandex

Ini bukan semua sia-sia, kerana seni bina seperti Penghalaan Segmen melibatkan label global. Secara rasmi, semua blok Next Hops ini boleh diruntuhkan semula. Untuk melakukan ini, anda memerlukan operasi jenis kad liar: ambil label dan tulis semula kepada yang sama tanpa nilai tertentu. Tetapi malangnya, ini tidak begitu terdapat dalam pelaksanaan yang tersedia.

Dan akhirnya, kita perlu membawa trafik luaran ke pusat data. Bagaimana hendak melakukannya? Sebelum ini, trafik telah diperkenalkan ke dalam rangkaian Clos dari atas. Iaitu, terdapat penghala tepi yang disambungkan ke semua peranti di Bahagian Atas fabrik. Penyelesaian ini berfungsi dengan baik pada saiz kecil hingga sederhana. Malangnya, untuk menghantar trafik secara simetri ke seluruh rangkaian dengan cara ini, kita perlu tiba serentak pada semua elemen Bahagian Atas fabrik, dan apabila terdapat lebih daripada seratus daripadanya, ternyata kita juga memerlukan yang besar. radix pada penghala tepi. Secara umum, ini memerlukan wang, kerana penghala tepi lebih berfungsi, pelabuhan padanya akan lebih mahal, dan reka bentuknya tidak begitu cantik.

Pilihan lain ialah memulakan trafik sedemikian dari bawah. Adalah mudah untuk mengesahkan bahawa topologi Clos dibina sedemikian rupa sehingga trafik yang datang dari bawah, iaitu, dari bahagian ToR, diagihkan sama rata di antara peringkat di seluruh Bahagian Atas fabrik dalam dua lelaran, memuatkan keseluruhan rangkaian. Oleh itu, kami memperkenalkan jenis Pod khas, Edge Pod, yang menyediakan sambungan luaran.

Ada satu lagi pilihan. Inilah yang dilakukan oleh Facebook, sebagai contoh. Mereka memanggilnya Fabric Aggregator atau HGRID. Tahap tulang belakang tambahan sedang diperkenalkan untuk menyambungkan berbilang pusat data. Reka bentuk ini boleh dilakukan jika kita tidak mempunyai fungsi tambahan atau perubahan enkapsulasi pada antara muka. Jika ia adalah titik sentuh tambahan, ia sukar. Biasanya, terdapat lebih banyak fungsi dan sejenis membran yang memisahkan bahagian pusat data yang berlainan. Tidak ada gunanya membuat membran sedemikian besar, tetapi jika ia benar-benar diperlukan atas sebab tertentu, maka masuk akal untuk mempertimbangkan kemungkinan mengambilnya, menjadikannya selebar mungkin dan memindahkannya kepada tuan rumah. Ini dilakukan, sebagai contoh, oleh banyak pengendali awan. Mereka mempunyai tindanan, mereka bermula dari tuan rumah.

Bagaimana untuk menskala pusat data. Laporan Yandex

Apakah peluang pembangunan yang kita lihat? Pertama sekali, meningkatkan sokongan untuk saluran paip CI/CD. Kami mahu terbang dengan cara kami menguji dan menguji cara kami terbang. Ini tidak berfungsi dengan baik, kerana infrastrukturnya besar dan mustahil untuk menduplikasinya untuk ujian. Anda perlu memahami cara memperkenalkan elemen ujian ke dalam infrastruktur pengeluaran tanpa menjatuhkannya.

Instrumen yang lebih baik dan pemantauan yang lebih baik hampir tidak pernah berlebihan. Keseluruhan persoalan adalah keseimbangan usaha dan pulangan. Jika anda boleh menambahnya dengan usaha yang munasabah, sangat bagus.

Sistem pengendalian terbuka untuk peranti rangkaian. Protokol yang lebih baik dan sistem penghalaan yang lebih baik, seperti RIFT. Penyelidikan juga diperlukan dalam penggunaan skim kawalan kesesakan yang lebih baik dan mungkin pengenalan, sekurang-kurangnya pada beberapa titik, sokongan RDMA dalam kelompok.

Melihat lebih jauh ke masa hadapan, kami memerlukan topologi lanjutan dan mungkin rangkaian yang menggunakan kurang overhed. Daripada perkara baru, baru-baru ini terdapat penerbitan tentang teknologi fabrik untuk HPC Cray Slingshot, yang berasaskan Ethernet komoditi, tetapi dengan pilihan untuk menggunakan pengepala yang lebih pendek. Akibatnya, overhed dikurangkan.

Bagaimana untuk menskala pusat data. Laporan Yandex

Segala-galanya harus disimpan semudah mungkin, tetapi tidak lebih mudah. Kerumitan adalah musuh kebolehskalaan. Kesederhanaan dan struktur tetap adalah kawan kami. Jika anda boleh melakukan skala di suatu tempat, lakukannya. Dan secara umum, sangat bagus untuk terlibat dalam teknologi rangkaian sekarang. Terdapat banyak perkara menarik yang berlaku. Terima kasih.

Sumber: www.habr.com

Tambah komen