د ځواب وړ سره د ډیسک بدلولو اتومات کول

د ځواب وړ سره د ډیسک بدلولو اتومات کول

سلام و ټولو ته. زه په OK کې د مخکښ سیسټم مدیر په توګه کار کوم او د پورټل د باثباته عملیاتو مسؤل یم. زه غواړم په دې اړه وغږیږم چې څنګه موږ د ډیسکونو په اوتومات ډول ځای په ځای کولو لپاره پروسه جوړه کړه ، او بیا موږ څنګه مدیر له دې پروسې څخه لرې کړ او د بوټ سره یې ځای په ځای کړ.

دا مقاله د ژباړې یو ډول دی کړنې په HighLoad+ 2018 کې

د ډیسک بدلولو پروسې رامینځته کول

لومړی ځینې شمیرې

OK یو لوی خدمت دی چې د ملیونونو خلکو لخوا کارول کیږي. دا د شاوخوا 7 زره سرورونو لخوا خدمت کیږي ، کوم چې په 4 مختلف ډیټا مرکزونو کې موقعیت لري. سرورونه له 70 زرو څخه ډیر ډیسکونه لري. که تاسو دا د یو بل په سر کې ځای په ځای کړئ، تاسو د 1 کیلومترو څخه ډیر لوړ برج ترلاسه کوئ.

هارډ ډرایو د سرور برخه ده چې ډیری وختونه ناکام کیږي. د داسې حجمونو سره، موږ باید په اونۍ کې شاوخوا 30 ډیسکونه بدل کړو، او دا کړنلاره یو ډیر خوندور معمول نه دی.

د ځواب وړ سره د ډیسک بدلولو اتومات کول

پیښې

زموږ شرکت د پیښې بشپړ مدیریت معرفي کړی. موږ هره پیښه په جیره کې ثبتوو او بیا یې حل او ترتیب کوو. که چیرې یوې پیښې په کاروونکو اغیزه درلوده، نو موږ یقینا سره یوځای کیږو او په دې اړه فکر کوو چې څنګه په داسې قضیو کې ګړندي ځواب ووایو، څنګه اغیزه کمه کړو او البته، څنګه د تکرار مخنیوی وکړو.

د ذخیره کولو وسایل هیڅ استثنا ندي. د دوی وضعیت د زیبکس لخوا څارل کیږي. موږ په سیسلاګ کې د لیکلو / لوستلو غلطیتونو لپاره پیغامونه څارو، د HW/SW بریدونو وضعیت تحلیل کوو، د SMART څارنه کوو، او د SSDs لپاره پوښاک محاسبه کوو.

څنګه ډیسکونه مخکې بدل شوي

کله چې په زیبکس کې یو محرک واقع کیږي، یوه پیښه په جیرا کې رامینځته کیږي او په اتوماتيک ډول د معلوماتو مرکزونو کې مناسب انجینرانو ته ګمارل کیږي. موږ دا د ټولو HW پیښو سره کوو، دا هغه دي چې د معلوماتو مرکز کې د تجهیزاتو سره کوم فزیکي کار ته اړتیا لري.
د ډیټا سینټر انجینر هغه څوک دی چې د هارډویر پورې اړوند مسلې حل کوي او د سرورونو نصبولو ، ساتلو او له مینځه وړلو مسؤلیت لري. د ټکټ ترلاسه کولو سره، انجنیر کار ته ځي. د ډیسک الماریو کې هغه په ​​​​خپلواک ډول ډیسکونه بدلوي. مګر که هغه اړین وسایلو ته لاسرسی ونلري، انجنیر د مرستې لپاره د سیسټم مدیرانو ته وګرځي. له هرڅه دمخه ، تاسو اړتیا لرئ ډیسک له گردش څخه لرې کړئ. د دې کولو لپاره ، تاسو اړتیا لرئ په سرور کې اړین بدلونونه رامینځته کړئ ، غوښتنلیکونه ودروئ ، او ډیسک غیر نصب کړئ.

په دنده کې د سیسټم مدیر د کار د بدلون په جریان کې د ټول پورټل عملیات مسؤل دی. هغه د پیښو څیړنه کوي، ترمیم کوي، او د پراختیا کونکو سره مرسته کوي چې کوچني کارونه بشپړ کړي. هغه یوازې د هارډ ډرایو سره معامله نه کوي.

مخکې، د معلوماتو مرکز انجنیرانو د سیسټم مدیر سره د چیٹ له لارې اړیکه نیولې. انجینرانو د جیرا ټکټونو لینکونه واستول، مدیر یې تعقیب کړ، په ځینو نوټ پیډ کې یې د کار لاګ ساتل. مګر چیټونه د داسې کارونو لپاره ناامنه دي: معلومات هلته جوړ شوي ندي او په چټکۍ سره ورک شوي. او مدیر کولی شي په ساده ډول د کمپیوټر څخه لیرې شي او د یو څه وخت لپاره غوښتنو ته ځواب ونه وايي ، پداسې حال کې چې انجینر په سرور کې د ډیسکونو سټیک سره ودرېد او انتظار یې کاوه.

