په مصروف پروژو کې د سیف سره کار کولو لپاره لارښوونې او چلونه

په مصروف پروژو کې د سیف سره کار کولو لپاره لارښوونې او چلونه

د مختلف بارونو سره په پروژو کې د شبکې ذخیره کولو په توګه د Ceph کارول ، موږ ممکن د مختلف کارونو سره مخ شو چې په لومړي نظر کې ساده یا کوچني نه ښکاري. د مثال په ډول:

  • په نوي کلستر کې د پخوانیو سرورونو جزوي کارونې سره له زاړه Ceph څخه نوي ته د معلوماتو مهاجرت؛
  • په Ceph کې د ډیسک ځای تخصیص ستونزې حل کول.

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

لاندې تشریح شوي میتودونه د Ceph هرې نسخې لپاره اړوند دي. سربیره پردې ، دا حقیقت چې سیف کولی شي لوی مقدار ډیټا ذخیره کړي په پام کې ونیول شي: د معلوماتو له لاسه ورکولو او نورو ستونزو مخنیوي لپاره ، ځینې کړنې به په څو نورو کې "ویشل" شي.

د OSD په اړه مخکتنه

ځکه چې د بحث شویو دریو ترکیبونو څخه دوه یې OSD ته وقف شوي دي (د آبجیکٹ ذخیره ډیمون)، مخکې له دې چې په عملي برخه کې ډوب کړئ - په لنډه توګه په دې اړه چې په سیف کې څه دي او ولې دا خورا مهم دی.

تر ټولو لومړی، دا باید وویل شي چې د سیف ټول کلستر ډیری OSDs لري. هرڅومره چې شتون ولري ، په سیف کې د وړیا ډیټا حجم خورا لوی دی. له دې ځایه پوهیدل اسانه دي اصلي OSD فعالیت: دا د ټولو کلستر نوډونو فایل سیسټمونو کې د Ceph اعتراض ډاټا ذخیره کوي او دې ته د شبکې لاسرسی چمتو کوي (د لوستلو، لیکلو او نورو غوښتنو لپاره).

په ورته کچه، د نقل کولو پیرامیټونه د مختلف OSDs ترمنځ د شیانو کاپي کولو سره تنظیم شوي. او دلته تاسو کولی شئ د مختلفو ستونزو سره مخ شئ، هغه حلونه چې لاندې به یې بحث وشي.

قضیه نمبر 1. د معلوماتو له لاسه ورکولو پرته د Ceph کلستر څخه OSD په خوندي ډول لرې کړئ

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

د اسانتیا لپاره او د داسې وضعیت څخه مخنیوي لپاره چیرې چې د امرونو پلي کولو پرمهال ، موږ د اړتیا وړ OSD په ګوته کولو کې تېروتنه کوو ، موږ به یو جلا متغیر تنظیم کړو ، چې ارزښت به یې د حذف شوي OSD شمیره وي. راځه چې هغې ته زنګ ووهو ${ID} - دلته او لاندې، دا ډول متغیر د OSD شمیره بدلوي چې موږ ورسره کار کوو.

راځئ چې د کار پیل کولو دمخه حالت وګورو:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.46857 root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
 1   ssd 0.15619      osd.1     up     1.00000  1.00000
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2     up     1.00000  1.00000

د OSD لرې کولو پیل کولو لپاره ، تاسو اړتیا لرئ په اسانۍ سره ترسره کړئ reweight په دې باندې صفر ته. پدې توګه موږ په OSD کې د نورو OSDs سره توازن کولو سره د ډیټا مقدار کموو. د دې کولو لپاره، لاندې کمانډونه پرمخ وړئ:

ceph osd reweight osd.${ID} 0.98
ceph osd reweight osd.${ID} 0.88
ceph osd reweight osd.${ID} 0.78

... او همداسې تر صفر پورې.

مناسب توازن ته اړتیا دهترڅو معلومات له لاسه ورنکړي. دا په ځانګړې توګه ریښتیا ده که چیرې OSD د ډیټا لوی مقدار ولري. د دې لپاره چې ډاډ ترلاسه کړئ چې د امرونو اجرا کولو وروسته reweight هرڅه سم شول، تاسو کولی شئ دا بشپړ کړئ ceph -s یا په جلا ترمینل کړکۍ کې چلول ceph -w په ریښتیني وخت کې د بدلونونو لیدلو لپاره.

