Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Upami infrastruktur IT anjeun tumbuh gancang teuing, anjeun engké atanapi engké bakal disanghareupan ku pilihan: ningkatkeun sumber daya manusa sacara linier pikeun ngadukung atanapi ngamimitian otomatis. Dugi ka sababaraha waktos, urang cicing dina paradigma anu munggaran, teras jalan panjang ka Infrastruktur-sakumaha-Kode dimimitian.

Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Tangtosna, NSPK sanés ngamimitian, tapi atmosfir sapertos kitu maréntah di perusahaan dina taun-taun mimiti ayana, sareng éta taun-taun anu pikaresepeun pisan. Nami abdi Kornyakov Dmitry, Kuring geus ngarojong infrastruktur Linux Ubuntu jeung syarat kasadiaan tinggi pikeun leuwih 10 taun. Anjeunna ngagabung tim NSPK dina Januari 2016 sarta, hanjakalna, teu ningali pisan awal ayana parusahaan, tapi datang dina tahap parobahan hébat.

Sacara umum, urang tiasa nyarios yén tim kami nyayogikeun 2 produk pikeun perusahaan. Anu kahiji nyaéta infrastruktur. Surat kedah jalan, DNS kedah dianggo, sareng pangendali domain kedah ngantepkeun anjeun kana server anu henteu kedah nabrak. Lansekap IT perusahaan ageung! Ieu mangrupikeun sistem kritis bisnis&misi, syarat kasadiaan pikeun sababaraha nyaéta 99,999. Produk kadua nyaéta server sorangan, fisik sareng virtual. Anu parantos aya kedah diawaskeun, sareng anu énggal kedah dikirimkeun sacara rutin ka para nasabah ti seueur departemén. Dina tulisan ieu kuring hoyong difokuskeun kumaha urang ngembangkeun infrastruktur anu tanggung jawab pikeun siklus kahirupan server.

Awal jalan

Dina awal perjalanan urang, tumpukan téknologi urang katingali sapertos kieu:
OS CentOS 7
Controllers Domain FreeIPA
Automation - Ansible (+ Munara), Cobbler

Sadaya ieu aya dina 3 domain, sumebar ka sababaraha pusat data. Dina hiji pusat data aya sistem kantor sareng situs uji, dina sésana aya PROD.

Nyiptakeun server dina hiji waktos katingali sapertos kieu:

Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Dina citakan VM, CentOS minimal sareng minimum anu diperyogikeun sapertos /etc/resolv.conf anu leres, sésana ngalangkungan Ansible.

CMDB - Excel.

Upami server fisik, teras tinimbang nyalin mesin virtual, OS dipasang dina éta nganggo Cobbler - alamat MAC tina server target ditambah kana konfigurasi Cobbler, server nampi alamat IP liwat DHCP, teras OS. ditambahkeun.

Awalna urang malah diusahakeun ngalakukeun sababaraha jenis manajemén konfigurasi di Cobbler. Tapi kana waktosna, ieu mimiti nyababkeun masalah sareng portabilitas konfigurasi boh ka pusat data anu sanés sareng kode Ansible pikeun nyiapkeun VM.

Dina waktos éta, seueur urang anu nganggap Ansible salaku penyambungan Bash anu saé sareng henteu ngahémat desain nganggo cangkang sareng sed. Gemblengna Bashsible. Ieu pamustunganana ngabalukarkeun kanyataan yén lamun playbook pikeun sababaraha alesan teu bisa dipake dina server, éta gampang mupus server, ngalereskeun playbook tur ngajalankeun deui. Dasarna henteu aya versi skrip, henteu aya portabilitas konfigurasi.

Salaku conto, urang hoyong ngarobih sababaraha konfigurasi dina sadaya server:

  1. Urang ngarobah konfigurasi dina server aya dina bagéan logis / puseur data. Kadang-kadang henteu dina hiji dinten - syarat aksesibilitas sareng hukum jumlah ageung henteu ngijinkeun sadaya parobihan diterapkeun sakaligus. Sareng sababaraha parobihan berpotensi ngarusak sareng peryogi ngamimitian deui - tina jasa ka OS sorangan.
  2. Ngalereskeunana di Ansible
  3. Urang ngalereskeun eta di Cobbler
  4. Ngulang N kali pikeun tiap bagéan logis / puseur data

