4 jurutera, 7000 pelayan dan satu wabak global

Hello, Habr! Saya membentangkan kepada anda terjemahan artikel "4 Jurutera, 7000 Pelayan, Dan Satu Pandemik Global" oleh Adib Daw.

Jika tajuk itu tidak menggigilkan sedikit tulang belakang anda, anda harus melangkau ke perenggan seterusnya atau lawati halaman kami yang khusus untuk kerjaya dalam syarikat - kami ingin bercakap.

Siapa kita

Kami adalah pasukan 4 penguin yang suka menulis kod dan bekerja dengan perkakasan. Pada masa lapang, kami bertanggungjawab untuk mengerahkan, menyelenggara dan mengendalikan kumpulan lebih 7000 pelayan fizikal yang menjalankan Linux, diedarkan di 3 pusat data yang berbeza di seluruh Amerika Syarikat.

Kami juga berpeluang melakukan ini 10 km dari tapak, dari keselesaan pejabat kami sendiri, yang terletak dalam jarak pemanduan singkat dari pantai di Laut Mediterranean.

Masalah skala

Walaupun masuk akal untuk permulaan bermula dengan mengehos infrastrukturnya di awan kerana pelaburan awal yang agak rendah, kami di Outbrain memutuskan untuk menggunakan pelayan kami sendiri. Kami melakukan ini kerana kos infrastruktur awan jauh melebihi kos mengendalikan peralatan kami sendiri yang terletak di pusat data selepas pembangunan ke tahap tertentu. Di samping itu, pelayan anda menyediakan tahap tertinggi kawalan dan keupayaan menyelesaikan masalah.

Semasa kita berkembang, masalah sentiasa dekat. Lebih-lebih lagi, mereka biasanya datang secara berkumpulan. Pengurusan kitaran hayat pelayan memerlukan peningkatan diri yang berterusan agar dapat berfungsi dengan baik dalam konteks peningkatan pesat dalam bilangan pelayan. Kaedah perisian untuk menguruskan kumpulan pelayan di pusat data dengan cepat menjadi sukar digunakan. Mengesan, menyelesaikan masalah dan mengurangkan kegagalan semasa memenuhi piawaian QoS menjadi masalah untuk menyesuaikan tatasusunan perkakasan yang sangat pelbagai, beban kerja yang berbeza-beza, tarikh akhir naik taraf dan perkara menarik lain yang tidak mahu dibimbangkan oleh sesiapa pun.

Kuasai Domain anda

Untuk menyelesaikan banyak masalah ini, kami memecahkan kitaran hayat pelayan dalam Outbrain kepada komponen utamanya dan memanggilnya domain. Contohnya, satu domain meliputi keperluan peralatan, satu lagi meliputi logistik yang berkaitan dengan kitaran hayat inventori, dan satu domain yang ketiga meliputi komunikasi dengan kakitangan lapangan. Terdapat satu lagi mengenai kebolehcerapan perkakasan, tetapi kami tidak akan menerangkan semua perkara. Matlamat kami adalah untuk mengkaji dan mentakrifkan domain supaya ia boleh diabstrak menggunakan kod. Setelah abstraksi berfungsi dibangunkan, ia dipindahkan ke proses manual yang digunakan, diuji dan diperhalusi. Akhir sekali, domain dikonfigurasikan untuk disepadukan dengan domain lain melalui API, membentuk sistem kitaran hayat perkakasan holistik, dinamik dan sentiasa berkembang yang boleh digunakan, boleh diuji dan boleh diperhatikan. Sama seperti semua sistem pengeluaran kami yang lain.

Mengguna pakai pendekatan ini membolehkan kami menyelesaikan banyak masalah dengan betul - dengan mencipta alatan dan automasi.

Perlukan Domain

Walaupun e-mel dan hamparan merupakan cara yang berdaya maju untuk memenuhi permintaan pada masa awal, ia bukanlah penyelesaian yang berjaya, terutamanya apabila bilangan pelayan dan jumlah permintaan masuk mencapai tahap tertentu. Untuk mengatur dan mengutamakan permintaan masuk dengan lebih baik dalam menghadapi perkembangan pesat, kami terpaksa menggunakan sistem tiket yang boleh menawarkan:

  • Keupayaan untuk menyesuaikan paparan medan yang berkaitan sahaja (mudah)
  • Buka API (boleh dilanjutkan)
  • Diketahui oleh pasukan kami (faham)
  • Penyepaduan dengan aliran kerja sedia ada kami (bersatu)