مګر ترټولو بد شی دا و چې مدیرانو بشپړ عکس نه و لیدلی: کوم ډیسک پیښې شتون لري ، چیرې چې احتمالي ستونزه رامینځته کیدی شي. دا د دې حقیقت له امله دی چې موږ د HW ټولې پیښې انجینرانو ته سپارو. هو، دا ممکنه وه چې ټولې پیښې د مدیر په ډشبورډ کې ښکاره کړئ. مګر ډیری یې شتون لري، او مدیر یوازې د ځینو لپاره ښکیل وو.

برسېره پردې، انجنیر نشي کولی لومړیتوبونه په سمه توګه وټاکي، ځکه چې هغه د ځانګړو سرورونو هدف یا د ډرایو ترمنځ د معلوماتو ویش په اړه هیڅ نه پوهیږي.

د بدیل نوې کړنلاره

لومړی شی چې موږ وکړل د ډیسک ټولې پیښې په جلا ډول "HW ډیسک" ته واړولې او د "د وسیلې نوم" ، "سایز" او "ډیسک ډول" ساحې یې پکې اضافه کړې ترڅو دا معلومات په ټیکټ کې زیرمه شي او په دوامداره توګه په چیٹ کې تبادله نه ده.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
موږ دا هم ومنله چې د یوې پیښې په جریان کې موږ به یوازې یو ډیسک بدل کړو. دا د پام وړ د اتوماتیک پروسې ساده کول، د احصایې راټولول او په راتلونکي کې کار کول.

سربیره پردې ، موږ د "مسؤل مدیر" ساحه اضافه کړه. په دنده کې د سیسټم مدیر په اوتومات ډول هلته داخل شوی. دا خورا اسانه دی، ځکه چې اوس انجنیر تل ګوري چې څوک مسؤلیت لري. اړتیا نشته چې کیلنڈر ته لاړ شئ او لټون وکړئ. دا دا ساحه وه چې د مدیر په ډشبورډ کې د ټیکټونو ښودلو امکان یې رامینځته کړی چې ممکن د هغه مرستې ته اړتیا ولري.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
د دې لپاره چې ډاډ ترلاسه شي چې ټول ګډونوال د نوښتونو څخه اعظمي ګټې ترلاسه کړي، موږ فلټرونه او ډشبورډونه جوړ کړل او هلکانو ته یې د هغوی په اړه وویل. کله چې خلک بدلونونه درک کړي، نو دوی له دوی څخه د یو څه غیر ضروري په توګه ځان نه لرې کوي. د انجنیر لپاره دا مهمه ده چې د ریک شمیره معلومه کړي چیرې چې سرور موقعیت لري، د ډیسک اندازه او ډول. مدیر ته اړتیا لري، تر ټولو لومړی، پوه شي چې دا د سرورونو کوم ډول ګروپ دی او د ډیسک ځای په ځای کولو کې به څه اغیزه ولري.

د ساحو شتون او د دوی ښودنه مناسبه ده ، مګر دا موږ د چیټونو کارولو اړتیا څخه نه شو ژغورلی. د دې کولو لپاره، موږ باید د کار جریان بدل کړو.

پخوا به داسې وه:

د ځواب وړ سره د ډیسک بدلولو اتومات کول
دا څنګه انجینران نن ورځ کار ته دوام ورکوي کله چې دوی د مدیر مرستې ته اړتیا نلري.

لومړی کار چې موږ یې وکړ یو نوی حالت معرفي کړ تحقیق وکړئ. ټکټ په دې حالت کې دی کله چې انجنیر تر اوسه پریکړه نه ده کړې چې ایا هغه به مدیر ته اړتیا ولري که نه. د دې حالت له لارې، انجنیر کولی شي ټیکټ مدیر ته انتقال کړي. سربیره پردې ، موږ دا حالت د ټکټونو نښه کولو لپاره کاروو کله چې ډیسک ځای په ځای کولو ته اړتیا وي ، مګر ډیسک پخپله سایټ کې ندي. دا د CDNs او لرې پرتو سایټونو په قضیه کې پیښیږي.

موږ وضعیت هم اضافه کړ چمتو. ټیکټ د ډیسک بدلولو وروسته دې ته لیږدول کیږي. دا ، هرڅه دمخه ترسره شوي ، مګر HW/SW RAID په سرور کې همغږي شوی. دا کولی شي ډیر وخت ونیسي.

