Otomatik ranplasman disk ak Ansible

Otomatik ranplasman disk ak Ansible

Bonjou tout moun. Mwen travay kòm yon administratè sistèm dirijan nan OK epi mwen responsab pou operasyon ki estab nan pòtal la. Mwen vle pale sou ki jan nou bati yon pwosesis pou ranplase otomatikman disk, ak Lè sa a, ki jan nou eskli administratè a nan pwosesis sa a epi ranplase l 'ak yon bot.

Atik sa a se yon kalite transliterasyon pèfòmans nan HighLoad+ 2018

Bati yon pwosesis ranplasman disk

Premye kèk nimewo

OK se yon sèvis jeyan itilize pa dè milyon de moun. Li sèvi pa anviwon 7 mil sèvè, ki sitiye nan 4 sant done diferan. Sèvè yo gen plis pase 70 mil disk. Si ou pile yo youn sou lòt, ou jwenn yon gwo kay won plis pase 1 km wotè.

Disk dis yo se eleman sèvè ki echwe pi souvan. Avèk komèsan sa yo, nou dwe chanje apeprè 30 disk pou chak semèn, e pwosedi sa a te vin tounen yon woutin pa trè bèl.

Otomatik ranplasman disk ak Ansible

Ensidan

Konpayi nou an te prezante jesyon ensidan konplè. Nou anrejistre chak ensidan nan Jira, ak Lè sa a, rezoud ak rezoud li. Si yon ensidan te gen yon efè sou itilizatè yo, Lè sa a, nou definitivman jwenn ansanm epi reflechi sou ki jan yo reponn pi vit nan ka sa yo, ki jan yo diminye efè a ak, nan kou, ki jan yo anpeche yon repetition.

Aparèy depo yo pa gen okenn eksepsyon. Zabbix kontwole estati yo. Nou kontwole mesaj yo nan Syslog pou erè ekri/li, analize estati atak HW/SW, kontwole SMART, epi kalkile mete SSD yo.

Ki jan disk yo te chanje anvan

Lè yon deklanche rive nan Zabbix, yon ensidan kreye nan Jira epi otomatikman asiyen nan enjenyè ki apwopriye yo nan sant done yo. Nou fè sa ak tout ensidan HW, se sa ki, sa yo ki mande nenpòt travay fizik ak ekipman nan sant done a.
Yon enjenyè sant done se yon moun ki rezoud pwoblèm ki gen rapò ak pyès ki nan konpitè epi ki responsab pou enstale, kenbe, ak demantèlman sèvè yo. Lè w fin resevwa tikè a, enjenyè a vin travay. Nan etajè disk li chanje disk poukont li. Men, si li pa gen aksè a aparèy ki nesesè a, enjenyè a tounen vin jwenn administratè sistèm yo an devwa pou èd. Premye a tout, ou bezwen retire disk la nan wotasyon. Pou fè sa, ou bezwen fè chanjman ki nesesè yo sou sèvè a, sispann aplikasyon yo, ak demonte disk la.

Administratè sistèm nan devwa a responsab pou operasyon an nan tout pòtal la pandan orè travay la. Li envestige ensidan yo, fè reparasyon, epi li ede devlopè yo ranpli ti travay yo. Li pa fè fas sèlman ak disques di.

Anvan sa, enjenyè sant done yo te kominike ak administratè sistèm nan atravè chat. Enjenyè voye lyen ki mennen nan tikè Jira, administratè a te swiv yo, te kenbe yon boutèy demi lit travay nan kèk notepad. Men, chat yo enkonvenyan pou travay sa yo: enfòmasyon an pa estriktire epi yo pèdi byen vit. Ak administratè a te kapab tou senpleman mache lwen òdinatè a epi yo pa reponn a demann pou kèk tan, pandan y ap enjenyè a te kanpe nan sèvè a ak yon pil disk epi tann.

Men, bagay ki pi mal la se ke administratè yo pa t 'wè foto a tout antye: ki ensidan disk te egziste, kote yon pwoblèm ka potansyèlman leve. Sa a se akòz lefèt ke nou delege tout ensidan HW bay enjenyè. Wi, li te posib pou montre tout ensidan yo sou tablodbò administratè a. Men, gen anpil nan yo, epi administratè a te enplike sèlman pou kèk nan yo.