کله چې OSD "خالي" وي، تاسو کولی شئ د لیرې کولو لپاره معیاري عملیاتو ته لاړ شئ. د دې کولو لپاره، مطلوب OSD ریاست ته انتقال کړئ down:

ceph osd down osd.${ID}

راځئ چې OSD له کلستر څخه وباسو:

ceph osd out osd.${ID}

راځئ چې د OSD خدمت ودروو او په FS کې د هغې برخې غیر نصب کړو:

systemctl stop ceph-osd@${ID}
umount /var/lib/ceph/osd/ceph-${ID}

له څخه OSD لرې کړئ د کرش نقشه:

ceph osd crush remove osd.${ID}

راځئ چې د OSD کاروونکي حذف کړو:

ceph auth del osd.${ID}

او په نهایت کې ، راځئ چې پخپله OSD لرې کړو:

ceph osd rm osd.${ID}

تبصره: که تاسو د Ceph Luminous نسخه یا لوړ کاروئ، نو د پورته OSD لرې کولو مرحلې دوه کمانډونو ته راټیټ کیدی شي:

ceph osd out osd.${ID}
ceph osd purge osd.${ID}

که ، د پورته بیان شوي مرحلو بشپړولو وروسته ، تاسو کمانډ پرمخ وړئ ceph osd tree، بیا باید روښانه شي چې په سرور کې چیرې چې کار ترسره شوی و هلته نور OSDs شتون نلري د کوم لپاره چې پورته عملیات ترسره شوي:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF
-1       0.46857      root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2    up     1.00000  1.00000

د لارې په اوږدو کې، په یاد ولرئ چې د سیف کلستر حالت ته ځي HEALTH_WARN، او موږ به د OSDs شمیر او د موجود ډیسک ځای مقدار کې کمښت هم وګورو.

لاندې به هغه مرحلې تشریح کړي چې اړتیا ورته وي که تاسو غواړئ په بشپړ ډول سرور ودروئ او په وینا یې له سیف څخه لرې کړئ. په دې حالت کې، دا مهمه ده چې په یاد ولرئ د سرور بندولو دمخه، تاسو باید ټول OSDs لرې کړئ په دې سرور کې.

که چیرې پدې سرور کې نور OSDs نه وي پاتې ، نو د دوی لرې کولو وروسته تاسو اړتیا لرئ سرور د OSD نقشې څخه لرې کړئ hv-2د لاندې کمانډ په چلولو سره:

ceph osd crush rm hv-2

ړنګول mon له سرور څخه hv-2په بل سرور کې د لاندې کمانډ چلولو سره (د بیلګې په توګه پدې حالت کې، آن hv-1):

ceph-deploy mon destroy hv-2

له دې وروسته، تاسو کولی شئ سرور ودروئ او ورپسې کړنې پیل کړئ (د دې بیا ځای پرځای کول، او نور).

قضیه ۲. د ډیسک ځای توزیع په مخکې جوړ شوي Ceph کلستر کې

زه به دویمه کیسه د PG په اړه د وړاندیز سره پیل کړم (د پلی کولو ګروپونه). په Ceph کې د PG اصلي رول په اصل کې د Ceph څیزونو راټولول او په OSD کې یې بیا تکرار کول دي. هغه فورمول چې تاسو یې کولی شئ د PG اړین مقدار محاسبه کړئ اړونده برخه د Ceph اسناد. دا مسله هم هلته د ځانګړو مثالونو سره مطرح کیږي.

نو: د سیف کارولو پرمهال یو له عامو ستونزو څخه په سیف کې د حوضونو ترمینځ د OSD او PG غیر متوازن شمیر دی.