که چیرې یو مدیر په کار کې ښکیل وي، سکیم یو څه ډیر پیچلی کیږي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
له حالت څخه د پرانیستې ټکټ د سیسټم مدیر او انجنیر دواړو لخوا ژباړل کیدی شي. په حالت کې د پرمختګ په حال کې مدیر ډیسک له گردش څخه لرې کوي ترڅو انجینر په ساده ډول دا وباسي: بیک لایټ فعالوي ، ډیسک غیر نصبوي ، غوښتنلیکونه ودروي ، د سرورونو ځانګړي ګروپ پورې اړه لري.

ټکټ بیا ورته لیږدول کیږي د بدلون لپاره چمتو دی: دا انجنیر ته یو سیګنال دی چې ډیسک ایستل کیدی شي. په جیرا کې ټولې ساحې لا دمخه ډکې شوې ، انجینر پوهیږي چې د ډیسک کوم ډول او اندازه ده. دا ډاټا یا په اوتومات ډول په پخواني حالت یا د مدیر لخوا داخلیږي.

د ډیسک بدلولو وروسته، د ټکټ حالت بدل شوی بدل شوی. دا ګوري چې سم ډیسک داخل شوی ، تقسیم کول ترسره شوي ، غوښتنلیک په لاره اچول شوی او د ډیټا بیا رغونې ځینې دندې پیل شوي. ټیکټ هم حالت ته لیږدول کیدی شي چمتو، پدې حالت کې به مدیر مسؤل پاتې شي ، ځکه چې هغه ډیسک په گردش کې واچاوه. بشپړ ډیاګرام داسې ښکاري.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
د نویو ساحو اضافه کول زموږ ژوند خورا اسانه کړی. هلکانو د جوړښت شوي معلوماتو سره کار پیل کړ، دا څرګنده شوه چې څه باید وشي او په کوم پړاو کې. لومړیتوبونه خورا ډیر اړونده شوي، ځکه چې دوی اوس د مدیر لخوا ټاکل شوي.

چیټونو ته اړتیا نشته. البته، مدیر کولی شي انجینر ته ولیکي "دا اړتیا ده چې ګړندي ځای په ځای شي،" یا "ماښام دی، ایا تاسو وخت لرئ چې دا بدل کړئ؟" مګر موږ نور په دې مسلو هره ورځ په چیټونو کې خبرې نه کوو.

ډیسکونه په بیچونو بدلیدل پیل کړل. که چیرې مدیر لږ څه دمخه کار ته راشي، هغه وړیا وخت لري، او تر اوسه هیڅ شی نه دی شوی، هغه کولی شي د ځای په ځای کولو لپاره یو شمیر سرورونه چمتو کړي: ساحې ډک کړئ، ډیسکونه د گردش څخه لرې کړئ او دنده یې انجنیر ته لیږدول. انجنیر یو څه وروسته د معلوماتو مرکز ته راځي، دنده ګوري، د ګودام څخه اړین ډرایو اخلي او سمدلاسه یې بدلوي. د پایلې په توګه، د بدیل کچه لوړه شوې.

د کاري فلو د جوړولو پر مهال زده شوي درسونه

  • کله چې یو طرزالعمل جوړ کړئ، تاسو اړتیا لرئ چې د مختلفو سرچینو څخه معلومات راټول کړئ.
    زموږ ځینې مدیران نه پوهیدل چې انجینر پخپله ډیسکونه بدلوي. ځینې ​​​​خلک فکر کاوه چې د MD RAID ترکیب د انجینرانو لخوا اداره کیږي، که څه هم ځینې یې حتی دا کار کولو ته لاسرسی نه درلود. ځینې ​​مخکښ انجنیرانو دا کار کړی، مګر تل نه ځکه چې دا پروسه په هر ځای کې نه وه بیان شوې.
  • کړنلاره باید ساده او د پوهیدو وړ وي.
    دا د یو شخص لپاره ستونزمن کار دی چې ډیری ګامونه په ذهن کې وساتي. په جیرا کې د ګاونډیو خورا مهم دریځونه باید په اصلي سکرین کې ځای په ځای شي. تاسو کولی شئ د دوی نوم بدل کړئ، د بیلګې په توګه، موږ د بدلون لپاره چمتو په پرمختګ غږ کوو. او نور حالتونه په ډراپ-ډاون مینو کې پټ کیدی شي ترڅو دوی د سترګو درد نه وي. مګر دا غوره ده چې خلک محدود نه کړئ، دوی ته د لیږد فرصت ورکړئ.
    د نوښت ارزښت تشریح کړئ. کله چې خلک پوه شي، دوی د نوي طرزالعمل ډیر مني. دا زموږ لپاره خورا مهم و چې خلک د ټولې پروسې له لارې کلیک نه کوي، مګر دا تعقیبوي. بیا موږ پدې باندې اتومات جوړ کړ.
  • انتظار وکړئ، تحلیل کړئ، دا معلومه کړئ.
    د طرزالعمل په جوړولو، تخنیکي تطبیق، غونډو او بحثونو مو شاوخوا یوه میاشت وخت نیولی و. او تطبیق له دریو میاشتو څخه ډیر وخت نیسي. ما ولیدل چې خلک ورو ورو د نوښت کارولو پیل کوي. په لومړیو مرحلو کې ډیر منفي وو. مګر دا پخپله د طرزالعمل او د هغې تخنیکي پلي کولو څخه په بشپړه توګه خپلواکه وه. د مثال په توګه، یو مدیر جیرا نه کارولی، مګر په کنفلونس کې د جیرا پلگ ان، او ځینې شیان هغه ته شتون نلري. موږ هغه ته جیرا وښوده، او د مدیر محصول دواړه د عمومي دندو او د ډیسکونو ځای په ځای کولو لپاره لوړ شو.