Anplis de sa, enjenyè a pa t 'kapab fikse priyorite kòrèkteman, paske li pa konnen anyen sou objektif la nan sèvè espesifik oswa distribisyon an nan enfòmasyon nan mitan kondui.

Nouvo pwosedi ranplasman

Premye bagay nou te fè se te deplase tout ensidan disk nan yon kalite separe "HW disk" epi ajoute jaden yo "blòk non aparèy", "gwosè" ak "kalite disk" nan li pou enfòmasyon sa a ta dwe estoke nan tikè a epi yo ta pa oblije toujou ap fè echanj nan chat.

Otomatik ranplasman disk ak Ansible
Nou te dakò tou ke pandan yon ensidan nou ta chanje sèlman yon disk. Sa a siyifikativman senplifye pwosesis la automatisation, koleksyon estatistik ak travay nan tan kap vini an.

Anplis de sa, nou te ajoute jaden "administratè responsab". Se administratè sistèm nan devwa otomatikman mete la. Sa a se trè pratik, paske kounye a enjenyè a toujou wè ki moun ki responsab. Pa bezwen ale nan kalandriye a ak rechèch. Li te jaden sa a ki te fè li posib yo montre tikè sou tablodbò administratè a ki ta ka bezwen èd li.

Otomatik ranplasman disk ak Ansible
Pou asire ke tout patisipan yo te resevwa benefis maksimòm nan inovasyon, nou te kreye filtè ak tablodbò epi te di mesye yo sou yo. Lè moun konprann chanjman yo, yo pa pran distans yo ak yo kòm yon bagay ki pa nesesè. Li enpòtan pou yon enjenyè konnen nimewo etajè kote sèvè a ye, gwosè ak kalite disk. Administratè a bezwen, anvan tout bagay, konprann ki kalite gwoup serveurs sa a ak ki efè a ta ka lè ranplase yon disk.

Prezans nan jaden ak ekspozisyon yo se pratik, men li pa t 'sove nou soti nan bezwen nan sèvi ak chat. Pou fè sa, nou te oblije chanje workflow la.

Anvan sa, li te tankou sa a:

Otomatik ranplasman disk ak Ansible
Men ki jan enjenyè yo kontinye travay jodi a lè yo pa bezwen èd administratè.

Premye bagay nou te fè se te prezante yon nouvo estati Envestige. Tikè a nan estati sa a lè enjenyè a poko deside si li pral bezwen yon administratè oswa ou pa. Atravè estati sa a, enjenyè a ka transfere tikè a bay administratè a. Anplis de sa, nou itilize estati sa a pou make tikè lè yon disk bezwen ranplase, men disk la li menm pa sou plas. Sa rive nan ka CDN ak sit aleka.

Nou te ajoute estati tou Pare. Tikè a transfere nan li apre ranplase disk la. Sa vle di, tout bagay te deja fèt, men HW/SW RAID la senkronize sou sèvè a. Sa a ka pran yon bon bout tan.

Si yon administratè patisipe nan travay la, konplo a vin yon ti kras pi konplike.

Otomatik ranplasman disk ak Ansible
Soti nan estati louvri Tikè a ka tradui pa administratè sistèm lan ak enjenyè a. Nan estati Nan pwogrè administratè a retire disk la nan wotasyon pou ke enjenyè a ka tou senpleman rale li soti: vire sou ekleraj la, demonte disk la, sispann aplikasyon, tou depann de gwoup la espesifik nan serveurs.

Lè sa a, tikè a transfere nan Pare pou chanje: Sa a se yon siyal enjenyè a ki ka rale disk la. Tout jaden nan Jira deja ranpli, enjenyè a konnen ki kalite ak gwosè disk la. Done sa yo antre swa otomatikman sou estati anvan an oswa pa administratè a.

Apre ranplase disk la, estati tikè a chanje an chanje. Li tcheke si disk ki kòrèk la te mete, patisyon yo fè, aplikasyon an te lanse ak kèk travay rekiperasyon done yo te lanse. Tikè a kapab tou transfere nan estati a Pare, nan ka sa a administratè a ap rete responsab, paske li mete disk la nan wotasyon. Dyagram konplè a sanble ak sa a.

Otomatik ranplasman disk ak Ansible
Ajoute nouvo jaden yo te fè lavi nou pi fasil. Mesye yo te kòmanse travay ak enfòmasyon estriktire, li te vin klè sa ki te bezwen yo dwe fè ak nan ki etap. Priyorite yo te vin pi enpòtan, depi kounye a yo mete pa administratè a.

