Кіріспе

Жоғары қолжетімділік кластерлері (сонымен қатар HA кластерлері, failover кластерлері деп те аталады) – ең аз тоқтау уақытымен сенімді пайдалануға болатын серверлік қосымшаларды қолдайтын компьютерлер тобы. Олар жүйелік компоненттердің істен шығуы кезінде үздіксіз қызмет көрсету үшін артық компьютерлерді топтарда немесе кластерлерде пайдалану үшін жоғары қолжетімділік бағдарламалық жасақтамасын қолданады. Егер кластерлеу болмаса, белгілі бір қосымшаны іске қосатын сервер құлап жатса, құлаған сервер жөнделгенше қосымша қолжетімсіз болады. HA кластерлеуі бұл мәселені аппараттық/бағдарламалық ақауларды анықтап, әкімшілік араласуды қажет етпей-ақ, басқа жүйеде қосымшаны дереу қайта іске қосу арқылы шешеді. Бұл процеске ауыстыру (failover) дейді. Бұл процестің бір бөлігі ретінде кластерлеу бағдарламалық жасақтамасы қосымшаны іске қосу алдында түйіннің конфигурациясын өзгертуі мүмкін. Мысалы, тиісті файлдық жүйелерді импорттап орнату, желілік жабдықты конфигурациялау және кейбір қосымша қосымшаларды іске қосу қажет болуы мүмкін. HA кластерлері көбінесе маңызды деректер базалары, желіде файлдарды бөлісу, бизнес-қосымшалар және электрондық коммерция веб-сайттары сияқты клиенттерге қызмет көрсету үшін қолданылады. HA кластерлерін жүзеге асыру кластерде жекелей сәтсіздік нүктелерін жою үшін, соның ішінде бірнеше желілік қосылымдар мен деректерді сақтау арқылы артық байланыспен деректерді сақтауға тырысады. HA кластерлері әдетте кластердегі әрбір түйіннің денсаулығы мен жағдайын бақылау үшін қолданылатын жеке желілік байланыс арқылы «жүрек соғуы» механизмін пайдаланады. Барлық кластерлік бағдарламалық жасақтамалардың шешуі тиіс маңызды мәселе – «мидың бөлінуі», ол барлық жеке байланыстар бір уақытта тоқтағанда, бірақ кластерлік түйіндер әлі де жұмыс істеп тұрғанда пайда болады. Мұндай жағдайда кластердегі әрбір түйін басқа түйіндердің бәрі құлап кеткенін дұрыс емес деп шешіп, басқа түйіндер әлі де іске қосылып жатқан қызметтерді іске қосуға тырысуы мүмкін. Қызметтердің дубликатталуы ортақ сақтаудағы деректердің бұзылуына әкелуі мүмкін. HA кластерлері мұндай жағдайды болдырмау үшін көбінесе кворум куәгерлік сақтауын (жергілікті немесе бұлтты) пайдаланады. Куәгерлік құрылғысы екіге бөлінген кластердің екі жағында да ортақ бола алмайды, сондықтан кластердің барлық мүшелері бір-бірімен байланыса алмаса (мысалы, «жүрек соғуы» бұзылғанда), мүше куәгерлікке қол жеткізе алмаса, ол белсенді бола алмайды.

Қолданбаның жобалау талаптары

