O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Os bydd eich seilwaith TG yn tyfu'n rhy gyflym, yn hwyr neu'n hwyrach byddwch yn wynebu dewis: cynyddu adnoddau dynol yn llinol i'w gefnogi neu ddechrau awtomeiddio. Hyd at ryw bwynt, roeddem yn byw yn y patrwm cyntaf, ac yna dechreuodd y llwybr hir i Seilwaith-fel-Cod.

O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Wrth gwrs, nid busnes cychwynnol yw NSPK, ond roedd awyrgylch o'r fath yn teyrnasu yn y cwmni ym mlynyddoedd cyntaf ei fodolaeth, ac roedd y rheini'n flynyddoedd diddorol iawn. Fy enw i yw Kornyakov Dmitry, Rwyf wedi bod yn cefnogi seilwaith Linux gyda gofynion argaeledd uchel ers dros 10 mlynedd. Ymunodd â thîm NSPK ym mis Ionawr 2016 ac, yn anffodus, ni welodd ddechrau bodolaeth y cwmni, ond daeth ar gyfnod o newidiadau mawr.

Yn gyffredinol, gallwn ddweud bod ein tîm yn cyflenwi 2 gynnyrch ar gyfer y cwmni. Y cyntaf yw seilwaith. Dylai post weithio, dylai DNS weithio, a dylai rheolwyr parth eich gadael i mewn i weinyddion na ddylai ddamwain. Mae tirwedd TG y cwmni yn enfawr! Mae'r rhain yn systemau busnes a chenhadaeth hanfodol, a'r gofynion argaeledd ar gyfer rhai yw 99,999. Yr ail gynnyrch yw'r gweinyddwyr eu hunain, corfforol a rhithwir. Mae angen monitro'r rhai presennol, a rhaid danfon rhai newydd yn rheolaidd i gwsmeriaid o lawer o adrannau. Yn yr erthygl hon rwyf am ganolbwyntio ar sut y gwnaethom ddatblygu'r seilwaith sy'n gyfrifol am gylchred oes y gweinydd.

Dechrau o daith

Ar ddechrau ein taith, roedd ein pentwr technoleg yn edrych fel hyn:
OS CentOS 7
Rheolyddion Parth FreeIPA
Awtomeiddio - Atebol (+ Tŵr), Crydd

Roedd hyn i gyd wedi'i leoli mewn 3 pharth, wedi'i wasgaru ar draws sawl canolfan ddata. Mewn un ganolfan ddata mae systemau swyddfa a safleoedd prawf, yn y gweddill mae PROD.

Roedd creu gweinyddwyr ar un adeg yn edrych fel hyn:

O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Yn y templed VM, mae CentOS yn fach iawn ac mae'r lleiafswm gofynnol fel y cywir /etc/resolv.conf, daw'r gweddill trwy Ansible.

CMDB - Excel.

Os yw'r gweinydd yn gorfforol, yna yn lle copïo'r peiriant rhithwir, gosodwyd yr OS arno gan ddefnyddio Cobbler - mae cyfeiriadau MAC y gweinydd targed yn cael eu hychwanegu at ffurfwedd Cobbler, mae'r gweinydd yn derbyn cyfeiriad IP trwy DHCP, ac yna'r OS yn cael ei ychwanegu.

Ar y dechrau fe wnaethom hyd yn oed geisio gwneud rhyw fath o reolaeth cyfluniad yn Cobbler. Ond dros amser, dechreuodd hyn ddod â phroblemau gyda hygludedd ffurfweddiadau i ganolfannau data eraill ac i'r cod Ansible ar gyfer paratoi VMs.

Bryd hynny, roedd llawer ohonom yn gweld Ansible fel estyniad cyfleus o Bash ac ni wnaethom anwybyddu dyluniadau gan ddefnyddio cragen a sed. Bashsible cyffredinol. Arweiniodd hyn yn y pen draw at y ffaith pe na bai'r llyfr chwarae am ryw reswm yn gweithio ar y gweinydd, roedd yn haws dileu'r gweinydd, trwsio'r llyfr chwarae a'i redeg eto. Yn y bôn, nid oedd unrhyw fersiynau o sgriptiau, dim hygludedd ffurfweddiadau.