Pa gen okenn bezwen pou chat. Natirèlman, administratè a ka ekri enjenyè a "sa a bezwen ranplase pi vit", oswa "li deja aswè, èske w ap gen tan ranplase li?" Men, nou pa kominike chak jou ankò nan chat sou pwoblèm sa yo.

Disk yo te kòmanse chanje an pakèt. Si administratè a te vin travay yon ti kras bonè, li gen tan lib, e pa gen anyen ki rive ankò, li ka prepare yon kantite sèvè pou ranplasman: ranpli jaden yo, retire disk nan wotasyon epi transfere travay la nan yon enjenyè. Enjenyè a vini nan sant done a yon ti kras pita, wè travay la, pran kondui ki nesesè yo nan depo a epi imedyatman ranplase yo. Kòm yon rezilta, to ranplasman an te ogmante.

Leson yo aprann lè w ap bati Workflow

  • Lè w ap konstwi yon pwosedi, ou bezwen kolekte enfòmasyon ki soti nan diferan sous.
    Gen kèk nan administratè nou yo pa t 'konnen ke enjenyè a chanje disk yo tèt li. Gen kèk moun ki te panse ke senkronizasyon MD RAID te okipe pa enjenyè, menm si kèk nan yo pa t 'menm gen aksè a fè sa. Gen kèk enjenyè dirijan te fè sa, men se pa toujou paske pwosesis la pa te dekri nenpòt kote.
  • Pwosedi a ta dwe senp epi konprann.
    Li difisil pou yon moun kenbe anpil etap nan tèt ou. Yo ta dwe mete estati vwazen ki pi enpòtan nan Jira sou ekran prensipal la. Ou ka chanje non yo, pou egzanp, nou rele In progress Ready to change. Ak lòt estati yo ka kache nan yon meni drop-down pou yo pa yon eyesore. Men, li pi bon pou pa limite moun, pou ba yo opòtinite pou fè tranzisyon an.
    Eksplike valè inovasyon. Lè moun konprann, yo plis aksepte nouvo pwosedi a. Li te trè enpòtan pou nou ke moun pa klike sou tout pwosesis la, men swiv li. Lè sa a, nou bati automatisation sou sa a.
  • Tann, analize, kalkile li.
    Li te pran nou apeprè yon mwa pou konstwi pwosedi a, aplikasyon teknik, reyinyon ak diskisyon. Ak aplikasyon pran plis pase twa mwa. Mwen te wè ki jan moun yo tou dousman kòmanse sèvi ak inovasyon an. Te gen anpil negativite nan premye etap yo. Men, li te konplètman endepandan de pwosedi nan tèt li ak aplikasyon teknik li yo. Pou egzanp, yon administratè pa t 'sèvi ak Jira, men Plugin Jira a nan Confluence, ak kèk bagay pa t' disponib pou li. Nou te montre l 'Jira, ak pwodiktivite admin la te ogmante tou de pou travay jeneral ak pou ranplase disk.

Otomatik ranplasman disk

Nou pwoche bò kote automatisation ranplasman disk plizyè fwa. Nou te deja gen devlopman ak scripts, men yo tout te travay swa entèaktif oswa manyèlman epi yo te mande lansman. E sèlman apre nou te entwodwi nouvo pwosedi a te fè nou reyalize ke sa a se egzakteman sa nou te manke.

Depi kounye a pwosesis ranplasman nou an divize an etap, chak nan yo ki gen yon sèn espesifik ak yon lis aksyon, nou ka pèmèt automatisation nan etap, epi yo pa tout nan yon fwa. Pou egzanp, etap ki pi senp la - Ready (tcheke RAID / done senkronizasyon) ka fasilman delege nan yon bot. Lè bot la te aprann yon ti kras, ou ka bay li yon travay ki pi enpòtan - mete disk la nan wotasyon, elatriye.

Konfigirasyon zou

Anvan nou pale sou bot la, ann fè yon ti levasyon nan zou enstalasyon nou an. Premyerman, i akoz sa gran size nou lenfrastriktir. Dezyèmman, nou eseye chwazi konfigirasyon pyès ki nan konpitè pi bon pou chak sèvis. Nou gen apeprè 20 modèl RAID pyès ki nan konpitè, sitou LSI ak Adaptec, men gen tou HP ak DELL nan diferan vèsyon. Chak kontwolè RAID gen pwòp sèvis piblik jesyon li yo. Seri kòmandman yo ak emisyon yo ka diferan de vèsyon an vèsyon pou chak kontwolè RAID. Kote yo pa itilize HW-RAID, yo ka itilize mdraid.

