Մեկ այլ կրկնօրինակում `ավելի քան սցենար, ավելի պարզ, քան համակարգ

Կան բազմաթիվ պահեստային համակարգեր, բայց ի՞նչ անել, եթե սպասարկվող սերվերները ցրված են տարբեր տարածաշրջաններում և հաճախորդներում, և դուք պետք է բավարարվեք օպերացիոն համակարգով:

Մեկ այլ կրկնօրինակում `ավելի քան սցենար, ավելի պարզ, քան համակարգ

Բարեւ, Կլինի!
Ես Նատալյա եմ: Ես NPO Krista-ում հավելվածների ադմինիստրատորների խմբի թիմի ղեկավարն եմ: Մենք Ops ենք մեր ընկերության նախագծային խմբի համար: Մենք ունենք բավականին եզակի իրավիճակ. մենք տեղադրում և պահպանում ենք մեր ծրագրակազմը ինչպես մեր ընկերության սերվերների, այնպես էլ հաճախորդների կայքերում տեղակայված սերվերների վրա: Այս դեպքում ամբողջ սերվերի կրկնօրինակման կարիք չկա: Կարևոր են միայն «հիմնական տվյալները»՝ DBMS-ը և ֆայլային համակարգի առանձին գրացուցակները: Իհարկե, հաճախորդներն ունեն (կամ չունեն) իրենց պահուստային կանոնակարգերը և հաճախ տրամադրում են ինչ-որ արտաքին պահեստ՝ այնտեղ պահուստավորում պահելու համար: Այս դեպքում, կրկնօրինակ ստեղծելուց հետո, մենք ապահովում ենք ուղարկումը արտաքին պահեստ:

Որոշ ժամանակ պահուստային նպատակների համար մենք բավարարվեցինք bash script-ով, բայց քանի որ կազմաձևման ընտրանքները մեծացան, այս սցենարի բարդությունը համաչափ աճեց, և մի պահ մենք եկանք «քանդելու այն գետնին, իսկ հետո». ...»:

Պատրաստի լուծումները հարմար չէին տարբեր պատճառներով՝ կրկնօրինակների ապակենտրոնացման անհրաժեշտության, հաճախորդի մոտ պահեստային պատճենները տեղում պահելու պահանջի, տեղադրման բարդության, ներմուծման փոխարինման, մուտքի սահմանափակումների պատճառով:

Մեզ թվում էր, թե ավելի հեշտ է գրել մեր սեփականը։ Միևնույն ժամանակ, ես ուզում էի ստանալ մի բան, որը կբավականացներ մեր իրավիճակին հաջորդ N տարիների համար, բայց պոտենցիալ շրջանակը ընդլայնելու հնարավորությամբ։

Առաջադրանքի պայմանները հետևյալն էին.

  1. հիմնական պահեստային օրինակն ինքնավար է և աշխատում է տեղական մակարդակում
  2. կրկնօրինակների և տեղեկամատյանների պահպանումը միշտ գտնվում է հաճախորդի ցանցում
  3. օրինակը բաղկացած է մոդուլներից՝ մի տեսակ «կոնստրուկտոր»
  4. Պահանջվում է համատեղելիություն Linux-ի ընթացիկ բաշխումների հետ, ներառյալ հնացածները, ցանկալի է պոտենցիալ միջպլատֆորմը
  5. Օրինակի հետ աշխատելու համար ssh-ի միջոցով մուտքը բավարար է, լրացուցիչ պորտեր բացելը անհրաժեշտ չէ
  6. տեղադրման և շահագործման առավելագույն հեշտությունը
  7. հնարավոր է (բայց ոչ անհրաժեշտ) ունենալ առանձին օրինակ, որը թույլ է տալիս կենտրոնացված կերպով դիտել տարբեր սերվերների կրկնօրինակների կարգավիճակը

Դուք կարող եք տեսնել, թե ինչի հետ ենք եկել այստեղ. github.com/javister/krista-backup
Ծրագիրը գրված է python3-ով; աշխատում է Debian, Ubuntu, CentOS, AstraLinux 1.6-ի վրա:

Փաստաթղթերը տեղադրվում են պահոցի փաստաթղթերի գրացուցակում:

Հիմնական հասկացությունները, որով գործում է համակարգը.
գործողություն – գործողություն, որն իրականացնում է մեկ ատոմային գործողություն (տվյալների բազայի կրկնօրինակում, գրացուցակի կրկնօրինակում, փոխանցում A գրացուցակից B գրացուցակ և այլն): Առկա գործողությունները գտնվում են հիմնական/գործողությունների գրացուցակում
առաջադրանք – առաջադրանք, գործողությունների մի շարք, որոնք նկարագրում են մեկ տրամաբանական «պահուստային առաջադրանք»
ժամանակացույց – ժամանակացույց, առաջադրանքների մի շարք՝ առաջադրանքի կատարման ժամանակի կամընտիր ցուցումով

