Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

Jekk l-infrastruttura tal-IT tiegħek tikber malajr wisq, illum jew għada tkun iffaċċjat b'għażla: iżżid b'mod lineari r-riżorsi umani biex tappoġġjaha jew tibda l-awtomazzjoni. Sa ċertu punt, għexna fl-ewwel paradigma, u mbagħad bdiet it-triq twila għall-Infrastructure-as-Code.

Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

Naturalment, NSPK mhix startup, iżda atmosfera bħal din kienet isaltan fil-kumpanija fl-ewwel snin tal-eżistenza tagħha, u dawk kienu snin interessanti ħafna. Jien jisimni Kornyakov Dmitry, Ilni nappoġġja l-infrastruttura Linux b'rekwiżiti ta 'disponibbiltà għolja għal aktar minn 10 snin. Huwa ngħaqad mat-tim NSPK f'Jannar 2016 u, sfortunatament, ma rax il-bidu nett tal-eżistenza tal-kumpanija, iżda wasal fi stadju ta 'bidliet kbar.

B'mod ġenerali, nistgħu ngħidu li t-tim tagħna jipprovdi 2 prodotti għall-kumpanija. L-ewwel hija l-infrastruttura. Il-posta għandha taħdem, id-DNS għandha taħdem, u l-kontrolluri tad-dominju għandhom iħalluk fis-servers li m'għandhomx jiġġarrfu. Il-pajsaġġ tal-IT tal-kumpanija huwa enormi! Dawn huma sistemi kritiċi tan-negozju u tal-missjoni, ir-rekwiżiti tad-disponibbiltà għal xi wħud huma 99,999. It-tieni prodott huwa s-servers infushom, fiżiċi u virtwali. Dawk eżistenti jeħtieġ li jiġu mmonitorjati, u oħrajn ġodda għandhom jiġu kkunsinnati regolarment lill-klijenti minn ħafna dipartimenti. F'dan l-artikolu nixtieq niffoka fuq kif żviluppajna l-infrastruttura li hija responsabbli għaċ-ċiklu tal-ħajja tas-server.

Il-bidu tat-triq

Fil-bidu tal-vjaġġ tagħna, il-munzell tat-teknoloġija tagħna kien jidher bħal dan:
OS CentOS 7
Kontrolluri tad-Dominju FreeIPA
Awtomazzjoni - Ansible(+Tower), Cobbler

Dan kollu kien jinsab fi 3 oqsma, mifruxa fuq diversi ċentri tad-dejta. F'ċentru tad-dejta wieħed hemm sistemi ta 'uffiċċju u siti ta' ttestjar, fil-bqija hemm PROD.

Il-ħolqien ta' servers f'punt wieħed deher bħal dan:

Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

Fil-mudell VM, CentOS huwa minimu u l-minimu meħtieġ huwa bħall-/etc/resolv.conf korrett, il-bqija jiġi permezz ta 'Ansible.

CMDB - Excel.

Jekk is-server huwa fiżiku, allura minflok ma tikkopja l-magna virtwali, l-OS ġie installat fuqha bl-użu ta 'Cobbler - l-indirizzi MAC tas-server fil-mira huma miżjuda mal-konfigurazzjoni Cobbler, is-server jirċievi indirizz IP permezz ta' DHCP, u mbagħad l-OS huwa miżjud.

Għall-ewwel anke ppruvajna nagħmlu xi tip ta 'ġestjoni tal-konfigurazzjoni f'Cobbler. Iżda maż-żmien, dan beda jġib problemi bil-portabbiltà tal-konfigurazzjonijiet kemm għal ċentri tad-dejta oħra kif ukoll għall-kodiċi Ansible għall-preparazzjoni tal-VMs.

F'dak iż-żmien, ħafna minna ħassew lil Ansible bħala estensjoni konvenjenti ta 'Bash u ma skimp fuq disinji li jużaw shell u sed. B'mod ġenerali Bashsible. Dan fl-aħħar wassal għall-fatt li jekk il-playbook għal xi raġuni ma jaħdimx fuq is-server, kien aktar faċli li tħassar is-server, tiffissa l-playbook u terġa 'tħaddem. Essenzjalment ma kien hemm l-ebda verżjoni tal-iskripts, l-ebda portabbiltà tal-konfigurazzjonijiet.