د ډیسک بدلولو اتومات کول

موږ څو ځله د ډیسک بدلولو اتومات کولو ته نږدې شو. موږ لا دمخه پرمختګونه او سکریپټونه درلودل، مګر دا ټول په متقابل یا لاسي ډول کار کوي او د پیل کولو اړتیا لري. او یوازې د نوي طرزالعمل له معرفي کولو وروسته موږ پوه شو چې دا په ریښتیا هغه څه و چې موږ ورک وو.

له دې چې اوس زموږ د بدیل پروسه په مرحلو ویشل شوې ده، چې هر یو یې یو ځانګړی لوبغاړی او د کړنو لیست لري، موږ کولی شو اتومات په مرحلو کې فعال کړو، او ټول په یوځل کې نه. د مثال په توګه ، ترټولو ساده مرحله - چمتو (د RAID / ډیټا ترکیب چیک کول) په اسانۍ سره بوټ ته سپارل کیدی شي. کله چې بوټ لږ څه زده کړل، تاسو کولی شئ دا یو ډیر مهم دنده ورکړئ - د ډیسک په گردش کې اچول، او نور.

د ژوبڼ تنظیمات

مخکې لدې چې موږ د بوټ په اړه وغږیږو ، راځئ چې زموږ د تاسیساتو ژوبڼ ته یو لنډ سفر وکړو. تر ټولو لومړی، دا زموږ د زیربناوو د لوی اندازې له امله دی. دوهم، موږ هڅه کوو چې د هر خدمت لپاره غوره هارډویر ترتیب غوره کړو. موږ شاوخوا 20 هارډویر RAID ماډلونه لرو ، چې ډیری یې LSI او اډاپټیک دي ، مګر د مختلف نسخو HP او DELL هم شتون لري. هر RAID کنټرولر د خپل مدیریت وړتیا لري. د امرونو سیټ او د دوی صادرول ممکن د هر RAID کنټرولر لپاره له نسخې څخه نسخې ته توپیر ولري. چیرته چې HW-RAID نه کارول کیږي، mdraid کارول کیدی شي.

موږ تقریبا ټول نوي نصبونه د ډیسک بیک اپ پرته ترسره کوو. موږ هڅه کوو چې نور هارډویر او سافټویر RAID ونه کاروو، ځکه چې موږ خپل سیسټمونه د ډیټا مرکز په کچه بیک اپ کوو، نه سرورونه. مګر البته دلته ډیری میراث سرورونه شتون لري چې ملاتړ ته اړتیا لري.

چیرته چې د RAID کنټرولرونو کې ډیسکونه خام وسیلو ته لیږدول کیږي، چیرته چې JBODs کارول کیږي. په سرور کې د یو سیسټم ډیسک سره تشکیلات شتون لري ، او که چیرې دا ځای په ځای کولو ته اړتیا ولري ، نو تاسو باید د ورته نسخو OS او غوښتنلیکونو نصبولو سره سرور بیا نصب کړئ ، بیا د ترتیب فایلونه اضافه کړئ ، غوښتنلیکونه لانچ کړئ. د سرور ډیری ګروپونه هم شتون لري چیرې چې بیک اپ د ډیسک فرعي سیسټم په کچه نه ترسره کیږي ، مګر په مستقیم ډول پخپله غوښتنلیکونو کې.

په مجموع کې، موږ له 400 څخه ډیر ځانګړي سرور ګروپونه لرو چې نږدې 100 مختلف غوښتنلیکونه پرمخ وړي. د دومره لوی شمیر اختیارونو پوښلو لپاره ، موږ څو اړخیز اتومات وسیلې ته اړتیا لرو. په غوره توګه د ساده DSL سره، نو نه یوازې هغه څوک چې دا یې لیکلي وي د دې ملاتړ کولی شي.