Nou fè prèske tout nouvo enstalasyon san backup disk. Nou eseye pa sèvi ak pyès ki nan konpitè ak lojisyèl RAID ankò, pandan n ap fè bak sistèm nou yo nan nivo sant done yo, pa nan sèvè yo. Men, nan kou gen anpil serveurs eritaj ki bezwen sipòte.

Yon kote disk nan contrôleur RAID yo transfere nan aparèy anvan tout koreksyon, yon kote yo itilize JBOD. Gen konfigirasyon ak yon sèl disk sistèm nan sèvè a, epi si li bezwen ranplase, Lè sa a, ou dwe réinstaller sèvè a ak enstalasyon an nan eksplwatasyon an ak aplikasyon, nan vèsyon yo menm, Lè sa a, ajoute dosye konfigirasyon, lanse aplikasyon yo. Genyen tou yon anpil nan gwoup sèvè kote backup te pote soti pa nan nivo a sistèm disk, men dirèkteman nan aplikasyon yo tèt yo.

An total, nou gen plis pase 400 gwoup sèvè inik kap kouri prèske 100 aplikasyon diferan. Pou kouvri tankou yon gwo kantite opsyon, nou te bezwen yon zouti automatisation multifonksyonèl. De preferans ak yon senp DSL, pou se pa sèlman moun ki ekri li ka sipòte li.

Nou te chwazi Ansible paske li pa ajan: pa t 'gen bezwen prepare enfrastrikti, yon demaraj rapid. Anplis de sa, li ekri nan Python, ki aksepte kòm yon estanda nan ekip la.

Jeneral konplo

Ann gade nan konplo a automatisation jeneral lè l sèvi avèk yon ensidan kòm yon egzanp. Zabbix detekte ke disk sdb la echwe, deklanche a limen, epi yo kreye yon tikè nan Jira. Administratè a te gade li, li te reyalize ke se pa yon kopi epi li pa yon fo pozitif, sa vle di, disk la te bezwen chanje, epi li transfere tikè a nan En pwogrè.

Otomatik ranplasman disk ak Ansible
Aplikasyon DiskoBot, ekri nan Python, detanzantan sondaj Jira pou nouvo tikè. Li remake ke yon nouvo tikè In progress te parèt, fil korespondan an deklanche, ki lanse playbook la nan Ansible (sa fè pou chak estati nan Jira). Nan ka sa a, Prepare2change lanse.

Ansible yo voye bay lame a, retire disk la nan wotasyon epi rapòte estati a nan aplikasyon an atravè Callbacks.

Otomatik ranplasman disk ak Ansible
Dapre rezilta yo, bot la otomatikman transfere tikè a nan Ready to change. Enjenyè a resevwa yon notifikasyon epi li ale nan chanje disk la, apre sa li transfere tikè a nan Chanje.

Otomatik ranplasman disk ak Ansible
Dapre konplo ki dekri pi wo a, tikè a tounen nan bot la, ki lanse yon lòt liv, ale nan lame a epi li mete disk la nan wotasyon. Bot la fèmen tikè a. Houra!

Otomatik ranplasman disk ak Ansible
Koulye a, kite a pale sou kèk eleman nan sistèm nan.

Diskobot

Aplikasyon sa a ekri nan Python. Li chwazi tikè nan Jira dapre JQL. Tou depan de estati tikè a, lèt la ale nan responsab ki koresponn lan, ki an vire lanse liv Ansible ki koresponn ak estati a.

JQL ak entèval sondaj yo defini nan dosye konfigirasyon aplikasyon an.

jira_states:
  investigate:
    jql: '… status = Open and "Disk Size" is EMPTY'
    interval: 180

  inprogress:
    jql: '…  and "Disk Size" is not EMPTY and "Device Name" is not EMPTY'
 
  ready:
    jql: '… and (labels not in ("dbot_ignore") or labels is EMPTY)'
    interval: 7200

Pa egzanp, pami tikè ki nan estati En pwogrè, se sèlman moun ki gen gwosè Disk la ak non Aparèy ranpli yo chwazi. Non aparèy se non aparèy blòk ki nesesè pou egzekite playbook la. Gwosè disk nesesè pou enjenyè a konnen ki gwosè disk ki nesesè.

