Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Агар инфрасохтори IT-и шумо хеле зуд афзоиш ёбад, шумо дер ё зуд бо интихоб дучор мешавед: ба таври хаттӣ зиёд кардани захираҳои инсонӣ барои дастгирии он ё оғози автоматизатсия. То замоне, ки мо дар парадигмаи аввал зиндагӣ мекардем ва сипас роҳи тӯлонӣ ба инфрасохтор ҳамчун Кодекс оғоз ёфт.

Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Албатта, NSPK як стартап нест, аммо дар ширкат дар солҳои аввали мавҷудияти он чунин муҳит ҳукмрон буд ва он солҳо хеле ҷолиб буданд. Номи ман Корняков Дмитрий, Ман зиёда аз 10 сол инфрасохтори Linux-ро бо талаботи баланд барои дастрасӣ дастгирӣ мекунам. Вай дар моҳи январи соли 2016 ба дастаи NSPK ҳамроҳ шуд ва мутаассифона, ибтидои мавҷудияти ширкатро надидааст, балки дар марҳилаи тағйироти бузург омадааст.

Умуман гуфтан мумкин аст, ки коллективи мо барои корхона 2 хел махсулот медихад. Якум инфрасохтор аст. Почта бояд кор кунад, DNS кор кунад ва контроллерҳои домен бояд шуморо ба серверҳое иҷозат диҳанд, ки набояд суқут кунанд. Манзараи IT-и ширкат бузург аст! Инҳо системаҳои муҳими тиҷорат ва миссия мебошанд, талаботи мавҷудият барои баъзеҳо 99,999 аст. Маҳсулоти дуюм худи серверҳо, физикӣ ва виртуалӣ мебошанд. Ба кордой мавчуда назорат кардан лозим аст ва аз бисьёр шуъбадо ба заказчиё-ни нав мунтазам расонда шавад. Дар ин мақола ман мехоҳам ба он диққат диҳам, ки чӣ гуна мо инфрасохтореро таҳия кардем, ки барои давраи ҳаёти сервер масъул аст.

Оғоз аз сафар

Дар оғози саёҳати мо, стек технологияи мо чунин менамуд:
OS CentOS 7
Назорати доменҳои FreeIPA
Автоматикунонӣ - Ansible(+Tower), Cobbler

Ҳамаи ин дар 3 домен ҷойгир шуда, дар якчанд марказҳои додаҳо паҳн шудааст. Дар як маркази додаҳо системаҳои офисӣ ва сайтҳои санҷишӣ мавҷуданд, дар боқимонда PROD.

Эҷоди серверҳо дар як лаҳза чунин менамуд:

Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Дар қолаби VM, CentOS ҳадди ақалл аст ва ҳадди ақали зарурӣ ба монанди /etc/resolv.conf дуруст аст, боқимонда тавассути Ansible меояд.

CMDB - Excel.

Агар сервер физикӣ бошад, пас ба ҷои нусхабардории мошини маҷозӣ, ОС дар он бо истифода аз Cobbler насб карда шуд - суроғаҳои MAC-и сервери мавриди ҳадаф ба конфигуратсияи Cobbler илова карда мешаванд, сервер тавассути DHCP суроғаи IP мегирад ва сипас ОС. илова карда мешавад.

Дар аввал мо ҳатто кӯшиш кардем, ки дар Cobbler як навъ идоракунии конфигуратсияро иҷро кунем. Аммо бо гузашти вақт, ин мушкилотро бо интиқоли конфигуратсияҳо ҳам ба дигар марказҳои додаҳо ва ҳам ба коди Ansible барои омода кардани VMs оварда расонд.

Дар он вақт, бисёре аз мо Ansible-ро ҳамчун тавсеаи қулайи Bash медонистем ва тарҳҳоро бо истифода аз shell ва sed сарфи назар намекардем. Дар маҷмӯъ Bashsible. Ин дар ниҳоят ба он оварда расонд, ки агар китоби бозӣ бо ягон сабаб дар сервер кор накунад, нест кардани сервер, ислоҳ кардани китоби бозӣ ва дубора иҷро кардани он осонтар буд. Аслан версияи скриптҳо, интиқоли конфигуратсияҳо вуҷуд надошт.