Барлық қолданбалар жоғары қол жетімділік кластерлік ортада жұмыс істей алмайды, ал қажетті жобалау шешімдері бағдарламалық жасақтама жобалау кезеңінің басында қабылдануы керек. Жоғары қол жетімділік кластерлік ортада жұмыс істеу үшін қолданба кем дегенде келесі техникалық талаптарға сәйкес келуі керек, олардың соңғы екеуі кластерде сенімді жұмыс істеу үшін өте маңызды және толыққанды орындау қиын: Қолданбаны іске қосу, тоқтату, мәжбүрлеп тоқтату және оның күйін тексерудің салыстырмалы түрде оңай жолы болуы керек. Іс жүзінде, бұл қолданбаның бірнеше даналарын қолдауды қамтитын, қолданбаны басқару үшін командалық қатар интерфейсі немесе скрипттері болуы керек дегенді білдіреді. Қолданба ортақ сақтауды (NAS/SAN) пайдалана білуі тиіс. Ең маңыздысы, қолданба өзінің күйін мүмкіндігінше көп сақтайтын, уақытқа төзімді ортақ сақтау құрылғысында сақтауы керек. Сонымен қатар, ортақ сақтаудан сақталған күйді пайдаланып, сәтсіздікке ұшырағанға дейін соңғы күйде басқа түйінде қайта іске қосу мүмкіндігі де маңызды. Қолданба құлауы немесе сақталған күйден қайта іске қосылғанда деректердің бұзылуына жол бермеуі керек. Бұл шектеулердің бірқатары виртуалды серверлік ортаны пайдалану арқылы азайтылуы мүмкін, онда гипервизордың өзі кластерді біледі және физикалық хосттар арасында виртуалды машиналарды (оның ішінде жұмыс жад күйін) үздіксіз көшіруді қамтамасыз етеді. Бұл тәсіл мен кластерлік қолданбаларды іске қосу арасындағы басты айырмашылық – соңғысы серверлік қолданбалардың құлауын шеше алады және клиентке қызмет көрсетуге (мысалы, деректер базасына) қол жеткізуді сақтай отырып, бағдарламалық жасақтаманы тікелей «қозғалыс ортасында» жаңартуды қолдай алады, себебі бір дана қызмет көрсетіп тұрғанда екіншісі жаңартылып немесе жөнделіп жатыр. Бұл кластерлік даналардың байланыс орнатуын, кэштерді тазалауын және қол жеткізуді үйлестіруді қажет етеді. Ақаулықтарды жою кластерлеуді жоспарлауға, құруға, конфигурациялауға және түзетуге жатады.

Тораптың сенімділігі

HA кластерлері жеке жүйелерді және ортақ инфрақұрылымды мүмкіндігінше сенімді ету үшін барлық қолжетімді техникаларды пайдаланады. Оларға мыналар жатады:
Дискілерді көшіру (немесе тәуелсіз дискілердің артық массивтері – RAID), сондықтан ішкі дискілердің істен шығуы жүйелік құлауға әкелмейді. Distributed Replicated Block Device (ДРББ) – бір мысал. Желілік кабель, коммутатор немесе желілік интерфейс бұзылған жағдайда желінің тоқтауына жол бермес үшін артық желілік қосылымдар. Сақтау жүйесіне қосылудың үзілуіне (бұл ортақ ештеңе архитектурасын бұзушылыққа әкелер еді) алып келмейтіндей, артық сақтау аймағы желісі (SAN) қосылымдары, бір кабель, коммутатор немесе интерфейс бұзылған жағдайда. Әдетте, екі немесе барлық қуат көзі үзіліссіз қуат беру құрылғыларымен (UPS) қорғалған әртүрлі тізбектердегі артық электр қуаты кірістері және артық қуат көздері, сондықтан бір қуат беру желісі, кабель, UPS немесе қуат көзінің ақауы жүйеде қуаттың жоғалуына әкелмейді. Бұл мүмкіндіктер кластерлік ауысудың қажеттілігін азайтуға көмектеседі. Мұндай ауысу кезінде қызмет кем дегенде біраз уақытқа қолжетімсіз болады, сондықтан ауысуды болдырмау шаралары басымдыққа ие.

Қалпына келтіру стратегиясы

Таратылған есептеудегі қателерді басқаратын жүйелерде қателерді жоюдың әртүрлі стратегиялары бар. Мысалы, Apache Cassandra API Hector қателіктерді жоюды конфигурациялаудың үш тәсілін анықтайды: "FAIL FAST" деп жазылатын Fail Fast, егер бірінші түйінге қол жеткізе алмаса, қателікті жою әрекеті сәтсіз аяқталады. "ON FAIL TRY ONE NEXT AVAILABLE" деп жазылатын On Fail, Try One Next Available, жүйе бір хостты, ең қолжетімдісін немесе қолда бар болса, оны сынап көреді. "ON FAIL TRY ALL AVAILABLE" деп жазылатын On Fail, Try All, жүйе барлық қолда бар түйіндерді сынап көреді.