Supados sadaya parobihan tiasa lancar, kedah diperhatoskeun seueur faktor, sareng parobihan lumangsung terus-terusan.

  • Refactoring kode ansible, file konfigurasi
  • Ngarobah prakték pangalusna internal
  • Parobahan dumasar kana hasil analisis kajadian/kacilakaan
  • Ngarobah standar kaamanan, duanana internal tur éksternal. Contona, PCI DSS diropéa kalawan sarat anyar unggal taun

Tumuwuhna infrastruktur sareng awal perjalanan

Jumlah server / domain logis / puseur data tumuwuh, sarta kalawan aranjeunna jumlah kasalahan dina konfigurasi. Dina sababaraha waktos, urang dugi ka tilu arah dimana manajemén konfigurasi kedah dikembangkeun:

  1. Otomatisasi. Kasalahan manusa dina operasi repetitive kedah dihindari saloba mungkin.
  2. Pangulangan. Éta langkung gampang pikeun ngatur infrastruktur nalika tiasa diprediksi. Konfigurasi server sareng alat pikeun persiapanna kedah sami di mana waé. Ieu ogé penting pikeun tim produk - sanggeus nguji, aplikasi nu kudu dijamin pikeun mungkas nepi di lingkungan produksi ngonpigurasi sarupa jeung lingkungan test.
  3. Kesederhanaan jeung transparansi nyieun parobahan manajemén konfigurasi.

Eta tetep pikeun nambahkeun sababaraha alat.

Kami milih GitLab CE salaku gudang kode kami, sahenteuna pikeun modul CI / CD anu diwangun.

Kolong Rahasia - Hashicorp Kolong, incl. pikeun API hébat.

Konfigurasi tés sareng peran ansible - Molekul + Testinfra. Tés langkung gancang upami anjeun nyambung ka mitogen ansible. Dina waktos anu sami, urang mimiti nyerat CMDB sareng orkestra sorangan pikeun panyebaran otomatis (dina gambar di luhur Cobbler), tapi ieu mangrupikeun carita anu béda-béda, anu bakal dicaritakeun ku batur sapagawean kuring sareng pamekar utama sistem ieu.

Pilihan urang:

Molekul + Testinfra
Ansible + munara + AWX
Dunya Server + DITNET (Pangembangan sorangan)
Tukang sapatu
Gitlab + GitLab runner
Kolong Hashicorp

Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Ku jalan kitu, ngeunaan peran ansible. Mimitina aya ngan hiji, tapi sanggeus sababaraha refactorings aya 17. Kuring niatna nyarankeun megatkeun monolith kana kalungguhan idempotent, nu lajeng bisa dijalankeun misah, tambahan, Anjeun bisa nambah tag. Kami ngabagi peran ku fungsionalitas - jaringan, logging, bungkusan, hardware, molekul jsb. Sacara umum, urang nuturkeun strategi di handap. Kuring teu keukeuh yén ieu téh hijina bebeneran, tapi digawé pikeun urang.

  • Nyalin server tina "gambar emas" jahat!The disadvantage utama nyaéta yén anjeun teu nyaho persis naon kaayaan gambar dina ayeuna, sarta yén sakabéh parobahanana bakal datang ka sadaya gambar dina sakabéh kebon virtualization.
  • Anggo file konfigurasi standar ka minimum sareng satuju sareng departemén sanés yén anjeun tanggung jawab kana file sistem utamaContona:
    1. Ninggalkeun /etc/sysctl.conf kosong, setélan ngan kedah di /etc/sysctl.d/. Standar anjeun dina hiji file, khusus pikeun aplikasi dina anu sanés.
    2. Anggo file override pikeun ngédit unit systemd.
  • Citakan sadaya konfigurasi sareng kalebet sadayana; upami mungkin, henteu aya séd atanapi analogna dina buku kaulinan
  • Refactoring kodeu sistem manajemen konfigurasi:
    1. Pegatkeun tugas kana éntitas logis sareng tulis ulang monolith kana peran
    2. Paké linters! Ansible-lint, yaml-lint, jsb
    3. Robah pendekatan anjeun! Taya bashsible. Ieu diperlukeun pikeun ngajelaskeun kaayaan sistem
  • Pikeun sadaya peran Ansible anjeun kedah nyerat tés dina molekul sareng ngahasilkeun laporan sakali sapoé.
  • Dina kasus urang, sanggeus Nyiapkeun tés (nu aya leuwih ti 100), ngeunaan 70000 kasalahan kapanggih. Butuh sababaraha bulan pikeun ngalereskeunana.Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Palaksanaan urang