Er enghraifft, roeddem am newid rhywfaint o gyfluniad ar bob gweinydd:

  1. Rydym yn newid y ffurfweddiad ar weinyddion presennol yn y segment rhesymegol/canolfan ddata. Weithiau nid mewn un diwrnod - nid yw gofynion hygyrchedd a chyfraith niferoedd mawr yn caniatáu i bob newid gael ei gymhwyso ar unwaith. Ac mae rhai newidiadau o bosibl yn ddinistriol ac mae angen ailgychwyn rhywbeth - o wasanaethau i'r OS ei hun.
  2. Ei drwsio yn Ansible
  3. Rydym yn ei drwsio yn Cobbler
  4. Ailadrodd N amseroedd ar gyfer pob segment rhesymegol/canolfan ddata

Er mwyn i'r holl newidiadau fynd yn esmwyth, roedd angen ystyried llawer o ffactorau, ac mae newidiadau'n digwydd yn gyson.

  • Refactoring cod ansible, ffeiliau ffurfweddu
  • Newid arferion gorau mewnol
  • Newidiadau yn seiliedig ar ganlyniadau dadansoddiad o ddigwyddiadau/damweiniau
  • Newid safonau diogelwch, yn fewnol ac yn allanol. Er enghraifft, mae PCI DSS yn cael ei ddiweddaru gyda gofynion newydd bob blwyddyn

Twf seilwaith a dechrau'r daith

Tyfodd nifer y gweinyddwyr/parthau rhesymegol/canolfannau data, a chyda nhw nifer y gwallau mewn ffurfweddiadau. Ar ryw adeg, daethom i dri chyfeiriad lle mae angen datblygu rheolaeth cyfluniad:

  1. Awtomatiaeth. Dylid osgoi gwallau dynol mewn gweithrediadau ailadroddus cymaint â phosibl.
  2. Ailadroddadwyedd. Mae'n llawer haws rheoli seilwaith pan fo'n rhagweladwy. Dylai cyfluniad gweinyddwyr ac offer ar gyfer eu paratoi fod yr un fath ym mhobman. Mae hyn hefyd yn bwysig i dimau cynnyrch - ar ôl profi, rhaid gwarantu y bydd y cais yn dod i ben mewn amgylchedd cynhyrchu wedi'i ffurfweddu'n debyg i'r amgylchedd prawf.
  3. Symlrwydd a thryloywder gwneud newidiadau i reolaeth cyfluniad.

Mae'n aros i ychwanegu cwpl o offer.

Fe wnaethom ddewis GitLab CE fel ein storfa god, yn anad dim ar gyfer ei fodiwlau CI/CD adeiledig.

Vault o gyfrinachau - Hashicorp Vault, gan gynnwys. ar gyfer yr API gwych.

Profi ffurfweddiadau a rolau ymarferol – Molecule+Testinfra. Mae profion yn mynd yn llawer cyflymach os ydych chi'n cysylltu â mitogen anible. Ar yr un pryd, dechreuon ni ysgrifennu ein CMDB a'n cerddorfa ein hunain i'w defnyddio'n awtomatig (yn y llun uchod Cobbler), ond mae hon yn stori hollol wahanol, y bydd fy nghydweithiwr a phrif ddatblygwr y systemau hyn yn ei hadrodd yn y dyfodol.

Ein dewis:

Moleciwl + Testinfra
Atebol + Twr + AWX
World of Servers + DITNET (Datblygiad eich hun)
Crydd
Gitlab + rhedwr GitLab
Hashicorp Vault