Պահուստային կոնֆիգուրացիան պահվում է yaml ֆայլում; ընդհանուր կազմաձևման կառուցվածքը.

  • Ընդհանուր կարգավորումներ
  • գործողությունների բաժին. այս սերվերում օգտագործվող գործողությունների նկարագրությունը
  • ժամանակացույցի բաժին. բոլոր առաջադրանքների նկարագրությունը (գործողությունների հավաքածու) և դրանց գործարկման ժամանակացույցը ըստ cron-ի, եթե այդպիսի գործարկում է պահանջվում

Կազմաձևի օրինակ կարելի է գտնել այստեղ

Ինչ կարող է անել հավելվածը ներկայումս.

  • Մեզ համար հիմնական գործողությունները աջակցվում են. PostgreSQL կրկնօրինակում pg_dump-ի միջոցով, ֆայլային համակարգի գրացուցակի կրկնօրինակում tar-ի միջոցով; գործողություններ արտաքին պահեստով; rsync դիրեկտորիաների միջև; կրկնօրինակի ռոտացիա (հին պատճենների ջնջում)
  • կանչելով արտաքին սցենար
  • առանձին առաջադրանքի ձեռքով կատարում
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • դուք կարող եք ավելացնել (կամ հեռացնել) մեկ առաջադրանք կամ ամբողջ ժամանակացույցը crontab-ում
    /opt/KristaBackup/KristaBackup.py enable all
  • կրկնօրինակման արդյունքների հիման վրա գործարկիչ ֆայլի ստեղծում: Այս ֆունկցիան օգտակար է Zabbix-ի հետ համատեղ՝ կրկնօրինակումները վերահսկելու համար
  • կարող է աշխատել ֆոնային ռեժիմում՝ webapi կամ վեբ ռեժիմում
    /opt/KristaBackup/KristaBackup.py web start [--api]

Ռեժիմների միջև տարբերությունը. webapi-ն ինքնին չունի վեբ ինտերֆեյս, սակայն հավելվածը պատասխանում է մեկ այլ օրինակի հարցումներին: Վեբ ռեժիմի համար դուք պետք է տեղադրեք տափաշիշ և մի քանի լրացուցիչ փաթեթներ, և դա ընդունելի չէ ամենուր, օրինակ՝ հավաստագրված AstraLinux SE-ում:

Վեբ ինտերֆեյսի միջոցով դուք կարող եք դիտել միացված սերվերների կրկնօրինակների կարգավիճակը և տեղեկամատյանները. «վեբ օրինակը» API-ի միջոցով պահանջում է տվյալներ «պահուստային օրինակներից»: Համացանց մուտք գործելու համար անհրաժեշտ է թույլտվություն, իսկ webapi-ին՝ ոչ:

Մեկ այլ կրկնօրինակում `ավելի քան սցենար, ավելի պարզ, քան համակարգ

Սխալ կրկնօրինակների մատյանները նշված են գույներով՝ նախազգուշացում՝ դեղին, սխալ՝ կարմիր:

Մեկ այլ կրկնօրինակում `ավելի քան սցենար, ավելի պարզ, քան համակարգ

Մեկ այլ կրկնօրինակում `ավելի քան սցենար, ավելի պարզ, քան համակարգ

Եթե ​​ադմինիստրատորը պարամետրերի վերաբերյալ խաբեության թերթիկի կարիք չունի, և սերվերի օպերացիոն համակարգերը միատարր են, կարող եք կազմել ֆայլը և տարածել պատրաստի փաթեթը:

Մենք տարածում ենք այս օգտակար ծրագիրը հիմնականում Ansible-ի միջոցով՝ այն սկզբում տարածելով ամենաքիչ կարևոր սերվերների վրա, իսկ փորձարկումից հետո մնացած բոլոր սերվերների վրա:

Արդյունքում մենք ստացանք կոմպակտ, ինքնուրույն պատճենահանման ծրագիր, որը կարող է ավտոմատացվել և կարող է օգտագործվել նույնիսկ անփորձ ադմինիստրատորների կողմից: Մեզ համար հարմար է, միգուցե դա ձեզ և՞ս օգտակար լինի:

Source: www.habr.com

Добавить комментарий