لومړی، د دې له امله، یو حالت رامینځته کیدی شي کله چې ډیری PGs په کوچني حوض کې مشخص شوي وي، کوم چې په کلستر کې د ډیسک ځای غیر منطقي کارول دي. دوهم، په عمل کې یو ډیر جدي ستونزه شتون لري: په یوه OSDs کې د معلوماتو ډیروالی. دا د کلستر لومړی لیږد ته اړتیا لري دولت ته HEALTH_WARN، او بیا HEALTH_ERR. د دې دلیل دا دی چې Ceph ، کله چې د موجود معلوماتو مقدار محاسبه کوي (تاسو کولی شئ دا له لارې ومومئ MAX AVAIL د کمانډ محصول کې ceph df د هر حوض لپاره په جلا توګه) په OSD کې د موجود معلوماتو مقدار پورې اړه لري. که چیرې لږترلږه په یوه OSD کې کافي ځای شتون ونلري، نور معلومات نشي لیکل کیدی تر هغه چې ډاټا په سمه توګه د ټولو OSDs ترمنځ ویشل شوي نه وي.

دا د روښانه کولو وړ ده چې دا ستونزې په لویه کچه د Ceph کلستر ترتیب کولو مرحله کې پریکړه کیږي. یو له هغو وسایلو څخه چې تاسو یې کارولی شئ Ceph PGCalc. د دې په مرسته، د PG اړین مقدار په روښانه توګه محاسبه کیږي. په هرصورت ، تاسو کولی شئ دا په داسې حالت کې هم وکاروئ چیرې چې د سیف کلستر لا د په غلطه توګه ترتیب شوی. دلته د روښانه کولو ارزښت لري چې د فکس کار د یوې برخې په توګه تاسو به ډیری احتمال د PGs شمیر کمولو ته اړتیا ولرئ ، او دا خصوصیت د Ceph په زړو نسخو کې شتون نلري (دا یوازې په نسخه کې څرګند شوی. نوټیلس).

نو، راځئ چې لاندې انځور تصور کړو: کلستر یو حالت لري HEALTH_WARN د یو OSD د ځای د ختمیدو له امله. دا به د یوې تېروتنې لخوا په ګوته شي HEALTH_WARN: 1 near full osd. لاندې د دې وضعیت څخه د وتلو لپاره الګوریتم دی.

تر ټولو لومړی، تاسو اړتیا لرئ چې د پاتې OSDs ترمنځ موجود معلومات وویشئ. موږ لا دمخه په لومړي قضیه کې ورته عملیات ترسره کړي، کله چې موږ نوډ "خراب کړل" - د یوازینۍ توپیر سره چې اوس به موږ یو څه کمولو ته اړتیا ولرو. reweight. د مثال په توګه، تر 0.95 پورې:

ceph osd reweight osd.${ID} 0.95

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

زموږ په ځانګړې قضیه کې، دا ټول لاندې راغلل:

  • ارزښت ډیر لوړ دی replication_count په یوه حوض کې،
  • په یوه حوض کې ډیر PG او په بل کې ډیر لږ.

راځئ چې مخکې ذکر شوي کیلکولیټر وکاروو. دا په روښانه توګه ښیي چې څه ته اړتیا ده چې داخل شي او په اصولو کې هیڅ پیچلي شتون نلري. د اړینو پیرامیټونو په ټاکلو سره، موږ لاندې سپارښتنې ترلاسه کوو:

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

وروستی کالم تاسو سره په نیویګیټ کې مرسته کوي - د PG شمیر وړاندیز شوی. زموږ په قضیه کې ، دوهم هم ګټور دی ، چیرې چې د نقل کولو پیرامیټر ښودل شوی ، ځکه چې موږ پریکړه کړې چې د نقل ضرب کونکي بدل کړو.

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

ceph osd pool $pool_name set $replication_size

او د بشپړیدو وروسته، موږ د پیرامیټر ارزښتونه بدلوو pg_num и pgp_num په لاندې ډول:

ceph osd pool set $pool_name pg_num $pg_number
ceph osd pool set $pool_name pgp_num $pg_number

مهم: موږ باید په هر حوض کې په ترتیب سره د PGs شمیر بدل کړو او په نورو حوضونو کې ارزښتونه بدل نه کړو تر هغه چې خبرداری ورک نشي "خراب شوي ډیټا بې ځایه کول" и "د مخونو شمیر کم شوی".

تاسو کولی شئ دا هم وګورئ چې هرڅه د کمانډ محصولاتو په کارولو سره ښه شوي ceph health detail и ceph -s.

دوسیه نمبر ۳. له LVM څخه Ceph RBD ته د مجازی ماشین لیږدول

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