O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Gyda llaw, am rolau anible. Ar y dechrau dim ond un oedd, ond ar ôl sawl ailffactorio cafwyd 17 ohonynt. Rwy'n argymell yn gryf torri'r monolith yn rolau analluog, y gellir eu lansio ar wahân wedyn; yn ogystal, gallwch ychwanegu tagiau. Rhannwyd y rolau yn ôl swyddogaeth - rhwydwaith, logio, pecynnau, caledwedd, moleciwl ac ati. Yn gyffredinol, dilynwyd y strategaeth isod. Dydw i ddim yn mynnu mai dyma'r unig wirionedd, ond fe weithiodd i ni.

  • Mae copïo gweinyddwyr o'r “delwedd aur” yn ddrwg!Y brif anfantais yw nad ydych chi'n gwybod yn union beth yw cyflwr y delweddau nawr, ac y bydd pob newid yn dod i bob delwedd ym mhob fferm rhithwiroli.
  • Defnyddiwch y ffeiliau ffurfweddu rhagosodedig i'r lleiafswm a chytunwch ag adrannau eraill mai chi sy'n gyfrifol am y prif ffeiliau system, er enghraifft:
    1. Gadewch /etc/sysctl.conf yn wag, dim ond yn /etc/sysctl.d/ y dylai'r gosodiadau fod. Eich rhagosodiad mewn un ffeil, wedi'i haddasu ar gyfer y rhaglen mewn ffeil arall.
    2. Defnyddiwch wrthwneud ffeiliau i olygu unedau system.
  • Templed pob ffurfwedd a'u cynnwys yn gyfan gwbl; os yn bosibl, dim sed na'i analogau mewn llyfrau chwarae
  • Ailffactorio cod y system rheoli cyfluniad:
    1. Rhannwch dasgau yn endidau rhesymegol ac ailysgrifennu'r monolith yn rolau
    2. Defnyddiwch linters! Ansible-lint, yaml-lint, etc
    3. Newidiwch eich dull! Dim bashsible. Mae angen disgrifio cyflwr y system
  • Ar gyfer pob rôl Ansible mae angen i chi ysgrifennu profion mewn moleciwl a chynhyrchu adroddiadau unwaith y dydd.
  • Yn ein hachos ni, ar ôl paratoi'r profion (y mae mwy na 100 ohonynt), canfuwyd tua 70000 o wallau. Cymerodd sawl mis i'w drwsio.O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Ein gweithrediad

Felly, roedd y rolau cyfrifol yn barod, wedi'u templedi a'u gwirio â linters. Ac mae hyd yn oed gits yn cael eu codi ym mhobman. Ond arhosodd y cwestiwn o gyflwyno cod dibynadwy i wahanol segmentau yn agored. Fe benderfynon ni gydamseru gyda sgriptiau. Edrych fel hyn:

O “gychwyniad” i filoedd o weinyddion mewn dwsin o ganolfannau data. Sut Aethon ni ar Erlid Twf Seilwaith Linux

Ar ôl i'r newid gyrraedd, mae CI yn cael ei lansio, gweinydd prawf yn cael ei greu, rolau yn cael eu cyflwyno, a'u profi gan y moleciwl. Os yw popeth yn iawn, mae'r cod yn mynd i'r gangen prod. Ond nid ydym yn cymhwyso cod newydd i weinyddion presennol yn y peiriant. Mae hwn yn fath o stopiwr sy'n angenrheidiol ar gyfer argaeledd uchel ein systemau. A phan ddaw'r seilwaith yn enfawr, daw cyfraith niferoedd mawr i rym - hyd yn oed os ydych chi'n siŵr bod y newid yn ddiniwed, gall arwain at ganlyniadau enbyd.

Mae yna hefyd lawer o opsiynau ar gyfer creu gweinyddwyr. Yn y diwedd fe wnaethon ni ddewis sgriptiau Python personol. Ac ar gyfer CI anible:

- 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}}"

Dyma beth rydym wedi dod ato, mae'r system yn parhau i fyw a datblygu.

  • 17 Rolau addas ar gyfer sefydlu'r gweinydd. Mae pob un o'r rolau wedi'i gynllunio i ddatrys tasg resymegol ar wahân (logio, archwilio, awdurdodi defnyddwyr, monitro, ac ati).
  • Profi rôl. Moleciwl + TestInfra.
  • Datblygiad eich hun: CMDB + Cerddorfa.
  • Amser creu gweinydd yw ~30 munud, yn awtomataidd ac bron yn annibynnol ar y ciw tasg.
  • Yr un cyflwr/enw'r seilwaith ym mhob segment - llyfrau chwarae, storfeydd, elfennau rhithwiroli.
  • Gwiriad dyddiol o statws gweinydd gyda chynhyrchu adroddiadau ar anghysondebau gyda'r safon.

Rwy'n gobeithio y bydd fy stori yn ddefnyddiol i'r rhai sydd ar ddechrau eu taith. Pa stac awtomeiddio ydych chi'n ei ddefnyddio?

Ffynhonnell: hab.com