Шарҳ. тарҷума.: Ин мақола натиҷаи тадқиқоти мини-тадқиқотӣ мебошад, ки аз ҷониби муҳандисони IBM Cloud дар ҷустуҷӯи роҳи ҳалли мушкилоти воқеии марбут ба фаъолияти пойгоҳи додаҳои etcd гузаронида шудааст. Чунин вазифа барои мо хам дахл дошт, вале рафти фикру рафтори муаллифон дар доираи васеътар шояд шавковар бошад.
Хулосаи мухтасари тамоми мақола: fio ва ғайра
Фаъолияти кластери etcd аз суръати нигаҳдории асосӣ вобаста аст. Барои мониторинги иҷроиш, ва ғайра ченакҳои гуногуни Prometheus содир мекунад. Яке аз онхост wal_fsync_duration_seconds
. Дар ҳуҷҷатҳои etcd
Агар шумо дар бораи таъсиси кластери etcd дар мошинаҳои Linux қарор дошта бошед ва мехоҳед бисанҷед, ки оё дискҳои нигаҳдорӣ (масалан, SSDs) ба қадри кофӣ зуданд, мо тавсия медиҳем, ки озмоишгари машҳури I/O-ро истифода барем. test-data
бояд дар қисмати насбшудаи гардонандаи озмоишшаванда ҷойгир бошад):
fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest
Танҳо дидани натиҷа ва санҷидани он ки оё он ба фоизи 99-ум мувофиқат мекунад, боқӣ мемонад fdatasync
fsync/fdatasync/sync_file_range:
sync (usec): min=534, max=15766, avg=1273.08, stdev=1084.70
sync percentiles (usec):
| 1.00th=[ 553], 5.00th=[ 578], 10.00th=[ 594], 20.00th=[ 627],
| 30.00th=[ 709], 40.00th=[ 750], 50.00th=[ 783], 60.00th=[ 1549],
| 70.00th=[ 1729], 80.00th=[ 1991], 90.00th=[ 2180], 95.00th=[ 2278],
| 99.00th=[ 2376], 99.50th=[ 9634], 99.90th=[15795], 99.95th=[15795],
| 99.99th=[15795]
Якчанд қайдҳо:
- Дар мисоли боло мо параметрҳоро танзим кардем
--size
и--bs
барои як ҳолати мушаххас. Барои ба даст овардани натиҷаҳои пурмазмун азfio
, арзишҳоеро муайян кунед, ки барои ҳолати истифодаи шумо мувофиқанд. Чӣ тавр интихоб кардани онҳо дар поён муҳокима карда мешавад. - Танҳо дар давоми санҷиш
fio
зерсистемаи дискро бор мекунад. Дар ҳаёти воқеӣ, эҳтимол дорад, ки равандҳои дигар (ғайр аз онҳое, ки боwal_fsync_duration_seconds
). Чунин сарбории иловагӣ метавонад боиси афзоиши дарwal_fsync_duration_seconds
. Ба ибораи дигар, агар фоизи 99-ум аз санҷиш боfio
, танҳо каме камтар аз 10 ms, имкони хубе вуҷуд дорад, ки иҷрои нигоҳдорӣ нокифоя аст. - Барои санҷиш ба шумо версия лозим аст
fio
на камтар аз 3.5, зеро версияҳои кӯҳна натиҷаҳоро ҷамъ намекунандfdatasync
дар шакли фоизҳо. - Хулосаи дар боло овардашуда танҳо як порчаи хурди хулосаи умумӣ аст
fio
.
Тафсилот дар бораи fio ва ғайра
Чанд сухан дар бораи WALs ва ғайра
Одатан, пойгоҳи додаҳо истифода мебаранд
Ҳамин тариқ, ҳар боре, ки муштарӣ ба мағозаи КВ калид илова мекунад ё арзиши калиди мавҷударо навсозӣ мекунад, ва ғайра тавсифи амалиётро ба WAL илова мекунад, ки ин файли муқаррарӣ дар нигаҳдории доимӣ мебошад. etcd БОЯД 100% боварӣ дошта бошад, ки вуруди WAL воқеан пеш аз идома захира шудааст. Барои ноил шудан ба ин дар Linux, истифодаи занги система кофӣ нест write
fdatasync
- ин маҳз ҳамон чизест, ки etcd мекунад (чунон ки дар баромади зерин дида мешавад strace
8
- Идоракунии файли WAL):
21:23:09.894875 lseek(8, 0, SEEK_CUR) = 12808 <0.000012>
21:23:09.894911 write(8, ".20210220361223255266632$1020103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8) = 0 <0.008314>
Мутаассифона, навиштан ба нигаҳдории доимӣ каме вақт мегирад. Вақти тӯлонӣ барои анҷом додани занги fdatasync метавонад ба иҷрои etcd таъсир расонад. Дар ҳуҷҷатҳо барои анбор fdatasync
ҳангоми навиштан ба файл, WAL камтар аз 10 мс буд. Дигар ченакҳои марбут ба нигоҳдорӣ вуҷуд доранд, аммо ин мақола ба ин тамаркуз хоҳад кард.
Арзёбии нигоҳдорӣ бо истифода аз fio
Шумо метавонед арзёбӣ кунед, ки оё анбори муайян барои истифода бо etcd бо истифода аз утилита мувофиқ аст fio
истифода бурдан нихоят душвор аст. Утилита параметрҳои зиёде дорад ва омезиши гуногуни арзишҳои онҳо ба натиҷаҳои комилан дигар оварда мерасонад. Барои гирифтани баҳои оқилонаи etcd, шумо бояд боварӣ ҳосил кунед, ки сарбории навиштани аз ҷониби fio тавлидшуда то ҳадди имкон ба бори навиштани etcd ба файлҳои WAL шабеҳ бошад:
- Ин маънои онро дорад, ки тавлидшуда
fio
сарбории кор бояд ҳадди аққал як қатор навиштаҷоти пайдарпай ба файл бошад, ки дар он ҳар як амалиёти навиштан аз занги система иборат аст дар минбаъдаwrite
fdatasync
. - Барои фаъол кардани сабти пайдарпай, шумо бояд парчамро муайян кунед
--rw=write
. - он
fio
бо истифода аз зангҳо навиштwrite
(ва на дигар зангҳои система - масалан, ), парчамро истифода баредpwrite
--ioengine=sync
. - Дар охир, парчам
--fdatasync=1
кафолат медихад, ки дар паси хар якwrite
боядfdatasync
. - Ду параметри дигар дар мисоли мо:
--size
и--bs
- вобаста ба ҳолати мушаххаси истифода метавонад фарқ кунад. Боби оянда чӣ гуна танзим кардани онҳоро тавсиф мекунад.
Чаро мо fio-ро интихоб кардем ва чӣ тавр мо чӣ тавр сохтани онро ёд гирифтем
Ин ёддошт аз як ҳодисаи воқеие, ки мо дучор шуда будем, омадааст. Мо дар Kubernetes v1.13 кластер бо мониторинг дар Prometheus доштем. Дискҳои ҳолати сахт ҳамчун анбор барои etcd v3.2.24 истифода мешуданд. ченакҳои etcd таъхирҳои хеле баландро нишон доданд fdatasync
, ҳатто вақте ки кластер бекор буд. Мо ин ченакҳоро хеле шубҳанок донистем ва намедонем, ки онҳо маҳз чиро намояндагӣ мекунанд. Илова бар ин, кластер аз мошинҳои маҷозӣ иборат буд, бинобар ин гуфтан ғайриимкон буд, ки таъхир ба виртуализатсия вобаста аст ё SSD-ҳо гунаҳкоранд.
Илова бар ин, мо ба тағйироти гуногун дар конфигуратсияҳои сахтафзор ва нармафзор назар мекардем, аз ин рӯ ба мо роҳи арзёбии онҳо лозим буд. Албатта, метавон дар ҳар як конфигуратсия иҷро кардани etcd ва ба ченакҳои мувофиқи Prometheus нигоҳ кард, аммо ин кӯшиши зиёдро талаб мекунад. Ба мо роҳи оддии арзёбии конфигуратсияи мушаххас лозим буд. Мо мехостем фаҳмиши худро дар бораи ченакҳои Prometheus, ки аз etcd омадаанд, санҷем.
Барои ин ду масъаларо ҳал кардан лозим буд:
- Аввалан, бори I/O, ки etcd ҳангоми навиштан ба файлҳои WAL тавлид мекунад, чӣ гуна аст? Кадом зангҳои системавӣ истифода мешаванд? Андозаи блоки навиштан чӣ гуна аст?
- Дуюм, биёед бигӯем, ки мо ба саволҳои боло ҷавоб дорем. Чӣ тавр дубора тавлиди бори мувофиқ бо
fio
? Дар поёни корfio
— воситаи хеле фасеҳ бо параметрҳои зиёд (инро тафтиш кардан осон аст, масалан,дар ин ҷо — тахминан. тарҷума.).
Мо ҳарду масъаларо бо истифода аз равиши як фармон асоси ҳал кардем lsof
strace
- Бо кӯмаки
lsof
Шумо метавонед ҳамаи тавсифи файлҳои аз ҷониби раванд истифодашаванда ва инчунин файлҳое, ки ба онҳо ишора мекунанд, дидан кунед. - Бо кӯмаки
strace
шумо метавонед раванди аллакай иҷрошавандаро таҳлил кунед ё равандро иҷро кунед ва онро мушоҳида кунед. Фармон ҳамаи зангҳои системаро, ки тавассути ин раванд анҷом дода шудаанд ва ихтиёран, наслҳои онро нишон медиҳад. Охирин барои равандҳо муҳим аст ва ғайра яке аз чунин равандҳост.
Аввалин коре, ки мо кардем, истифода бурдан буд strace
барои омӯхтани сервери etcd дар кластери Kubernetes дар ҳоле ки он бекор буд.
Ҳамин тариқ, маълум шуд, ки блокҳои навиштан дар WAL хеле зич гурӯҳбандӣ шудаанд, ки аксарияти онҳо дар ҳудуди 2200-2400 байт мебошанд. Ин аст, ки чаро фармон дар аввали ин мақола парчамро истифода мебарад --bs=2300
(bs
- андоза бо байтҳои ҳар як блоки сабт дар fio
).
Лутфан таваҷҷӯҳ намоед, ки андозаи блокҳои навиштан ва ғайра вобаста ба версия, ҷойгиркунӣ, арзишҳои параметр ва ғайра метавонанд фарқ кунанд. - ин ба давомнокӣ таъсир мерасонад fdatasync
. Агар шумо як ҳолати истифодаи шабеҳ дошта бошед, бо он таҳлил кунед strace
равандҳои etcd шумо барои гирифтани арзишҳои навтарин.
Сипас, барои ба даст овардани фаҳмиши дақиқ ва ҳамаҷонибаи он, ки чӣ тавр etcd бо системаи файлӣ кор мекунад, мо онро аз зер иҷро кардем. strace
бо байракхо -ffttT
. Ин имкон дод, ки равандҳои кӯдак сабт карда шаванд ва натиҷаи ҳар як ба файли алоҳида навишта шаванд. Илова бар ин, дар бораи лаҳзаи оғоз ва давомнокии ҳар як занги система маълумоти муфассал гирифта шуд.
Мо инчунин фармонро истифода мебарем lsof
барои тасдиқи фаҳмиши шумо дар бораи баромад strace
ки кадом дескриптори файл бо кадом максад истифода шудааст. Натичаи хамин буд strace
, монанд ба яке аз боло. Манипуляцияҳои оморӣ бо вақти ҳамоҳангсозӣ тасдиқ карданд, ки метрика wal_fsync_duration_seconds
аз etcd зангҳои мувофиқат мекунад fdatasync
бо тавсифи файли WAL.
Барои тавлиди истифода fio
сарбории кор, ки ба сарбории аз etcd монанд аст, ҳуҷҷатҳои коммуналӣ омӯхта шуданд ва параметрҳои барои вазифаи мо мувофиқ интихоб карда шуданд. Мо боварӣ ҳосил кардем, ки зангҳои дурусти система ҷалб карда шудаанд ва давомнокии онҳоро тавассути иҷро тасдиқ кардем fio
аз он strace
(чунон ки дар мавриди ғайра анҷом дода шуд).
Ба муайян кардани арзиши параметр диккати махсус дода шуд --size
. Он сарбории умумии I/O-ро, ки аз ҷониби утилитаи fio тавлид шудааст, ифода мекунад. Дар мо бошад, ин микдори умумии байтест, ки ба васоити ахбори омма навишта шудааст. Он бевосита ба шумораи зангҳо мутаносиб аст write
(ва fdatasync
). Барои муайян bs
шумораи зангҳо fdatasync
баробар аст size / bs
.
Азбаски мо ба фоиз таваҷҷӯҳ доштем, мо кӯшиш кардем, ки шумораи намунаҳо барои аҳамияти оморӣ кофӣ калон бошанд. Ва онҳо қарор доданд, ки 10^4
(ки ба андозаи 22 МБ мувофиқат мекунад) кофӣ хоҳад буд. Арзишҳои параметрҳои хурдтар --size
садои бештаре ба вуҷуд овард (масалан, зангҳо fdatasync
, ки назар ба мукаррарй хеле дарозтар мегирад ва ба 99 фоиз таъсир мерасонад).
Аз худат вобаста аст
Дар мақола нишон дода шудааст, ки чӣ тавр истифода бурдани fio
шумо метавонед арзёбӣ кунед, ки васоити ахбори омма барои истифода бо etcd кофӣ зуд аст ё не. Акнун ба шумо вобаста аст! Шумо метавонед мошинҳои виртуалиро бо нигаҳдории SSD дар хидмат омӯзед
PS аз тарҷумон
Бо мисолхои тайёри истифода fio
барои халли дигар масъалахо дар
PPS аз тарҷумон
Инчунин дар блоги мо хонед:
- «
etcd 3.4.3: омӯзиши эътимоднокии нигаҳдорӣ ва амният »; - «
Таҷрибаи мо бо маълумот дар кластери etcd Kubernetes мустақиман (бе API K8s) »; - «
6 хатогиҳои системаи фароғатӣ дар кори Kubernetes [ва ҳалли онҳо] ".
Манбаъ: will.com