موږ ځواب ورکوونکی غوره کړ ځکه چې دا بې اجنټ دی: د زیربنا چمتو کولو ته اړتیا نه وه، یو چټک پیل. برسېره پردې، دا په Python کې لیکل شوی، کوم چې په ټیم کې د معیار په توګه منل شوی.

عمومي سکیم

راځئ چې د مثال په توګه د یوې پیښې په کارولو سره د عمومي اتوماتیک سکیم وګورو. زیبکس معلومه کړه چې د sdb ډیسک ناکام شوی، محرک رڼا کوي، او په جیرا کې یو ټیکټ رامینځته شوی. مدیر ورته وکتل، پوه شو چې دا نه نقل دی او نه غلط مثبت، دا دی چې ډیسک بدلولو ته اړتیا لري، او ټکټ یې د لیږد په حال کې دی.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
د DiskoBot غوښتنلیک، په Python کې لیکل شوی، په وخت سره د نوي ټکټونو لپاره جیرا رایه ورکوي. دا په ګوته کوي چې یو نوی د پرمختګ ټیکټ څرګند شوی ، اړونده تار پیل شوی ، کوم چې په ځواب کې د لوبې کتاب پیل کوي (دا په جیرا کې د هر حالت لپاره ترسره کیږي). په دې حالت کې، Prepare2change پیل شوی.

ځواب کوربه ته لیږل کیږي، ډیسک له گردش څخه لیرې کوي او د کال بیکس له لارې غوښتنلیک ته وضعیت راپور ورکوي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
د پایلو پراساس ، بوټ په اوتومات ډول ټیکټ د بدلون لپاره چمتو ته لیږدوي. انجینر یو خبرتیا ترلاسه کوي او د ډیسک بدلولو ته ځي ، وروسته له هغه چې هغه ټیکټ بدل شوي ته لیږدوي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول
د پورته بیان شوي سکیم سره سم، ټیکټ بیرته بوټ ته ځي، کوم چې بل د لوبې کتاب پیلوي، کوربه ته ځي او ډیسک په گردش کې اچوي. بوټ ټکټ بندوي. هورې!

د ځواب وړ سره د ډیسک بدلولو اتومات کول
اوس راځئ چې د سیسټم د ځینو برخو په اړه خبرې وکړو.

ډیسکوبوټ

دا اپلیکیشن په Python لیکل شوی. دا د JQL مطابق د جیرا څخه ټکټونه غوره کوي. د ټیکټ حالت پورې اړه لري ، وروستی اړونده هینډلر ته ځي ، کوم چې په پایله کې د وضعیت سره سم ځواب ورکوونکی پلی بوک په لاره اچوي.

JQL او د رایې ورکولو وقفې د غوښتنلیک ترتیب کولو فایل کې تعریف شوي.

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

د مثال په توګه، د پرمختګ په حالت کې د ټکټونو په منځ کې، یوازې هغه کسان غوره شوي چې د ډیسک اندازه او د وسیلې نوم ساحې ډک شوي. د وسیلې نوم د بلاک وسیلې نوم دی چې د پلی بوک اجرا کولو لپاره اړین دی. د ډیسک اندازه ته اړتیا ده ترڅو انجینر پوه شي چې کوم اندازې ډیسک ته اړتیا ده.

او د چمتو حالت سره د ټیکټونو په مینځ کې ، د dbot_ignore لیبل سره ټکټونه فلټر شوي. په هرصورت، موږ د جیرا لیبل دواړه د ورته فلټر کولو او د نقل ټکټونو نښه کولو او احصایو راټولولو لپاره کاروو.

که چیرې د لوبې کتاب ناکام شي، جیرا د dbot_failed لیبل ګماري ترڅو دا وروسته ترتیب شي.

د ځواب وړ سره متقابل عمل

غوښتنلیک د ځواب ورکولو له لارې اړیکه نیسي د ځواب وړ Python API. د playbook_executor لپاره موږ د فایل نوم او د متغیرونو سیټ تیر کړو. دا تاسو ته اجازه درکوي چې ځواب ورکوونکي پروژه د منظم yml فایلونو په بڼه وساتئ، د دې پر ځای چې د Python کوډ کې یې تشریح کړئ.

همدارنګه په ځواب کې، د *extra_vars* له لارې، د بلاک وسیلې نوم، د ټکټ وضعیت، او همدارنګه د کال بیک_url، چې د مسلې کلیدي لري - دا په HTTP کې د کال بیک لپاره کارول کیږي.

