
Жаңарту!. Түсініктемелерде оқырмандардың бірі сынап көруді ұсынды (мүмкін ол өзі жұмыс істеп жатқан шығар) сондықтан мен бұл шешім туралы бөлім қостым. Мен де жаздым , өйткені процесс қалғандарынан өте ерекшеленеді.
Шынымды айтсам, мен бас тарттым және бердім (кем дегенде қазір). қолданамын . Неліктен? Сақтау себебінен! Мен Кубернетестің өзінен гөрі қоймамен көбірек айналысамын деп кім ойлаған. Мен қолданамын себебі бұл арзан және өнімділігі жақсы және мен басынан бастап кластерлерді қолданамын . Мен Google/Amazon/Microsoft/DigitalOcean және т.б. басқарылатын Kubernetes қызметтерін қолданып көрмедім, өйткені мен бәрін өзім үйренгім келді. Мен де үнемшілмін.
Иә, мен ықтимал Kubernetes стекін бағалау кезінде қай жадты таңдау керектігін шешуге көп уақыт жұмсадым. Мен ашық бастапқы шешімдерді ұнатамын, тек бағасына байланысты емес, бірақ мен бірнеше ақылы нұсқаларды қарап шықтым, өйткені олардың шектеулері бар тегін нұсқалары бар. Мен әртүрлі опцияларды салыстырған кезде соңғы сынақтардың кейбір сандарын жазып алдым және олар Kubernetes қоймасы туралы білетіндерге қызықты болуы мүмкін. Мен жеке Кубернетеспен әзірше қош айтыстым. Мен де атап өткім келеді , ол Hetzner Cloud томдарын тікелей қамтамасыз ете алады, бірақ мен оны әлі көрмедім. Мен бұлтты бағдарламалық қамтамасыз етумен анықталған жадты қарастырдым, себебі маған шағылыстыру және тұрақты көлемдерді кез келген түйінге жылдам орнату мүмкіндігі қажет болды, әсіресе түйін ақаулары және басқа ұқсас жағдайларда. Кейбір шешімдер уақытында түсірілген суреттерді және сайттан тыс сақтық көшірмелерді ұсынады, бұл ыңғайлы.
Мен 6-7 сақтау шешімдерін сынадым:
Жоғарыда айтқанымдай Тізімдегі опциялардың көпшілігін сынап, мен бастапқыда OpenEBS-ке орналастым. OpenEBS орнату және пайдалану өте оңай, бірақ шынымды айтсам, жүктеме кезінде нақты деректермен тестілеуден кейін оның өнімділігіне көңілім қалды. Бұл ашық бастапқы код және әзірлеушілер өз бетінше маған көмек қажет болғанда әрқашан өте пайдалы. Өкінішке орай, ол басқа опциялармен салыстырғанда өте нашар өнімділікке ие, сондықтан сынақтарды қайта орындауға тура келді. OpenEBS-те қазіргі уақытта 3 сақтау механизмі бар, бірақ мен cStor үшін эталондық нәтижелерді жариялап жатырмын. Менде әлі Jiva және LocalPV нөмірлері жоқ.
Бір сөзбен айтқанда, Jiva сәл жылдамырақ, ал LocalPV әдетте жылдам, ол тікелей дискінің эталонынан жаман емес. LocalPV мәселесі мынада, томға тек ол дайындалған түйінде қол жеткізуге болады және репликация мүлде болмайды. Менде сақтық көшірмені қалпына келтіру кезінде қиындықтар туындады жаңа кластерде, себебі түйін атаулары әртүрлі болды. Егер сақтық көшірмелер туралы айтатын болсақ, cStor бар , оның көмегімен бір уақытта фотосуреттердің сайттан тыс сақтық көшірмелерін жасауға болады, бұл Velero-Restic көмегімен файл деңгейіндегі сақтық көшірмелерге қарағанда ыңғайлы. Мен жаздым , осы плагин арқылы сақтық көшірмелерді және қалпына келтірулерді басқаруды жеңілдету үшін. Жалпы, маған OpenEBS ұнайды, бірақ оның өнімділігі...
Rook сонымен қатар ашық бастапқы коды болып табылады және оны тізімдегі қалған опциялардан ерекшелендіретін нәрсе - бұл әртүрлі серверлері бар сақтауды басқарудың күрделі тапсырмаларын өңдейтін сақтау оркестрі, мысалы. , және басқалары, бұл жұмысты айтарлықтай жеңілдетеді. Мен оны бірнеше ай бұрын қолданып көргенімде EfgeFS-пен проблемалар болды, сондықтан мен негізінен Ceph-пен сынадым. Ceph тек блоктық сақтауды ғана емес, сонымен қатар S3/Swift және бөлінген файлдық жүйемен үйлесімді нысанды сақтауды ұсынады. Маған Цеф ұнайтыны - көлемдік деректерді бірнеше дискілерге тарату мүмкіндігі, осылайша дыбыс бір дискіге сыймайтын дискілік кеңістікті пайдалана алады. Бұл ыңғайлы. Тағы бір керемет мүмкіндік - дискілерді кластерге қосқанда, ол деректерді барлық дискілер бойынша автоматты түрде қайта таратады.
Цефтің суреттері бар, бірақ менің білуімше, оларды тікелей Rook/Kubernetes қолданбасында пайдалану мүмкін емес. Рас, мен бұған тереңірек барған жоқпын. Бірақ сайттан тыс сақтық көшірмелер жоқ, сондықтан Velero/Restic көмегімен бірдеңе пайдалануға тура келеді, бірақ бір уақыттағы суреттер емес, тек файл деңгейіндегі сақтық көшірмелер бар. Руктың маған қатты ұнағаны Ceph-пен жұмыс істеу оңай болды – ол барлық дерлік күрделі заттарды жасырады және ақауларды жою үшін Цефпен тікелей сөйлесуге арналған құралдарды ұсынады. Өкінішке орай, Ceph томдарының стресс-тесті кезінде менде проблемалар болды , бұл Цефтің тұрақсыз болуына әкеледі. Бұл Цефтің өзіндегі қате ме, әлде Руктың Цефті басқаруындағы мәселе ме, әлі белгісіз. Мен жад параметрлерімен айналыстым, ол жақсарды, бірақ мәселе толығымен шешілмеді. Төмендегі көрсеткіштерден көріп отырғаныңыздай, Ceph лайықты өнімділікке ие. Оның жақсы бақылау тақтасы да бар.
Маған Лонгхорн қатты ұнайды. Менің ойымша, бұл перспективалы шешім. Рас, әзірлеушілердің өздері (Rancher Labs) оның жұмыс ортасына әлі қолайлы емес екенін мойындайды және бұл көрсетеді. Бұл ашық бастапқы код және лайықты өнімділікке ие (олар оны әлі оңтайландырмағанымен), бірақ томдар подкастқа қосылу үшін өте ұзақ уақытты алады, ал ең нашар жағдайда 15-16 минут кетеді, әсіресе үлкен сақтық көшірмені қалпына келтіргеннен кейін немесе жұмыс көлемін арттыру. Онда осы суреттердің суреттері мен сайттан тыс сақтық көшірмелері бар, бірақ олар тек томдарға ғана қолданылады, сондықтан басқа ресурстардың сақтық көшірмесін жасау үшін сізге әлі де Velero сияқты нәрсе қажет болады. Сақтық көшірме жасау және қалпына келтіру өте сенімді, бірақ өте баяу. Шынымен, керемет баяу. Лонгхорндағы деректердің орташа көлемімен жұмыс істегенде процессорды пайдалану және жүйе жүктемесі жиі көтеріледі. Longhorn басқаруға ыңғайлы бақылау тақтасы бар. Мен Лонгхорнды жақсы көретінімді айттым, бірақ оған біраз жұмыс керек.
StorageOS - тізімдегі бірінші ақылы өнім. Оның 500 ГБ басқарылатын сақтау көлемі шектеулі әзірлеуші нұсқасы бар, бірақ түйіндер санына шектеу жоқ деп ойлаймын. Сату бөлімі маған егер дұрыс есімде болса, құны 125 ТБ үшін айына 1 доллардан басталатынын айтты. Негізгі бақылау тақтасы және ыңғайлы CLI бар, бірақ өнімділікте біртүрлі нәрсе болып жатыр: кейбір көрсеткіштерде бұл өте жақсы, бірақ көлемді стресс-тестте жылдамдық мүлдем ұнамады. Жалпы, мен не айтарымды білмеймін. Сондықтан мен көп нәрсені түсінбедім. Мұнда сайттан тыс сақтық көшірмелер жоқ, сонымен қатар көлемдердің сақтық көшірмесін жасау үшін Velero-ны Restic-пен бірге пайдалануға тура келеді. Бұл таңқаларлық, өйткені өнім ақылы. Әзірлеушілер Slack-те байланысуға ынталы болмады.
Мен Reddit-те Робин туралы олардың техникалық директорынан білдім. Мен ол туралы бұрын ешқашан естіген емеспін. Мүмкін мен тегін шешімдер іздегендіктен шығар, бірақ Робин ақылы. Олардың 10 ТБ жады және үш түйіні бар өте жомарт тегін нұсқасы бар. Тұтастай алғанда, өнім өте жақсы және жақсы мүмкіндіктерге ие. Керемет CLI бар, бірақ ең керемет нәрсе - бүкіл қолданбаны суретке түсіріп, сақтық көшірмесін жасай аласыз (ресурс селекторында бұл Helm шығарылымдары немесе «икемді қолданбалар» деп аталады), оның ішінде томдар мен басқа ресурстар, сондықтан Velero қолданбай жасай аласыз. Бір ғана ұсақ-түйек болмаса, бәрі тамаша болар еді: егер сіз жаңа кластердегі қосымшаны қалпына келтірсеңіз (немесе Робинде «импорт» деп аталады) - мысалы, апаттан қалпына келтіру жағдайында - қалпына келтіру, әрине, жұмыс істейді, бірақ қолданбаның сақтық көшірмесін жасауды жалғастыруға тыйым салынады. Әзірлеушілер растағандай, бұл шығарылымда бұл мүмкін емес. Бұл, жұмсақ тілмен айтқанда, таңқаларлық, әсіресе басқа артықшылықтарды ескере отырып (мысалы, керемет жылдам сақтық көшірме жасау және қалпына келтіру). Әзірлеушілер келесі шығарылымға дейін бәрін түзетуге уәде береді. Өнімділік әдетте жақсы, бірақ мен біртүрлі жағдайды байқадым: егер мен стандартты хостқа тіркелген дыбыс деңгейінде тікелей іске қоссам, оқу жылдамдығы бірдей дыбыс деңгейін подкаст ішінен іске қосудан әлдеқайда жылдамырақ болады. Барлық басқа нәтижелер бірдей, бірақ теорияда ешқандай айырмашылық болмауы керек. Олар мұнымен жұмыс істеп жатқанымен, мен қалпына келтіру және сақтық көшірмеге қатысты мәселеге ренжідім - мен ақырында қолайлы шешім таптым деп ойладым және көбірек орын немесе көбірек сервер қажет болғанда, мен оны төлеуге дайын болдым.
Менің бұл жерде айтарым көп емес. Бұл ақылы өнім, бірдей салқын және қымбат. Орындау жай ғана керемет. Бұл әзірге ең жақсы көрсеткіш. Slack маған Google GKE Marketplace тізімінде көрсетілгендей, баға бір түйін үшін айына 205 доллардан басталатынын айтты. Тікелей сатып алсаңыз, арзанырақ бола ма, білмеймін. Мен мұны бәрібір төлей алмаймын, сондықтан мен әзірлеуші лицензиясының (1 ТБ және 3 түйінге дейін) статикалық қамтамасыз етумен қанағаттанбасаңыз, Kubernetes үшін іс жүзінде пайдасыз екеніне қатты ренжідім. Сынақ мерзімінің соңында көлемді лицензия автоматты түрде әзірлеушіге дейін төмендейді деп үміттендім, бірақ бұл болмады. Әзірлеуші лицензиясын тек Docker бағдарламасымен тікелей пайдалануға болады және Kubernetes конфигурациясы өте қиын және шектеулі. Әрине, мен ашық кодты қалаймын, бірақ менде ақша болса, міндетті түрде Portworx таңдар едім. Әзірге оның өнімділігі басқа опциялармен салыстыруға келмейді.
Мен бұл бөлімді жазба жарияланғаннан кейін, оқырман Linstor-ды қолданып көруді ұсынған кезде қостым. Мен оны қолданып көрдім және ұнады! Бірақ маған тағы да зерттеу керек. Қазірше өнімділік өте жақсы деп айта аламын (төменде эталондық нәтижелерді қостым). Шын мәнінде, мен тікелей дискілік эталонмен бірдей өнімділікке қол жеткіздім, ешқандай қосымша шығындарсыз. (Portworx көрсеткіштері тікелей дискілік эталоннан неге жақсы екенін сұрамаңыз. Мен ешқандай түсініксіз. Магия, меніңше.) Сонымен, Linstor әзірге өте тиімді болып көрінеді. Оны орнату онша қиын емес, бірақ басқа нұсқалар сияқты оңай емес. Алдымен, мен Linstor-ды (ядро модулі және құралдар/қызметтер) орнатып, Kubernetes-тен тыс жерде, тікелей хостта жұқа қамтамасыз ету және суретке түсіру қолдауы үшін LVM орнатуым керек болды, содан кейін Kubernetes-тен сақтау орнын пайдалану үшін қажетті ресурстарды жасауым керек болды. Оның жұмыс істемегеніне қуанбадым. CentOS және қолдануға тура келді UbuntuӘрине, бұл үлкен мәселе емес, бірақ құжаттамада (айтпақшы, бұл өте жақсы) көрсетілген Epel репозиторийлерінде жоқ бірнеше пакеттер туралы айтылғандықтан, бұл біраз тітіркендіргіш. Linstor-да суреттер бар, бірақ сайттан тыс сақтық көшірмелер жоқ, сондықтан көлемді сақтық көшірмелер үшін Velero-ны Restic-пен қайтадан пайдалануға тура келді. Файл деңгейіндегі сақтық көшірмелерге қарағанда суреттерді қалаймын, бірақ шешім тиімді және сенімді болса, бұл мүмкін. Linstor ашық бастапқы кодты, бірақ ақылы қолдау бар. Егер мен дұрыс түсінсем, қолдау келісімшарты болмаса да, оны шектеусіз пайдалана аласыз, бірақ мен мұны тексеріп көруім керек. Linstor Kubernetes үшін қаншалықты тексерілгенін білмеймін, бірақ сақтау қабатының өзі Kubernetes-тен тыс және ол біраз уақыттан бері бар сияқты, сондықтан ол нақты өмір жағдайларында тексерілген болуы мүмкін. Мұнда менің ойымды өзгертіп, Kubernetes-ке қайта ауысуға мәжбүр ететін шешім бар ма? Білмеймін. Репликация туралы көбірек білуім керек. Көреміз. Бірақ алғашқы әсер жақсы. Көбірек еркіндік алу және жаңа нәрселерді үйрену үшін Heroku-дың орнына өзімнің Kubernetes кластерлерімді пайдаланғанды жөн көрер едім. Linstor-ды басқалар сияқты орнату оңай емес болғандықтан, мен бұл туралы жақын арада жазба жазамын.
Эталондар
Өкінішке орай, салыстыру туралы көп жазба қалдырған жоқпын, өйткені бұл туралы жазамын деп ойламадым. Менде тек негізгі fio эталондарынан алынған нәтижелер және тек бір түйін кластерлері үшін ғана бар, сондықтан менде қайталанатын конфигурацияларға арналған нөмірлер әлі жоқ. Бірақ бұл нәтижелерден сіз әр опциядан не күтетіні туралы шамамен түсінік ала аласыз, өйткені мен оларды бірдей бұлттық серверлерде, 4 ядрода, 16 ГБ жедел жадыда, тексерілген көлемдер үшін қосымша 100 ГБ дискімен салыстырдым. Мен әр шешім үшін үш рет эталондарды орындадым және орташа нәтижені есептедім, сонымен қатар әр өнім үшін сервер параметрлерін қалпына келтірдім. Мұның бәрі мүлдем ғылыми емес, сізге жалпы түсінік беру үшін. Басқа сынақтарда оқу мен жазуды тексеру үшін дыбыс деңгейінен 38 ГБ фотолар мен бейнелерді көшіріп алдым, бірақ, өкінішке орай, сандарды сақтамадым. Қысқасы: Portworkx әлдеқайда жылдам болды.
Көлемді салыстыру үшін мен бұл манифестті қолдандым:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dbench
spec:
storageClassName: ...
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: batch/v1
kind: Job
metadata:
name: dbench
spec:
template:
spec:
containers:
- name: dbench
image: sotoaster/dbench:latest
imagePullPolicy: IfNotPresent
env:
- name: DBENCH_MOUNTPOINT
value: /data
- name: FIO_SIZE
value: 1G
volumeMounts:
- name: dbench-pv
mountPath: /data
restartPolicy: Never
volumes:
- name: dbench-pv
persistentVolumeClaim:
claimName: dbench
backoffLimit: 4Мен алдымен сәйкес сақтау класы бар томды жасадым, содан кейін жұмысты сахна артында fio арқылы орындадым. Мен өнімділікті бағалау және тым көп күтпеу үшін 1 ГБ алдым. Міне нәтижелер:
Мен әрбір көрсеткіш үшін ең жақсы мәнді жасыл түспен, ал ең нашарны қызыл түспен бөлектедім.
қорытынды
Көріп отырғаныңыздай, көп жағдайда Portworx басқаларға қарағанда жақсы нәтиже көрсетті. Бірақ мен үшін бұл қымбат. Мен Robin қанша тұратынын білмеймін, бірақ олардың тамаша тегін нұсқасы бар, сондықтан ақылы өнімді алғыңыз келсе, оны қолданып көруге болады (жақында олар қалпына келтіру және сақтық көшірме жасау арқылы мәселені шешеді деп үміттенеміз). Үш тегін нұсқаның ішінде менде OpenEBS-те ең аз проблемалар болды, бірақ оның өнімділігі өте төмен. Мен көп нәтиже сақтамағаным өкінішті, бірақ сандар мен менің пікірлерім сізге көмектеседі деп үміттенемін.
Ақпарат көзі: www.habr.com