Масалан, мо мехостем баъзе конфигуратсияҳоро дар ҳама серверҳо тағир диҳем:

  1. Мо конфигуратсияро дар серверҳои мавҷуда дар сегменти мантиқӣ/маркази додаҳо тағйир медиҳем. Баъзан на дар як рӯз - талаботи дастрасӣ ва қонуни рақамҳои калон имкон намедиҳад, ки ҳама тағйирот якбора татбиқ карда шаванд. Ва баъзе тағйиротҳо эҳтимолан харобиоваранд ва аз нав оғоз кардани чизе талаб мекунанд - аз хидматҳо то худи ОС.
  2. Ислоҳи он дар Ansible
  3. Мо онро дар Cobbler ислоҳ мекунем
  4. Барои ҳар як сегменти мантиқӣ/маркази додаҳо N маротиба такрор кунед

Барои он ки тамоми дигаргунихо муътадил гузаранд, омилхои зиёдеро ба назар гирифтан лозим буд ва дигаргунихо доимо ба амал меоянд.

  • Рефакторинги коди мувофиқ, файлҳои конфигуратсия
  • Тағйир додани таҷрибаҳои беҳтарини дохилӣ
  • Таѓйирот дар асоси натиљањои тањлили ходисањо/фалокатњо
  • Тағир додани стандартҳои амният, ҳам дохилӣ ва ҳам берунӣ. Масалан, PCI DSS ҳар сол бо талаботи нав нав карда мешавад

Афзоиши инфрасохтор ва оғози сафар

Шумораи серверҳо/доменҳои мантиқӣ/марказҳои додаҳо афзоиш ёфт ва бо онҳо шумораи хатогиҳо дар конфигуратсияҳо афзоиш ёфт. Дар баъзе мавридҳо, мо ба се самт расидем, ки дар он идоракунии конфигуратсия бояд таҳия карда шавад:

  1. Автоматика. Аз хатогиҳои инсонӣ дар амалиёти такрорӣ то ҳадди имкон пешгирӣ кардан лозим аст.
  2. Такрорпазирӣ. Идоракунии инфрасохтор, вақте ки пешгӯишаванда аст, хеле осонтар аст. Конфигуратсияи серверҳо ва асбобҳо барои омода кардани онҳо бояд дар ҳама ҷо якхела бошад. Ин барои дастаҳои маҳсулот низ муҳим аст - пас аз санҷиш, барнома бояд кафолат дода шавад, ки дар муҳити истеҳсолие, ки ба муҳити санҷиш монанд танзим шудааст, анҷом дода шавад.
  3. Содда ва шаффофияти ворид кардани тағйирот ба идоракунии конфигуратсия.

Барои илова кардани якчанд асбобҳо боқӣ мемонад.

Мо GitLab CE-ро ҳамчун анбори коди худ интихоб кардем, на камтар аз он барои модулҳои дарунсохтаи CI/CD.

Анбори асрор - Hashicorp Vault, аз ҷумла. барои API бузург.

Конфигуратсияҳои санҷишӣ ва нақшҳои қобили қабул - Molecule+Testinfra. Агар шумо ба митогени мувофиқ пайваст шавед, санҷишҳо хеле тезтар мешаванд. Дар айни замон, мо ба навиштани CMDB ва оркестри худ барои ҷойгиркунии автоматӣ шурӯъ кардем (дар расми боло Cobbler), аммо ин як ҳикояи тамоман дигар аст, ки дар оянда ҳамкори ман ва таҳиягари асосии ин системаҳо нақл мекунанд.

Интихоби мо:

Молекула + Testinfra
Ansible + Tower + AWX
Ҷаҳони серверҳо + DITNET (инкишофи худӣ)
Кулоб
Gitlab + давандаи GitLab
Hashicorp Vault

Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Воқеан, дар бораи нақшҳои қобили мулоҳиза. Дар аввал танҳо як буд, аммо пас аз якчанд рефакторингҳо 17-тои онҳо буданд.. Ман сахт тавсия медиҳам, ки монолитро ба нақшҳои идемпотент тақсим кунед, ки баъдан онҳоро алоҳида оғоз кардан мумкин аст, илова бар ин, шумо метавонед тегҳоро илова кунед. Мо нақшҳоро аз рӯи функсияҳо тақсим кардем - шабака, сабткунӣ, бастаҳо, сахтафзор, молекула ва ғайра. Умуман, мо стратегияи зерро пайгирӣ кардем. Ман исрор намекунам, ки ин ягона ҳақиқат аст, аммо он барои мо кор кард.

  • Нусхабардории серверҳо аз "тасвири тиллоӣ" бад аст!Камбудии асосӣ дар он аст, ки шумо дақиқ намедонед, ки тасвирҳо ҳоло дар кадом ҳолатанд ва ҳама тағирот ба ҳама тасвирҳо дар ҳама хоҷагиҳои виртуализатсия ворид мешаванд.
  • Файлҳои конфигуратсияи пешфарзро то ҳадди ақал истифода баред ва бо шӯъбаҳои дигар розӣ шавед, ки шумо барои файлҳои асосии система масъул ҳастед, масалан:
    1. /etc/sysctl.conf-ро холӣ гузоред, танзимот бояд танҳо дар /etc/sysctl.d/ бошад. Пешфарзи шумо дар як файл, фармоишӣ барои барнома дар дигар.
    2. Барои таҳрир кардани воҳидҳои системавӣ файлҳои бекоркуниро истифода баред.
  • Ҳама конфигуратсияҳоро қолаб кунед ва онҳоро пурра дохил кунед; агар имконпазир бошад, дар китобҳои бозӣ sed ё аналогҳои он мавҷуд нест
  • Рефакторинги коди системаи идоракунии конфигуратсия:
    1. Вазифаҳоро ба ҷузъҳои мантиқӣ тақсим кунед ва монолитро ба нақшҳо дубора нависед
    2. Линтерҳоро истифода баред! Ansible-lint, yaml-lint ва ғайра
    3. Муносибати худро тағир диҳед! Бепарво. Вазъияти системаро тавсиф кардан лозим аст
  • Барои ҳама нақшҳои Ansible шумо бояд дар молекула санҷишҳо нависед ва дар як рӯз як маротиба гузоришҳо эҷод кунед.
  • Дар мо бошад, пас аз тайёр кардани тестхо (онхо зиёда аз 100-тоанд) кариб 70000 хазор хатой ошкор карда шуд. Барои ислоҳи он чанд моҳ лозим шуд.Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Татбики мо

Ҳамин тавр, нақшҳои қобили қабул аз ҷониби линтерҳо омода, шаблон ва тафтиш карда шуданд. Ва ҳатто дар ҳама ҷо гитҳо парвариш карда мешаванд. Аммо масъалаи интиқоли боэътимоди код ба сегментҳои гуногун кушода боқӣ монд. Мо тасмим гирифтем, ки бо скриптҳо ҳамоҳанг созем. Чунин ба назар мерасад:

Аз "оғоз" то ҳазорҳо серверҳо дар даҳҳо маркази додаҳо. Чӣ тавр мо афзоиши инфрасохтори Linuxро таъқиб кардем

Пас аз ворид шудани тағирот, CI оғоз мешавад, сервери санҷишӣ сохта мешавад, нақшҳо бароварда мешаванд ва аз ҷониби молекула озмуда мешаванд. Агар ҳама чиз хуб бошад, код ба филиали истеҳсолот меравад. Аммо мо ба серверҳои мавҷудаи мошин рамзи навро татбиқ намекунем. Ин як навъ стопор аст, ки барои дастрасии баланди системаҳои мо зарур аст. Ва ҳангоме ки инфрасохтор бузург мешавад, қонуни рақамҳои зиёд ба кор меояд - ҳатто агар шумо боварӣ дошта бошед, ки тағирот безарар аст, он метавонад ба оқибатҳои ногувор оварда расонад.

Инчунин имконоти зиёде барои эҷоди серверҳо мавҷуданд. Мо ба интихоби скриптҳои фармоишии Python хотима додем. Ва барои CI қобили:

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

Ин аст, ки мо ба он расидем, система зиндагӣ ва инкишофро идома медиҳад.

  • 17 Нақшҳои мувофиқ барои насб кардани сервер. Ҳар яке аз нақшҳо барои ҳалли вазифаи алоҳидаи мантиқӣ тарҳрезӣ шудаанд (қайдгирӣ, аудит, иҷозати корбар, мониторинг ва ғ.).
  • Санҷиши нақш. Молекула + TestInfra.
  • Рушди худ: CMDB + Orchestrator.
  • Вақти эҷоди сервер ~ 30 дақиқа аст, автоматӣ ва амалан аз навбати вазифа мустақил аст.
  • Ҳолати якхела/номгузории инфрасохтор дар ҳама сегментҳо - китобҳои бозӣ, анборҳо, унсурҳои виртуализатсия.
  • Санҷиши ҳамарӯзаи ҳолати сервер бо тавлиди гузоришҳо дар бораи ихтилофҳо бо стандарт.

Умедворам, ки достони ман барои онҳое, ки дар оғози сафар ҳастанд, муфид хоҳад буд. Шумо кадом стеки автоматиро истифода мебаред?

Манбаъ: will.com