د هر لانچ لپاره، یو لنډمهاله لیست جوړیږي، چې یو کوربه او هغه ګروپ لري چې دا کوربه پورې اړه لري، نو د ګروپ_vars پلي کیږي.

دلته د یوې دندې مثال دی چې د HTTP کال بیک پلي کوي.

موږ د کالبیک په کارولو سره د پلی بوکونو اجرا کولو پایله ترلاسه کوو. دوی په دوه ډوله دي:

  • د ځواب وړ کال بیک پلگ ان، دا د پلی بوک اجرا کولو پایلو په اړه معلومات چمتو کوي. دا هغه دندې تشریح کوي چې پیل شوي، په بریالیتوب یا ناکامه توګه بشپړ شوي. دا کال بیک ویل کیږي کله چې د لوبې کتاب لوبې پای ته ورسوي.
  • د پلی بوک لوبولو پرمهال د معلوماتو ترلاسه کولو لپاره HTTP کال بیک. په ځواب ورکوونکي دنده کې موږ خپل غوښتنلیک ته د POST/GET غوښتنه اجرا کوو.

تغیرات د HTTP کال بیک (s) له لارې تیریږي کوم چې د پلی بوک اجرا کولو پرمهال تعریف شوي او دا چې موږ غواړو په راتلونکو منډو کې خوندي او وکاروو. موږ دا معلومات په sqlite کې لیکو.

موږ نظرونه هم پریږدو او د HTTP کال بیک له لارې د ټکټ حالت بدلوو.

د HTTP کال بیک

# 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

د ورته ډول ډیری دندو په څیر، موږ دا په جلا عام فایل کې واچوو او د اړتیا په صورت کې یې شامل کړئ، ترڅو دا په دوامداره توګه د پلی بوکس کې تکرار نشي. پدې کې د کال بیک_ یو آر ایل شامل دی، کوم چې د مسلې کلیدي او کوربه نوم لري. کله چې ځواب ورکونکی د دې POST غوښتنه اجرا کوي، بوټ پوهیږي چې دا د داسې پیښې د یوې برخې په توګه راغلی.

او دلته د پلی بوک څخه یوه بیلګه ده ، په کوم کې چې موږ د 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

دا دنده د جیرا ټیکټ د "بدلون لپاره چمتو" حالت ته لیږدوي او تبصره اضافه کوي. همچنان ، د mdam_data متغیر د md وسیلو لیست ذخیره کوي له کوم څخه چې ډیسک لرې شوی ، او parted_info د پارټډ څخه د برخې ډمپ ذخیره کوي.

کله چې انجینر یو نوی ډیسک داخل کړي، موږ کولی شو دا متغیرات د پارشن ډمپ د بیرته راګرځولو لپاره وکاروو، او همدارنګه ډیسک د md وسیلو ته داخل کړو چې له هغه څخه لیرې شوی و.

د ځواب وړ چک حالت

دا د اتوماتیک چلولو لپاره ویره وه. له همدې امله ، موږ پریکړه وکړه چې ټول پلی بوکونه په موډ کې پرمخ بوزو
وچه منډې، په کوم کې چې ځواب ورکونکي په سرورونو کې هیڅ عمل نه ترسره کوي ، مګر یوازې د دوی تقلید کوي.

دا ډول لانچ د جلا کال بیک ماډل له لارې پرمخ وړل کیږي ، او د پلی بوک اجرا کولو پایله په جیرا کې د تبصرې په توګه خوندي کیږي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول

لومړی، دا د بوټو او لوبو کتابونو کار تایید کول ممکن کړي. دوهم، دا په بوټ کې د مدیرانو باور زیات کړی.

کله چې موږ تایید تیر کړ او پوه شو چې تاسو نه یوازې په وچ رن موډ کې ځواب ورکوئ ، موږ په جیرا کې د رن ډیسکوبوټ تڼۍ رامینځته کړې ترڅو ورته پلی بوک په ورته کوربه کې د ورته تغیراتو سره پیل کړي ، مګر په نورمال حالت کې.

برسېره پردې، تڼۍ د لوبې کتاب د بیا پیلولو لپاره کارول کیږي که چیرې دا خراب شي.

د لوبو کتابونو جوړښت

ما دمخه یادونه کړې چې د جیرا ټیکټ حالت پورې اړه لري ، بوټ مختلف لوبو کتابونه پیلوي.

لومړی، د ننوتلو تنظیم کول خورا اسانه دي.
دوهم، په ځینو مواردو کې دا په ساده ډول ضروري ده.