Memandangkan kami menggunakan Jira untuk menguruskan larian pecut dan tugas dalaman kami, kami memutuskan untuk mencipta projek lain yang akan membantu pelanggan kami menyerahkan tiket dan menjejaki keputusan mereka. Menggunakan Jira untuk permintaan masuk dan untuk mengurus tugas dalaman membolehkan kami mencipta papan Kanban tunggal yang membolehkan kami melihat semua proses secara keseluruhan. "Pelanggan" dalaman kami hanya melihat permintaan untuk peralatan, tanpa menyelidiki butiran tugas tambahan yang kurang penting (seperti menambah baik alatan, membetulkan pepijat).

4 jurutera, 7000 pelayan dan satu wabak global
Papan Kanban di Jira

Sebagai bonus, hakikat bahawa baris gilir dan keutamaan kini dapat dilihat oleh semua orang membolehkan untuk memahami "di mana dalam baris gilir" permintaan tertentu dan perkara yang mendahuluinya. Ini membolehkan pemilik mengutamakan semula permintaan mereka sendiri tanpa perlu menghubungi kami. Seret dan itu sahaja. Ia juga membolehkan kami memantau dan menilai SLA kami mengikut jenis permintaan berdasarkan metrik yang dijana dalam Jira.

Domain Kitar Hayat Peralatan

Cuba bayangkan kerumitan mengurus perkakasan yang digunakan dalam setiap rak pelayan. Apa yang lebih teruk ialah banyak perkakasan (RAM, ROM) boleh dialihkan dari gudang ke bilik pelayan dan belakang. Ia juga gagal atau dihapus kira dan diganti dan dikembalikan kepada pembekal untuk penggantian/pembaikan. Semua ini mesti dimaklumkan kepada pekerja perkhidmatan colocation yang terlibat dalam penyelenggaraan fizikal peralatan. Untuk menyelesaikan masalah ini, kami mencipta alat dalaman yang dipanggil Floppy. Tugas beliau ialah:

  • Pengurusan komunikasi dengan kakitangan lapangan, pengagregatan semua maklumat;
  • Mengemas kini data "gudang" selepas setiap kerja penyelenggaraan peralatan selesai dan disahkan.

Gudang itu pula divisualisasikan menggunakan Grafana, yang kami gunakan untuk merancang semua metrik kami. Oleh itu, kami menggunakan alat yang sama untuk visualisasi gudang dan untuk keperluan pengeluaran lain.

4 jurutera, 7000 pelayan dan satu wabak globalPanel kawalan peralatan gudang di Grafana

Untuk peranti pelayan yang dalam jaminan, kami menggunakan alat lain yang kami panggil Dispatcher. dia:

  • Mengumpul log sistem;
  • Menghasilkan laporan dalam format yang diperlukan oleh vendor;
  • Mencipta permintaan daripada vendor melalui API;
  • Menerima dan menyimpan pengecam aplikasi untuk penjejakan lanjut kemajuannya.

Setelah tuntutan kami diterima (biasanya dalam waktu perniagaan), alat ganti dihantar ke pusat data yang sesuai dan diterima oleh kakitangan.

4 jurutera, 7000 pelayan dan satu wabak global
Output konsol Jenkins

Domain Komunikasi

Untuk bersaing dengan pertumbuhan pesat perniagaan kami, yang memerlukan kapasiti yang sentiasa meningkat, kami terpaksa menyesuaikan cara kami bekerja dengan pakar teknikal di pusat data tempatan. Jika pada mulanya peningkatan bermakna membeli pelayan baharu, maka selepas projek penyatuan (berdasarkan peralihan kepada Kubernetes) ia menjadi sesuatu yang berbeza sama sekali. Evolusi kami daripada "menambah rak" kepada "pelayan guna semula."

Menggunakan pendekatan baharu juga memerlukan alatan baharu yang membolehkan anda berinteraksi dengan lebih selesa dengan kakitangan pusat data. Alat ini diperlukan untuk:

  • Kesederhanaan;
  • Autonomi;
  • Kecekapan;
  • Kebolehpercayaan.

Kami terpaksa mengecualikan diri kami daripada rantaian dan menstrukturkan kerja supaya juruteknik boleh terus bekerja dengan peralatan pelayan. Tanpa campur tangan kami dan tanpa selalu membangkitkan semua isu ini mengenai beban kerja, waktu kerja, ketersediaan peralatan, dsb.