Ak pami tikè ki gen estati Ready, tikè ki gen etikèt dbot_ignore yo filtre. By wout la, nou itilize etikèt Jira tou de pou filtraj sa yo ak pou make tikè kopi ak kolekte estatistik.

Si yon liv echwe, Jira bay etikèt dbot_failed la pou li ka rezoud pita.

Entèoperabilite ak Ansible

Aplikasyon an kominike ak Ansible atravè Ansible Python API. Pou playbook_executor nou pase non fichye a ak yon seri varyab. Sa a pèmèt ou kenbe pwojè a Ansible nan fòm lan nan dosye yml regilye, olye ke dekri li nan kòd Python.

Epitou nan Ansible, atravè *extra_vars*, non aparèy blòk la, estati tikè a, osi byen ke callback_url la, ki gen kle pwoblèm nan - li se itilize pou callback nan HTTP.

Pou chak lansman, yo pwodwi yon envantè tanporè, ki gen ladann yon lame ak gwoup lame sa a fè pati, se konsa ke group_vars yo aplike.

Isit la se yon egzanp yon travay ki aplike HTTP callback.

Nou jwenn rezilta nan egzekite playbooks lè l sèvi avèk callaback (yo). Yo se de kalite:

  • Plugin ansible callback, li bay done sou rezilta yo nan ekzekisyon playbook. Li dekri travay yo ki te lanse, konplete avèk siksè oswa san siksè. Yo rele apèl sa a lè playbook la fini jwe.
  • HTTP callback pou resevwa enfòmasyon pandan w ap jwe yon liv. Nan travay Ansible a nou egzekite yon demann POST/GET nan aplikasyon nou an.

Varyab yo pase nan HTTP callback (yo) ki te defini pandan ekzekisyon playbook la epi ke nou vle sove epi itilize nan kouri ki vin apre yo. Nou ekri done sa yo nan sqlite.

Nou menm tou nou kite kòmantè epi chanje estati tikè a atravè HTTP callback.

HTTP callback

# Make callback to Diskobot App
# Variables:
#    callback_post_body: # A dict with follow keys. All keys are optional
#       msg: If exist it would be posted to Jira as comment
#       data: If exist it would be saved in Incident.variables
#       desire_state: Set desire_state for incident
#       status: If exist Proceed issue to that status

  - name: Callback to Diskobot app (jira comment/status)
    uri:
      url: "{{ callback_url }}/{{ devname }}"
      user: "{{ diskobot_user }}"
      password: "{{ diskobot_pass }}"
      force_basic_auth: True
      method: POST
      body: "{{ callback_post_body | to_json }}"
      body_format: json
    delegate_to: 127.0.0.1

Tankou anpil travay nan menm kalite a, nou mete l nan yon dosye komen separe epi enkli li si sa nesesè, se konsa yo pa toujou ap repete li nan playbooks. Sa a gen ladan callback_ url la, ki gen kle pwoblèm nan ak non lame. Lè Ansible egzekite demann POST sa a, bot la konprann ke li te vini kòm yon pati nan yon ensidan konsa.

Ak isit la se yon egzanp nan playbook la, nan ki nou pwodiksyon yon disk ki soti nan yon aparèy MD:

  # Save mdadm configuration
  - include: common/callback.yml
    vars:
      callback_post_body:
        status: 'Ready to change'
        msg: "Removed disk from mdraid {{ mdadm_remove_disk.msg | comment_jira }}"
        data:
          mdadm_data: "{{ mdadm_remove_disk.removed }}"
          parted_info: "{{ parted_info | default() }}"
    when:
      - mdadm_remove_disk | changed
      - mdadm_remove_disk.removed

Travay sa a transfere tikè Jira a nan estati "Pare pou chanje" epi ajoute yon kòmantè. Epitou, mdam_data varyab la estoke yon lis aparèy md kote yo te retire disk la, epi parted_info magazen yon pil fatra patisyon soti nan separad.

Lè enjenyè a foure yon nouvo disk, nou ka itilize varyab sa yo retabli pil fatra patisyon an, osi byen ke mete disk la nan aparèy yo md kote li te retire.

Ansible mòd chèk

Li te pè vire sou automatisation a. Se poutèt sa, nou deside kouri tout liv nan mòd nan
kouri sèk, nan ki Ansible pa fè okenn aksyon sou sèvè yo, men sèlman imite yo.