د مثال په توګه ، کله چې د سیسټم ډیسک ځای په ځای کول ، تاسو اړتیا لرئ لومړی د پلي کولو سیسټم ته لاړشئ ، یوه دنده رامینځته کړئ ، او د سم ځای پرځای کولو وروسته ، سرور به د ssh له لارې د لاسرسي وړ شي ، او تاسو کولی شئ غوښتنلیک په هغې کې راوباسئ. که موږ دا ټول په یو لوبو کتاب کې ترسره کړي، نو ځواب به د کوربه د شتون له امله د بشپړولو توان ونلري.

موږ د سرورونو هرې ډلې لپاره د ځواب وړ رولونه کاروو. دلته تاسو لیدلی شئ چې څنګه د لوبو کتابونه په یو کې تنظیم شوي دي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول

دا اسانه دی ځکه چې دا سمدلاسه روښانه کیږي چې کوم دندې موقعیت لري. په main.yml کې، کوم چې د ځواب ورکوونکي رول لپاره داخله ده، موږ کولی شو په ساده ډول د ټکټ حالت یا عمومي دندې شامل کړو چې د هرچا لپاره اړین دي، د بیلګې په توګه، د پیژندنې تیریدل یا د نښه ترلاسه کول.

تحقیقات.yml

د تفتیش او خلاص حالت کې د ټکټونو لپاره چلیږي. د دې لوبو کتاب لپاره ترټولو مهم شی د بلاک وسیلې نوم دی. دا معلومات تل شتون نلري.

د دې ترلاسه کولو لپاره، موږ د جیرا لنډیز تحلیل کوو، د زیبکس محرک وروستی ارزښت. دا ممکن د بلاک وسیلې نوم ولري - بختور. یا دا ممکن د ماونټ نقطه ولري ، بیا تاسو اړتیا لرئ سرور ته لاړشئ ، دا پارس کړئ او اړین ډیسک محاسبه کړئ. ټریګر کولی شي د scsi پته یا ځینې نور معلومات هم انتقال کړي. مګر دا هم پیښیږي چې هیڅ نښې شتون نلري، او تاسو باید تحلیل کړئ.

د بلاک وسیلې نوم موندلو سره ، موږ له دې څخه د ډیسک ډول او اندازې په اړه معلومات راټولوو ترڅو په جیرا کې ساحې ډکې کړو. موږ د پلورونکي ، ماډل ، فرم ویئر ، ID ، SMART په اړه معلومات هم لرې کوو او دا ټول د جیرا ټیکټ کې په تبصره کې دننه کوو. مدیر او انجینر نور اړتیا نلري د دې معلوماتو لټون وکړي. 🙂

د ځواب وړ سره د ډیسک بدلولو اتومات کول

ready2change.yml

د څرخیدو څخه ډیسک لرې کول ، د ځای په ځای کولو لپاره چمتو کول. تر ټولو ستونزمن او مهم پړاو. دا هغه ځای دی چې تاسو کولی شئ غوښتنلیک ودروئ کله چې دا باید ودرول نشي. یا یو ډیسک واخلئ چې کافي عکسونه یې نه درلودل ، او پدې توګه په کاروونکو اغیزه کوي ، ځینې معلومات له لاسه ورکوي. دلته موږ په چیٹ کې ډیری چکونه او خبرتیاوې لرو.

په ساده حالت کې، موږ د HW/MD RAID څخه د ډیسک لرې کولو په اړه خبرې کوو.

په ډیرو پیچلو حاالتو کې (زموږ د ذخیره کولو سیسټمونو کې)، کله چې بیک اپ د غوښتنلیک په کچه ترسره کیږي، تاسو اړتیا لرئ چې د API له لارې غوښتنلیک ته لاړ شئ، د ډیسک محصول راپور ورکړئ، غیر فعال کړئ او بیا رغونه پیل کړئ.

موږ اوس په ډله ایزه توګه مهاجرت کوو وريځ، او که چیرې سرور کلاوډ میشته وي ، نو ډیسکوبوټ کلاوډ API ته زنګ وهي ، وايي چې دا د دې منین سره کار کوي - سرور چلونکي کانټینرونه - او پوښتنه کوي "له دې منین څخه ټول کانټینرونه مهاجرت کړئ." او په ورته وخت کې ، د ډیسک بیک لایټ فعالوي ترڅو انجینر سمدلاسه وګوري چې کوم یو ایستلو ته اړتیا لري.

change.yml

د ډیسک ځای په ځای کولو وروسته، موږ لومړی د هغې شتون وګورو.

انجنیران تل نوي ډرایو نه نصبوي، نو موږ د SMART ارزښتونو لپاره چک اضافه کړ چې موږ ته قناعت ورکوي.

موږ کوم صفتونه ګورو؟د بیا ځای پرځای شوي سکټورونو شمیر (5) < 100
د اوسني پاتې سکتور شمیر (107) == 0