Ku kituna, peran ansible geus siap, templated sarta dipariksa ku linters. Komo git digedékeun di mana waé. Tapi sual pangiriman kode dipercaya pikeun bagéan béda tetep kabuka. Urang mutuskeun pikeun nyingkronkeun sareng skrip. Sigana mah:

Ti "ngamimitian" nepi ka rébuan server dina belasan puseur data. Kumaha urang ngudag kamekaran infrastruktur Linux

Saatos parobihan parantos sumping, CI diluncurkeun, server uji diciptakeun, peran digulung, sareng diuji ku molekul. Lamun sagalana geus ok, kode mana kana cabang prod. Tapi kami henteu nerapkeun kode anyar pikeun server anu aya dina mesin. Ieu mangrupikeun jinis stopper anu dipikabutuh pikeun kasadiaan luhur sistem kami. Sareng nalika infrastruktur janten ageung, hukum jumlah ageung dimaénkeun - sanaos anjeun yakin yén parobihan éta henteu bahaya, éta tiasa nyababkeun akibat anu parah.

Aya ogé loba pilihan pikeun nyieun server. Urang réngsé milih skrip Python khusus. Sareng pikeun CI ansible:

- name: create1.yml - Create a VM from a template
  vmware_guest:
    hostname: "{{datacenter}}".domain.ru
    username: "{{ username_vc }}"
    password: "{{ password_vc }}"
    validate_certs: no
    cluster: "{{cluster}}"
    datacenter: "{{datacenter}}"
    name: "{{ name }}"
    state: poweredon
    folder: "/{{folder}}"
    template: "{{template}}"
    customization:
      hostname: "{{ name }}"
      domain: domain.ru
      dns_servers:
        - "{{ ipa1_dns }}"
        - "{{ ipa2_dns }}"
    networks:
      - name: "{{ network }}"
        type: static
        ip: "{{ip}}"
        netmask: "{{netmask}}"
        gateway: "{{gateway}}"
        wake_on_lan: True
        start_connected: True
        allow_guest_control: True
    wait_for_ip_address: yes
    disk:
      - size_gb: 1
        type: thin
        datastore: "{{datastore}}"
      - size_gb: 20
        type: thin
        datastore: "{{datastore}}"

Ieu naon kami geus datang ka, sistem terus hirup sarta ngamekarkeun.

  • 17 Peran ansible pikeun nyetél server. Masing-masing peran dirancang pikeun ngabéréskeun tugas logis anu misah (logging, auditing, otorisasi pangguna, ngawaskeun, jsb.).
  • Uji peran. Molekul + TestInfra.
  • ngembangkeun sorangan: CMDB + Orchestrator.
  • waktos kreasi server nyaeta ~ 30 menit, otomatis tur praktis bebas tina antrian tugas.
  • Kaayaan anu sami / nami prasarana dina sadaya bagéan - playbooks, repositories, elemen virtualisasi.
  • Pariksa poean status server kalawan generasi laporan on discrepancies kalawan standar.

Mugi-mugi carita abdi tiasa mangfaat kanggo anu nuju di awal perjalanan. Naon tumpukan otomatis anu anjeun anggo?

sumber: www.habr.com