Pereżempju, ridna nibdlu xi konfigurazzjoni fuq is-servers kollha:

  1. Aħna nibdlu l-konfigurazzjoni fuq servers eżistenti fis-segment loġiku/ċentru tad-dejta. Xi drabi mhux f'ġurnata waħda - ir-rekwiżiti ta 'aċċessibilità u l-liġi ta' numri kbar ma jippermettux li l-bidliet kollha jiġu applikati f'daqqa. U xi bidliet huma potenzjalment distruttivi u jeħtieġu li terġa 'tibda xi ħaġa - mis-servizzi għall-OS innifsu.
  2. Iffissarha f'Ansible
  3. Aħna nirranġawha f'Cobbler
  4. Irrepeti N darbiet għal kull segment loġiku/ċentru tad-dejta

Sabiex il-bidliet kollha jimxu bla xkiel, kien meħtieġ li jitqiesu ħafna fatturi, u l-bidliet iseħħu kontinwament.

  • Refactoring kodiċi ansible, fajls ta 'konfigurazzjoni
  • Nibdlu l-aħjar prattiki interni
  • Bidliet ibbażati fuq ir-riżultati tal-analiżi tal-inċidenti/inċidenti
  • Nibdlu l-istandards tas-sigurtà, kemm interni kif ukoll esterni. Pereżempju, PCI DSS jiġi aġġornat b'rekwiżiti ġodda kull sena

It-tkabbir fl-infrastruttura u l-bidu tal-vjaġġ

In-numru ta 'servers/dominji loġiċi/ċentri tad-dejta kiber, u magħhom in-numru ta' żbalji fil-konfigurazzjonijiet. F'xi punt, wasalna għal tliet direzzjonijiet li fihom jeħtieġ li tiġi żviluppata l-ġestjoni tal-konfigurazzjoni:

  1. Awtomazzjoni. L-iżball uman f'operazzjonijiet ripetittivi għandu jiġi evitat kemm jista' jkun.
  2. Ripetibbiltà. Huwa ħafna aktar faċli li timmaniġġja l-infrastruttura meta tkun prevedibbli. Il-konfigurazzjoni tas-servers u l-għodda għall-preparazzjoni tagħhom għandha tkun l-istess kullimkien. Dan huwa importanti wkoll għat-timijiet tal-prodott - wara l-ittestjar, l-applikazzjoni għandha tkun garantita li tispiċċa f'ambjent ta 'produzzjoni kkonfigurat b'mod simili għall-ambjent tat-test.
  3. Sempliċità u trasparenza biex isiru bidliet għall-ġestjoni tal-konfigurazzjoni.

Fadal li żżid ftit għodod.

Aħna għażilna GitLab CE bħala r-repożitorju tal-kodiċi tagħna, mhux l-inqas għall-moduli CI/CD integrati tiegħu.

Vault ta 'sigrieti - Hashicorp Vault, incl. għall-API kbira.

Konfigurazzjonijiet tal-ittestjar u rwoli ansible – Molecule+Testinfra. It-testijiet imorru ħafna aktar malajr jekk tikkonnettja ma 'mitogen ansible. Fl-istess ħin, bdejna niktbu CMDB u orkestratur tagħna stess għall-iskjerament awtomatiku (fl-istampa ta 'hawn fuq Cobbler), iżda din hija storja kompletament differenti, li l-kollega tiegħi u l-iżviluppatur ewlieni ta' dawn is-sistemi se jgħidu fil-futur.

L-għażla tagħna:

Molekula + Testinfra
Ansible + Torri + AWX
Dinja tas-Servers + DITNET (Żvilupp proprju)
Cobbler
Gitlab + GitLab runner
Hashicorp Vault

Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