که چیرې ډرایو په ازموینه کې ناکام شي ، انجینر ته خبر ورکول کیږي چې دا بیا ځای په ځای کړي. که هرڅه په ترتیب سره وي ، بیک لائټ بندیږي ، نښه کول پلي کیږي او ډیسک په گردش کې اچول کیږي.

ready.yml

ترټولو ساده قضیه: په غوښتنلیک کې د HW/SW RAID همغږي کول یا د معلوماتو ترکیب بشپړ کول.

د غوښتنلیک API

ما څو ځله یادونه کړې چې بوټ اکثرا د غوښتنلیک APIs ته لاسرسی لري. البته، ټول غوښتنلیکونه اړین میتودونه نه درلودل، نو دوی باید تعدیل شي. دلته ترټولو مهم میتودونه دي چې موږ یې کاروو:

  • حالت. د کلستر یا ډیسک وضعیت د پوهیدو لپاره چې ایا ورسره کار کیدی شي؛
  • پیل / ودرول. د ډیسک فعالول / غیر فعال کول؛
  • مهاجرت/بیارغول. د ډیټا مهاجرت او بیا رغونه د ځای په ځای کولو پرمهال او وروسته.

د ځواب وړ څخه زده شوي درسونه

زه واقعیا د ځواب وړ سره مینه لرم. مګر ډیری وختونه ، کله چې زه د خلاصې سرچینې مختلف پروژې ګورم او وګورم چې خلک څنګه د لوبو کتابونه لیکي ، زه یو څه ویره لرم. د کله/لوپ پیچلي منطقي مداخله، د شیل/کمانډ د پرله پسې کارونې له امله د انعطاف پذیرۍ او د وړتیا نشتوالی.

موږ پریکړه وکړه چې هر څه د امکان تر حده ساده کړو ، د ځواب وړ - ماډلریت ګټې څخه ګټه پورته کړو. په لوړه کچه د لوبو کتابونه شتون لري؛ دوی د هر مدیر لخوا لیکل کیدی شي ، د دریمې ډلې پراختیا کونکي څوک چې لږ ځواب ویونکی پوهیږي.

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

که چیرې ځینې منطق په پلی بوکس کې پلي کول ستونزمن وي ، موږ یې د ځواب وړ ماډل یا فلټر ته واړوو. سکریپټونه په Python یا بلې ژبې کې لیکل کیدی شي.

دوی د لیکلو لپاره اسانه او چټک دي. د مثال په توګه، د ډیسک بیک لایټ ماډل، چې یو مثال یې پورته ښودل شوی، د 265 لینونو څخه جوړ دی.

د ځواب وړ سره د ډیسک بدلولو اتومات کول

په ټیټه کچه کې کتابتون دی. د دې پروژې لپاره، موږ یو جلا غوښتنلیک لیکلی، د هارډویر او سافټویر RAIDs په اړه یو ډول خلاصون چې ورته غوښتنې ترسره کوي.

د ځواب وړ سره د ډیسک بدلولو اتومات کول

د ځواب ترټولو لوی ځواک د دې سادگي او روښانه لوبې کتابونه دي. زه باور لرم چې تاسو اړتیا لرئ دا وکاروئ او ډارونکي یامل فایلونه او لوی شمیر شرایط ، شیل کوډ او لوپونه رامینځته نه کړئ.

که تاسو غواړئ زموږ تجربه د ځواب وړ API سره تکرار کړئ، دوه شیان په ذهن کې وساتئ:

  • Playbook_executor او playbooks په عموم کې د وخت پای نشي ورکول کیدی. د ssh ناستې مهال ویش شتون لري، مګر د لوبې کتاب کې هیڅ وخت شتون نلري. که موږ هڅه وکړو چې یو ډیسک غیر نصب کړو چې نور په سیسټم کې شتون نلري، د لوبې کتاب به بې پایه پرمخ ځي، نو موږ باید د هغې لانچ په جلا ریپر کې لپاسه کړو او د وخت پای سره یې وژنو.
  • ځواب وړ پروسو باندې چلیږي، نو د دې API تار خوندي ندی. موږ خپل ټول د لوبو کتابونه یو واحد تار چلوو.

د پایلې په توګه، موږ وکولی شو د شاوخوا 80٪ ډیسکونو ځای په ځای کولو اتومات کړو. په ټولیز ډول، د بدیل کچه دوه برابره شوې ده. نن ورځ ، مدیر یوازې پیښې ته ګوري او پریکړه کوي چې ایا ډیسک بدلولو ته اړتیا لري یا نه ، او بیا یو کلیک کوي.

مګر اوس موږ بلې ستونزې ته مخه کوو: ځینې نوي مدیران نه پوهیږي چې څنګه ډرایو بدل کړي. 🙂

سرچینه: www.habr.com

Add a comment