Untuk mencapai matlamat ini, kami memasang iPad di setiap pusat data. Selepas menyambung ke pelayan, perkara berikut akan berlaku:

  • Peranti mengesahkan bahawa pelayan ini sememangnya memerlukan kerja;
  • Aplikasi yang berjalan pada pelayan ditutup (jika perlu);
  • Satu set arahan kerja disiarkan pada saluran Slack yang menerangkan langkah-langkah yang diperlukan;
  • Setelah selesai kerja, peranti menyemak ketepatan keadaan akhir pelayan;
  • Mulakan semula aplikasi jika perlu.

Selain itu, kami juga menyediakan bot Slack untuk membantu juruteknik. Terima kasih kepada pelbagai keupayaan (kami sentiasa mengembangkan fungsi), bot memudahkan kerja mereka dan menjadikan hidup kami lebih mudah. Dengan cara ini, kami mengoptimumkan sebahagian besar proses penggunaan semula dan penyelenggaraan pelayan, menghapuskan diri kami daripada aliran kerja.

4 jurutera, 7000 pelayan dan satu wabak global
iPad di salah satu pusat data kami

Domain Perkakasan

Menskala infrastruktur pusat data kami dengan pasti memerlukan keterlihatan yang baik ke dalam setiap komponen, contohnya:

  • Pengesanan kegagalan perkakasan
  • Keadaan pelayan (aktif, dihoskan, zombi, dll.)
  • Penggunaan Kuasa
  • Versi perisian tegar
  • Analitis untuk keseluruhan perniagaan ini

Penyelesaian kami membolehkan kami membuat keputusan tentang cara, di mana dan bila untuk membeli peralatan, kadang kala sebelum ia benar-benar diperlukan. Selain itu, dengan menentukan tahap beban pada peralatan yang berbeza, kami dapat mencapai peruntukan sumber yang lebih baik. Khususnya, penggunaan tenaga. Kami kini boleh membuat keputusan termaklum tentang penempatan pelayan sebelum ia dipasang dalam rak dan disambungkan kepada sumber kuasa, sepanjang kitaran hayatnya dan sehingga pesara akhirnya.

4 jurutera, 7000 pelayan dan satu wabak global
Papan Pemuka Tenaga di Grafana

Dan kemudian COVID-19 muncul...

Pasukan kami mencipta teknologi yang memperkasakan syarikat media dan penerbit dalam talian untuk membantu pelawat mencari kandungan, produk dan perkhidmatan yang berkaitan yang mungkin menarik minat mereka. Infrastruktur kami direka bentuk untuk melayani trafik yang dihasilkan apabila beberapa berita menarik dikeluarkan.

Liputan media yang sengit seputar COVID-19, ditambah dengan peningkatan trafik, bermakna kami perlu segera mempelajari cara menangani tekanan ini. Lebih-lebih lagi, semua ini perlu dilakukan semasa krisis global, apabila rantaian bekalan terganggu dan kebanyakan kakitangan berada di rumah.

Tetapi, seperti yang kami katakan, model kami sudah menganggap bahawa:

  • Peralatan di pusat data kami, sebahagian besarnya, secara fizikal tidak boleh diakses oleh kami;
  •  Kami melakukan hampir semua kerja fizikal dari jauh;
  • Kerja dilakukan secara tak segerak, autonomi dan secara besar-besaran;
  • Kami memenuhi permintaan untuk peralatan menggunakan kaedah "bina daripada bahagian" dan bukannya membeli peralatan baharu;
  • Kami mempunyai gudang yang membolehkan kami mencipta sesuatu yang baharu, dan bukan hanya menjalankan pembaikan rutin.

Oleh itu, sekatan global yang menghalang banyak syarikat daripada mendapatkan akses fizikal ke pusat data mereka memberi sedikit kesan kepada kami. Dan bagi alat ganti dan pelayan, ya, kami cuba memastikan operasi peralatan yang stabil. Tetapi ini dilakukan dengan tujuan untuk mengelakkan kejadian yang mungkin berlaku apabila tiba-tiba ternyata beberapa perkakasan tidak tersedia. Kami memastikan rizab kami diisi tanpa bertujuan untuk memenuhi permintaan semasa.

Ringkasnya, saya ingin mengatakan bahawa pendekatan kami untuk bekerja dalam industri pusat data membuktikan bahawa adalah mungkin untuk menggunakan prinsip reka bentuk kod yang baik kepada pengurusan fizikal pusat data. Dan mungkin anda akan mendapati ia menarik.

Asal: tyts

Sumber: www.habr.com

Tambah komen