Mill-mod, dwar ir-rwoli ansible. Għall-ewwel kien hemm wieħed biss, iżda wara diversi refactorings kien hemm minnhom 17. Nirrakkomanda bil-qawwa li tkisser il-monolith f'rwoli idempotenti, li mbagħad jistgħu jiġu mnedija separatament, barra minn hekk, tista 'żżid tikketti. Qsamna r-rwoli skont il-funzjonalità - netwerk, illoggjar, pakketti, hardware, molekula eċċ. B'mod ġenerali, segwejna l-istrateġija hawn taħt. Ma ninsistix li din hija l-unika verità, iżda ħadmet għalina.

  • Ikkopjar servers mill-"immaġni tad-deheb" huwa ħażin!L-iżvantaġġ ewlieni huwa li ma tafx eżattament f'liema stat jinsabu l-immaġini issa, u li l-bidliet kollha se jaslu għall-immaġini kollha fl-irziezet kollha tal-virtwalizzazzjoni.
  • Uża l-fajls tal-konfigurazzjoni default għall-minimu u taqbel ma' dipartimenti oħra li inti responsabbli għall-fajls tas-sistema prinċipaliper eżempju:
    1. Ħalli /etc/sysctl.conf vojt, is-settings għandhom ikunu biss f'/etc/sysctl.d/. Default tiegħek f'fajl wieħed, personalizzat għall-applikazzjoni f'ieħor.
    2. Uża fajls override biex teditja unitajiet systemd.
  • Istampa l-konfigurazzjonijiet kollha u inkludihom kollha; jekk possibbli, l-ebda sed jew l-analogi tiegħu fil-playbooks
  • Rifactoring tal-kodiċi tas-sistema tal-ġestjoni tal-konfigurazzjoni:
    1. Aqsam il-kompiti f'entitajiet loġiċi u erġa' ikteb il-monolith fi rwoli
    2. Uża linters! Ansible-lint, yaml-lint, eċċ
    3. Ibdel l-approċċ tiegħek! Ebda bashsible. Huwa meħtieġ li jiġi deskritt l-istat tas-sistema
  • Għar-rwoli kollha Ansible għandek bżonn tikteb testijiet fil-molekula u tiġġenera rapporti darba kuljum.
  • Fil-każ tagħna, wara li ppreparaw it-testijiet (li minnhom hemm aktar minn 100), instabu madwar 70000 żball. Dam diversi xhur biex jirranġaha.Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

L-implimentazzjoni tagħna

Allura, ir-rwoli ansible kienu lesti, mudellati u kkontrollati minn linters. U anke gits jitrabbew kullimkien. Iżda l-kwistjoni tal-kunsinna ta 'kodiċi affidabbli għal segmenti differenti baqgħet miftuħa. Iddeċidejna li nissinkronizzaw mal-iskripts. Jidher hekk:

Minn "startup" għal eluf ta 'servers f'tużżana ċentri tad-dejta. Kif ġejna t-tkabbir tal-infrastruttura tal-Linux

Wara li tasal il-bidla, CI titnieda, jinħoloq server tat-test, ir-rwoli jiġu mxerrda, u ttestjati mill-molekula. Jekk kollox huwa ok, il-kodiċi tmur għall-fergħa prod. Iżda aħna ma napplikawx kodiċi ġdid għal servers eżistenti fil-magna. Dan huwa tip ta 'tapp li huwa meħtieġ għal disponibbiltà għolja tas-sistemi tagħna. U meta l-infrastruttura ssir enormi, tidħol fis-seħħ il-liġi tan-numri kbar – anki jekk tkun ċert li l-bidla ma tagħmilx ħsara, tista’ twassal għal konsegwenzi koroh.

Hemm ukoll ħafna għażliet għall-ħolqien ta 'servers. Spiċċajna għażilna skripts Python personalizzati. U għal 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}}"

Dan hu li wasalna għalih, is-sistema tkompli tgħix u tiżviluppa.

  • 17 Rwoli Ansible għat-twaqqif tas-server. Kull wieħed mir-rwoli huwa ddisinjat biex isolvi kompitu loġiku separat (logging, verifika, awtorizzazzjoni tal-utent, monitoraġġ, eċċ.).
  • Ittestjar tar-rwol. Molekula + TestInfra.
  • Żvilupp proprju: CMDB + Orkestratur.
  • Il-ħin tal-ħolqien tas-server huwa ta '~30 minuta, awtomatizzat u prattikament indipendenti mill-kju tal-kompiti.
  • L-istess stat/isem tal-infrastruttura fis-segmenti kollha - playbooks, repożitorji, elementi ta 'virtwalizzazzjoni.
  • Kontroll ta 'kuljum tal-istatus tas-server bil-ġenerazzjoni ta' rapporti dwar diskrepanzi mal-istandard.

Nittama li l-istorja tiegħi tkun utli għal dawk li qegħdin fil-bidu tal-vjaġġ tagħhom. Liema munzell ta 'awtomazzjoni tuża?

Sors: www.habr.com