అనేక బ్యాకప్ సిస్టమ్లు ఉన్నాయి, అయితే సర్వీస్డ్ సర్వర్లు వివిధ ప్రాంతాలు మరియు క్లయింట్లలో చెల్లాచెదురుగా ఉంటే మరియు మీరు ఆపరేటింగ్ సిస్టమ్ సాధనాలను ఉపయోగించి నిర్వహించాల్సిన అవసరం ఉంటే?
శుభ మధ్యాహ్నం, హబ్ర్!
నా పేరు నటల్య. నేను NPO క్రిస్టాలో అప్లికేషన్ అడ్మినిస్ట్రేటర్స్ గ్రూప్ టీమ్ లీడర్ని. మేము మా కంపెనీ ప్రాజెక్ట్ టీమ్ను ఎంపిక చేస్తాము. మేము చాలా విచిత్రమైన పరిస్థితిని కలిగి ఉన్నాము: మేము మా సాఫ్ట్వేర్ను మా కంపెనీ సర్వర్లలో మరియు కస్టమర్ల సైట్లలో ఉన్న సర్వర్లలో ఇన్స్టాల్ చేస్తాము మరియు నిర్వహిస్తాము. ఈ సందర్భంలో, మొత్తం సర్వర్ను బ్యాకప్ చేయవలసిన అవసరం లేదు. "అవసరమైన డేటా" మాత్రమే ముఖ్యమైనది: DBMS మరియు ఫైల్ సిస్టమ్ యొక్క వ్యక్తిగత డైరెక్టరీలు. వాస్తవానికి, క్లయింట్లు వారి స్వంత బ్యాకప్ విధానాలను కలిగి ఉంటారు (లేదా కలిగి ఉండరు) మరియు బ్యాకప్లను అక్కడ నిల్వ చేయడానికి తరచుగా ఒక రకమైన బాహ్య నిల్వను అందిస్తారు. ఈ సందర్భంలో, బ్యాకప్ని సృష్టించిన తర్వాత, అది బాహ్య నిల్వకు పంపబడుతుందని మేము నిర్ధారిస్తాము.
కొంత సమయం వరకు, బ్యాకప్ ప్రయోజనాల కోసం, మేము బాష్ స్క్రిప్ట్తో నిర్వహించాము, కానీ సెట్టింగ్ల కోసం ఎంపికలు పెరిగేకొద్దీ, ఈ స్క్రిప్ట్ యొక్క సంక్లిష్టత దామాషా ప్రకారం పెరిగింది మరియు ఒక మంచి క్షణంలో మేము దానిని “భూమికి నాశనం చేయాల్సిన అవసరం వచ్చింది. , ఆపై ....”.
వివిధ కారణాల వల్ల రెడీమేడ్ సొల్యూషన్స్ సరిపోలేదు: బ్యాకప్లను వికేంద్రీకరించాల్సిన అవసరం, క్లయింట్ వద్ద స్థానికంగా బ్యాకప్లను నిల్వ చేయాల్సిన బాధ్యత, సెట్టింగ్ల సంక్లిష్టత, దిగుమతి ప్రత్యామ్నాయం మరియు యాక్సెస్ పరిమితుల కారణంగా.
సొంతంగా ఏదైనా రాయడం తేలిక అని మాకు అనిపించింది. అదే సమయంలో, మేము రాబోయే N సంవత్సరాలలో మా పరిస్థితికి సరిపోయేది పొందాలనుకుంటున్నాము, కానీ సంభావ్యంగా పరిధిని విస్తరించే అవకాశం ఉంది.
విధి పరిస్థితులు క్రింది విధంగా ఉన్నాయి:
- బేస్ బ్యాకప్ ఉదాహరణ ఆఫ్లైన్లో ఉంది, స్థానికంగా రన్ అవుతుంది
- క్లయింట్ నెట్వర్క్లో ఎల్లప్పుడూ బ్యాకప్లు మరియు లాగ్ల నిల్వ
- ఉదాహరణ మాడ్యూళ్ళను కలిగి ఉంటుంది - అటువంటి రకమైన "కన్స్ట్రక్టర్"
- వాడుకలో లేని వాటితో సహా ఉపయోగించిన Linux పంపిణీలతో అనుకూలత, సంభావ్య క్రాస్-ప్లాట్ఫారమ్ కావాల్సినది
- ఉదాహరణతో పని చేయడానికి ssh యాక్సెస్ సరిపోతుంది, అదనపు పోర్ట్లను తెరవడం ఐచ్ఛికం
- సెటప్ మరియు ఆపరేషన్ యొక్క గరిష్ట సౌలభ్యం
- విభిన్న సర్వర్ల నుండి బ్యాకప్ల స్థితిని కేంద్రంగా వీక్షించడానికి మిమ్మల్ని అనుమతించే ప్రత్యేక ఉదాహరణను కలిగి ఉండటం సాధ్యమే (కానీ అవసరం లేదు)
మనకు లభించిన వాటిని ఇక్కడ చూడవచ్చు:
సాఫ్ట్వేర్ python3లో వ్రాయబడింది; Debian, Ubuntu, CentOS, AstraLinux 1.6లో పని చేస్తుంది.
డాక్యుమెంటేషన్ రిపోజిటరీ యొక్క డాక్స్ డైరెక్టరీలో పోస్ట్ చేయబడింది.
సిస్టమ్ పనిచేసే ప్రధాన అంశాలు:
చర్య - ఒక అటామిక్ ఆపరేషన్ను అమలు చేసే చర్య (డేటాబేస్ బ్యాకప్, డైరెక్టరీ బ్యాకప్, డైరెక్టరీ A నుండి డైరెక్టరీ Bకి బదిలీ మొదలైనవి). ఇప్పటికే ఉన్న చర్యలు కోర్/చర్యల డైరెక్టరీలో ఉన్నాయి
పని - ఒక పని, ఒక తార్కిక "బ్యాకప్ టాస్క్"ని వివరించే చర్యల సమితి
షెడ్యూల్ - షెడ్యూల్, టాస్క్ ఎగ్జిక్యూషన్ సమయం యొక్క ఐచ్ఛిక సూచనతో టాస్క్ సెట్
బ్యాకప్ కాన్ఫిగరేషన్ yaml ఫైల్లో నిల్వ చేయబడుతుంది; సాధారణ కాన్ఫిగరేషన్ నిర్మాణం:
- సాధారణ సెట్టింగులు
- చర్యల విభాగం: ఈ సర్వర్లో ఉపయోగించిన చర్యల వివరణ
- షెడ్యూల్ విభాగం: అన్ని టాస్క్ల వివరణ (చర్యల సెట్లు) మరియు క్రాన్ ద్వారా వాటి ప్రయోగ షెడ్యూల్, అటువంటి ప్రయోగం అవసరమైతే
ఈ సమయంలో అప్లికేషన్ ఏమి చేయగలదు:
- మా కోసం ప్రధాన కార్యకలాపాలకు మద్దతు ఉంది: Pg_dump ద్వారా PostgreSQL బ్యాకప్, తారు ద్వారా ఫైల్ సిస్టమ్ డైరెక్టరీ బ్యాకప్; బాహ్య నిల్వతో కార్యకలాపాలు; డైరెక్టరీల మధ్య rsync; బ్యాకప్ రొటేషన్ (పాత కాపీలను తొలగించడం)
- బాహ్య స్క్రిప్ట్ని పిలుస్తోంది
- ఒకే పని యొక్క మాన్యువల్ అమలు
/opt/KristaBackup/KristaBackup.py run make_full_dump
- మీరు క్రాంటాబ్లో వ్యక్తిగత పనిని లేదా మొత్తం షెడ్యూల్ను జోడించవచ్చు (లేదా తీసివేయవచ్చు).
/opt/KristaBackup/KristaBackup.py enable all
- బ్యాకప్ ఫలితాల ఆధారంగా ఫైల్ ఉత్పత్తిని ట్రిగ్గర్ చేయండి. బ్యాకప్లను పర్యవేక్షించడానికి Zabbixతో కలిపి ఈ ఫీచర్ ఉపయోగపడుతుంది.
- వెబ్పి లేదా వెబ్ మోడ్లో నేపథ్యంలో పని చేయవచ్చు
/opt/KristaBackup/KristaBackup.py web start [--api]
మోడ్ల మధ్య వ్యత్యాసం ఏమిటంటే వెబ్పికి సరైన వెబ్ ఇంటర్ఫేస్ లేదు, కానీ అప్లికేషన్ మరొక ఉదాహరణ నుండి వచ్చిన అభ్యర్థనలకు ప్రతిస్పందిస్తుంది. వెబ్ మోడ్ కోసం, మీరు ఫ్లాస్క్ మరియు కొన్ని అదనపు ప్యాకేజీలను ఇన్స్టాల్ చేయాలి మరియు ఇది ప్రతిచోటా ఆమోదయోగ్యం కాదు, ఉదాహరణకు, ధృవీకరించబడిన AstraLinux SEలో.
వెబ్ ఇంటర్ఫేస్ ద్వారా, మీరు కనెక్ట్ చేయబడిన సర్వర్ల బ్యాకప్ల స్థితి మరియు లాగ్లను వీక్షించవచ్చు: “వెబ్ ఉదాహరణ” API ద్వారా “బ్యాకప్ సందర్భాలు” నుండి డేటాను అభ్యర్థిస్తుంది. వెబ్ యాక్సెస్కు అధికారం అవసరం, వెబ్పి యాక్సెస్ అవసరం లేదు.
తప్పుగా గత బ్యాకప్ల లాగ్లు రంగుతో గుర్తించబడ్డాయి: హెచ్చరిక - పసుపు, లోపం - ఎరుపు.
నిర్వాహకుడికి పారామితులపై చీట్ షీట్ అవసరం లేదు మరియు సర్వర్ ఆపరేటింగ్ సిస్టమ్లు సజాతీయంగా ఉంటే, మీరు ఫైల్ను కంపైల్ చేయవచ్చు మరియు పూర్తయిన ప్యాకేజీని పంపిణీ చేయవచ్చు.
మేము ఈ యుటిలిటీని ప్రధానంగా Ansible ద్వారా పంపిణీ చేస్తాము, ముందుగా కొన్ని అతి ముఖ్యమైన సర్వర్లకు మరియు మిగిలిన అన్నింటికి పరీక్షించిన తర్వాత దాన్ని అందిస్తాము.
అంతిమ ఫలితం కాంపాక్ట్ స్టాండ్-అలోన్ కాపీ యుటిలిటీ, దీనిని ఆటోమేట్ చేయవచ్చు మరియు అనుభవం లేని నిర్వాహకులు కూడా ఉపయోగించవచ్చు. ఇది మాకు అనుకూలమైనది - బహుశా ఇది మీకు కూడా ఉపయోగపడుతుందా?
మూలం: www.habr.com