Yon lansman sa yo kouri atravè yon modil callback apa, epi rezilta ekzekisyon playbook la sove nan Jira kòm yon kòmantè.

Otomatik ranplasman disk ak Ansible

Premyèman, sa te fè li posib pou valide travay bot la ak playbooks. Dezyèmman, li te ogmante konfyans administratè yo nan bot la.

Lè nou te pase validasyon an ak reyalize ke ou ka kouri Ansible pa sèlman nan mòd sèk kouri, nou te fè yon bouton Run Diskobot nan Jira lanse menm liv la ak menm varyab yo sou menm lame a, men nan mòd nòmal.

Anplis de sa, bouton an itilize pou rekòmanse playbook la si li aksidan.

Estrikti Playbooks

Mwen te deja mansyone ke depann sou estati tikè Jira a, bot la lanse liv diferan.

Premyèman, li pi fasil pou òganize antre a.
Dezyèmman, nan kèk ka li se tou senpleman nesesè.

Pou egzanp, lè w ranplase yon disk sistèm, ou bezwen premye ale nan sistèm deplwaman an, kreye yon travay, epi apre deplwaman kòrèk, sèvè a ap vin aksesib atravè ssh, epi ou ka woule aplikasyon an sou li. Si nou te fè tout bagay sa yo nan yon sèl playbook, Lè sa a, Ansible pa ta kapab ranpli li akòz lame a pa disponib.

Nou itilize wòl Ansible pou chak gwoup serveurs. Isit la ou ka wè ki jan liv la (yo) yo òganize nan youn nan yo.

Otomatik ranplasman disk ak Ansible

Sa a se pratik paske li imedyatman klè kote ki travay yo ye. Nan main.yml, ki se opinyon pou wòl Ansible, nou ka tou senpleman enkli pa estati tikè oswa travay jeneral ki nesesè pou tout moun, pou egzanp, pase idantifikasyon oswa resevwa yon siy.

envestigasyon.yml

Kouri pou tikè nan estati Envestigasyon ak Louvri. Bagay ki pi enpòtan pou liv sa a se non aparèy blòk la. Enfòmasyon sa a pa toujou disponib.

Pou jwenn li, nou analize rezime Jira a, dènye valè ki soti nan deklanche Zabbix la. Li ka genyen non an nan aparèy la blòk - chans. Oswa li ka genyen yon pwen mòn, Lè sa a, ou bezwen ale nan sèvè a, analize li epi kalkile disk ki nesesè yo. Deklanche a kapab transmèt tou yon adrès scsi oswa kèk lòt enfòmasyon. Men, li rive tou ke pa gen okenn endikasyon, epi ou gen analize.

Lè w fin jwenn non aparèy blòk la, nou kolekte enfòmasyon sou kalite ak gwosè disk la pou ranpli jaden yo nan Jira. Nou retire tou enfòmasyon sou vandè a, modèl, firmwèr, ID, SMART, epi mete tout bagay sa yo nan yon kòmantè nan tikè Jira a. Administratè a ak enjenyè pa bezwen chèche done sa yo ankò. 🙂

Otomatik ranplasman disk ak Ansible

prepare2change.yml

Retire disk la nan wotasyon, prepare pou ranplasman. Etap ki pi difisil ak enpòtan an. Sa a se kote ou ka sispann aplikasyon an lè li pa ta dwe sispann. Oswa retire yon disk ki pa t 'gen ase kopi, epi kidonk gen yon efè sou itilizatè yo, pèdi kèk done. Isit la nou gen plis chèk ak notifikasyon nan chat la.

Nan ka ki pi senp, nou ap pale sou retire yon disk nan yon HW/MD RAID.

Nan sitiyasyon ki pi konplèks (nan sistèm depo nou yo), lè backup la fèt nan nivo aplikasyon an, ou bezwen ale nan aplikasyon an atravè API a, rapòte pwodiksyon disk la, dezaktive li epi kòmanse rekiperasyon an.

Kounye a nou ap emigre an masse nwaj la, epi si sèvè a baze sou nwaj, Lè sa a, Diskobot rele API nwaj la, li di ke li pral travay ak sèrviteur sa a - sèvè a kouri kontenè - epi li mande "migre tout veso ki soti nan serviteur sa a." Ak an menm tan an vire sou ekleraj la nan disk la pou ke enjenyè a ka imedyatman wè ki youn bezwen yo dwe rale deyò.