ستونزه په مختلفو لارو حل کیدی شي - د بیلګې په توګه، بل سرور ته مهاجرت (که چیرې یو وي) یا سرور ته نوي ډیسکونه اضافه کړي. مګر دا تل ممکنه نه ده چې دا کار وکړي، نو د LVM څخه Ceph ته مهاجرت د دې ستونزې لپاره غوره حل کیدی شي. د دې اختیار په غوره کولو سره، موږ د سرورونو تر مینځ د مهاجرت نور بهیر هم ساده کوو، ځکه چې د محلي ذخیره کولو لپاره د یو هایپروایزر څخه بل ته اړتیا نشته. یوازینی کیچ دا دی چې تاسو باید VM ودروئ پداسې حال کې چې کار ترسره کیږي.

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

راځئ چې عملي برخې ته لاړ شو. په مثال کې موږ virsh کاروو او په وینا، libvirt. لومړی، ډاډ ترلاسه کړئ چې د Ceph حوض چې ډاټا به لیږدول کیږي د libvirt سره وصل دی:

virsh pool-dumpxml $ceph_pool

د حوض توضیحات باید د واک کولو ډیټا سره Ceph سره د پیوستون ډیټا ولري.

بل ګام دا دی چې د LVM عکس Ceph RBD ته بدل شوی. د اجرا کولو وخت اساسا د عکس په اندازې پورې اړه لري:

qemu-img convert -p -O rbd /dev/main/$vm_image_name rbd:$ceph_pool/$vm_image_name

د تبادلې وروسته، د LVM انځور به پاتې شي، کوم چې به ګټور وي که چیرې RBD ته د VM لیږدول ناکام شي او تاسو باید بدلونونه بیرته راوباسئ. همچنان ، د دې وړتیا ولرئ چې ګړندي بدلونونه بیرته راوباسئ ، راځئ چې د مجازی ماشین ترتیب کولو فایل بیک اپ جوړ کړو:

virsh dumpxml $vm_name > $vm_name.xml
cp $vm_name.xml $vm_name_backup.xml

... او اصلي (vm_name.xml). راځئ چې د ډیسک توضیحاتو سره یو بلاک ومومئ (د کرښې سره پیل کیږي <disk type='file' device='disk'> او سره پای ته رسیږي </disk>) او لاندې شکل ته یې کم کړئ:

<disk type='network' device='disk'>
<driver name='qemu'/>
<auth username='libvirt'>
  <secret type='ceph' uuid='sec-ret-uu-id'/>
 </auth>
<source protocol='rbd' name='$ceph_pool/$vm_image_name>
  <host name='10.0.0.1' port='6789'/>
  <host name='10.0.0.2' port='6789'/>
</source>
<target dev='vda' bus='virtio'/> 
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

راځئ چې ځینې توضیحات وګورو:

  1. پروتوکول ته source په Ceph RBD کې ذخیرې ته پته اشاره شوې (دا پته ده چې د سیف پول نوم او د RBD عکس په ګوته کوي ، کوم چې په لومړي مرحله کې ټاکل شوی و).
  2. په بلاک کې secret ډول ښودل شوی ceph, او همدارنګه د پټو UUID سره د نښلولو لپاره. د دې uuid د کمانډ په کارولو سره موندل کیدی شي virsh secret-list.
  3. په بلاک کې host د Ceph مانیټرونو ته پته اشاره شوې.

د تشکیلاتو فایل ایډیټ کولو او د RBD تبادلې ته د LVM بشپړولو وروسته ، تاسو کولی شئ د ترمیم شوي ترتیب فایل پلي کړئ او مجازی ماشین پیل کړئ:

virsh define $vm_name.xml
virsh start $vm_name

دا وخت دی چې وګورئ چې مجازی ماشین په سمه توګه پیل شوی: تاسو کولی شئ ومومئ، د بیلګې په توګه، د SSH یا له لارې د دې سره وصل کولو سره virsh.

که مجازی ماشین په سمه توګه کار کوي او تاسو کومه بله ستونزه ونه موندله، نو تاسو کولی شئ د LVM عکس حذف کړئ چې نور نه کارول کیږي:

lvremove main/$vm_image_name

پایلې

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

PS

زموږ په بلاګ کې هم ولولئ:

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

Add a comment