chanje.yml

Apre ranplase yon disk, nou premye tcheke disponiblite li.

Enjenyè yo pa toujou enstale nouvo kondui, kidonk nou te ajoute yon chèk pou valè SMART ki satisfè nou.

Ki atribi nou gade?Konte Sektè Relocated (5) < 100
Kantite sektè ki annatant aktyèl (107) == 0

Si kondwi a echwe tès la, enjenyè a avize pou ranplase li ankò. Si tout bagay nan lòd, ekleraj la etenn, mak yo aplike epi yo mete disk la nan wotasyon.

pare.yml

Ka ki pi senp la: tcheke senkronizasyon atak HW/SW oswa fini senkronizasyon done nan aplikasyon an.

Aplikasyon API

Mwen te mansyone plizyè fwa ke bot la souvan jwenn aksè nan API aplikasyon yo. Natirèlman, se pa tout aplikasyon ki te gen metòd ki nesesè yo, kidonk yo te dwe modifye. Men metòd ki pi enpòtan nou itilize:

  • Estati. Estati yon gwoup oswa yon disk pou konprann si yo ka travay avèk li;
  • Kòmanse/sispann. Aktivasyon / dezaktivasyon disk;
  • Migre / retabli. Done migrasyon ak rekiperasyon pandan ak apre ranplasman.

Leson yo aprann nan men Ansible

Mwen vrèman renmen Ansible. Men, souvan, lè mwen gade nan diferan pwojè opensource ak wè ki jan moun ekri playbooks, mwen vin yon ti kras pè. Konplèks lojik interweavings nan lè / bouk, mank de fleksibilite ak idempotity akòz itilizasyon souvan nan koki / kòmand.

Nou deside senplifye tout bagay otank posib, pran avantaj de avantaj Ansible - modilarite. Nan nivo ki pi wo a gen liv jwèt; yo ka ekri pa nenpòt administratè, devlopè twazyèm pati ki konnen yon ti kras Ansible.

- name: Blink disk
  become: True
  register: locate_action
  disk_locate:
      locate: '{{ locate }}'
      devname: '{{ devname }}'
      ids: '{{ locate_ids | default(pd_id) | default(omit) }}'

Si kèk lojik difisil pou aplike nan playbooks, nou deplase li nan yon modil Ansible oswa filtre. Scripts yo ka ekri nan Python oswa nenpòt lòt lang.

Yo fasil epi rapid pou ekri. Pou egzanp, modil ekleraj disk la, yon egzanp ki montre pi wo a, konsiste de 265 liy.

Otomatik ranplasman disk ak Ansible

Sou nivo ki pi ba a se bibliyotèk la. Pou pwojè sa a, nou te ekri yon aplikasyon separe, yon kalite distraksyon sou pyès ki nan konpitè ak lojisyèl RAID ki fè demann ki koresponn yo.

Otomatik ranplasman disk ak Ansible

Pi gwo fòs Ansible yo se senplisite li yo ak liv jwèt klè. Mwen kwè ke ou bezwen sèvi ak sa a epi yo pa jenere dosye yaml pè ak yon gwo kantite kondisyon, kòd koki ak bouk.

Si ou vle repete eksperyans nou ak API Ansible, kenbe de bagay nan tèt ou:

  • Playbook_executor ak playbooks an jeneral pa ka bay yon timeout. Gen yon timeout sou sesyon ssh la, men pa gen okenn timeout sou playbook la. Si nou eseye demonte yon disk ki pa egziste ankò nan sistèm nan, playbook a ap kouri alkole, kidonk nou te oblije vlope lansman li nan yon anbalaj separe epi touye li ak yon tan.
  • Ansible kouri sou pwosesis fouchèt, kidonk API li yo pa an sekirite. Nou kouri tout liv jwèt nou yo yon sèl-threaded.

Kòm yon rezilta, nou te kapab otomatize ranplasman apeprè 80% nan disk. An jeneral, to ranplasman an double. Jodi a, administratè a jis gade ensidan an epi deside si disk la bezwen chanje oswa ou pa, epi li fè yon sèl klike sou.

Men koulye a, nou ap kòmanse kouri nan yon lòt pwoblèm: kèk nouvo administratè pa konnen ki jan yo chanje kondui. 🙂

Sous: www.habr.com

Add nouvo kòmantè