Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Много корпоративни приложения и системи за виртуализация разполагат със собствени механизми за изграждане на отказоустойчиви решения. По-специално, Oracle RAC (Oracle Real Application Cluster) представлява клъстер от два или повече сървъра на Oracle бази данни, работещи съвместно с цел балансиране на натоварването и осигуряване на отказоустойчивост на ниво сървър/приложение. За работа в този режим е необходимо общо хранилище, обикновено реализирано чрез СХД.

Както вече обсъждахме в една от нашите статии, самата СХД, въпреки наличието на дублирани компоненти (включително контролери), все пак има точки на отказ – главно под формата на единен набор от данни. Следователно, за изграждане на Oracle решение с повишени изисквания за надеждност, схемата „N сървъра – едно СХД“ трябва да бъде усложнена.

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Първо, разбира се, трябва да определим, от какви рискове се опитваме да се застраховаме. В рамките на тази статия няма да разглеждаме защита от заплахи от типа „паднал метеорит“. Следователно изграждането на териториално разпределено решение за disaster recovery остава тема за една от следващите статии. Тук ще разгледаме така нареченото Cross-Rack disaster recovery решение, при което защитата се изгражда на ниво сървърни шкафове. Самите шкафове могат да се намират както в едно помещение, така и в различни, но обикновено в рамките на една сграда.

Тези шкафове трябва да съдържат всичките необходими компоненти и софтуер, които ще позволят работата на Oracle бази данни независимо от състоянието на „съседа“. С други думи, използвайки Cross-Rack disaster recovery решение, ние изключваме рисковете при отказ:

  • Сървъри на приложения Oracle
  • Системи за съхранение
  • Системи за комутиране
  • Пълен отказ на всичкото оборудване в шкафа:
    • Отказ на захранване
    • Отказ на охладителната система
    • Външни фактори (човек, природа и др.)

Дублирането на Oracle сървъри предполага самия принцип на работа на Oracle RAC и се реализира чрез приложението. Дублирането на средства за комутация също не представлява проблем. Но с дублирането на системата за съхранение не е толкова просто.

Най-простият вариант е репликацията на данни от основната СХД към резервната. Синхронна или асинхронна, в зависимост от възможностите на СХД. При асинхронна репликация веднага възниква въпросът за осигуряване на консистентността на данните по отношение на Oracle. Но дори ако има софтуерна интеграция с приложението, при повреда на основната СХД ще е необходимо намесата на администраторите в ръчен режим, за да прехвърлят клъстера на резервното хранилище.

По-сложен вариант е софтуерните и/или хардуерните „виртуализатори“ на СХД, които ще избавят от проблемите с консистентността и ръчната намеса. Но сложността на разгръщането и последващото администриране, както и доста високата цена на такива решения, отблъскват много.

Точно за подобни сценарии, като Cross-Rack disaster recovery, отлично подхожда решението All Flash масив AccelStor NeoSapphire™ H710 с използването на архитектура Shared-Nothing. Тази модел представлява двунодова система за съхранение, използваща собствената си технология FlexiRemap® за работа с флаш памети. Благодарение на FlexiRemap® NeoSapphire™ H710 е способна да осигури производителност до 600K IOPS@4K произволно запис и 1M+ IOPS@4K произволно четене, което не е постижимо при използване на класически RAID-based СХД.

Но основната особеност на NeoSapphire™ H710 е изпълнението на двете ноди в отделни корпуси, всеки от които има собствена копия на данните. Синхронизацията на нодите става чрез външен интерфейс InfiniBand. Благодарение на такава архитектура, нодите могат да бъдат разнесени на различни места на разстояние до 100м, осигурявайки по този начин решение за Cross-Rack disaster recovery. И двете ноди работят напълно в синхронен режим. От страна на хостовете H710 изглежда като обикновена двуконтролерна СХД. Следователно, няма нужда от допълнителни софтуерни и хардуерни опции и особено сложни настройки.

Ако сравним всички описани решения за Cross-Rack disaster recovery, вариантът на AccelStor значително се откроява на фона на останалите:

AccelStor NeoSapphire™ Shared Nothing Architecture
Софтуерен или хардуерен „виртуализатор“ на СХД
Решение на база репликация

Достъпност

Отказ на сървъра
Без престой
Без престой
Без престой

Отказ на комутатора
Без престой
Без престой
Без престой

Отказ на системата за съхранение
Без престой
Без престой
Преустановяване

Отказ на целия шкаф
Без престой
Без престой
Преустановяване

Цена и сложност

Цена на решението
Ниска*
Висока
Висока

Сложност на разгръщането
Ниска
Висока
Висока

*AccelStor NeoSapphire™ е все пак All Flash масив, който по определение не струва "3 стотинки", особено с двукратен капацитет. Въпреки това, ако сравняваме крайната цена на решението на неговата база с подобни от други доставчици, цената може да се счита за ниска.

Топологията на свързване на сървъри на приложения и нодове на All Flash масива ще изглежда следния начин:

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

При планирането на топологията е силно препоръчително да се осигури дублиране на комутаторите за управление и интерконект на сървърите.

Тук и по-нататък ще става дума за свързване през Fibre Channel. В случай на използване на iSCSI, ще бъде същото, с уточнение на използваните типове комутатори и малко по-различни настройки на масива.

Подготвителна работа на масива

Използвано оборудване и софтуер

Спецификации на сървъри и комутатори

FAudio
Описание

Oracle Database 11g сървъри
Два

Операционна система на сървъра
Oracle Linux

Версия на Oracle database
11g (RAC)

Процесори на сървър
Два 16-ядрени Intel® Xeon® CPU E5-2667 v2 @ 3.30GHz

Физическа памет на сървър
128GB

FC мрежа
16Gb/s FC с мултипатенинг

FC HBA
Emulex Lpe-16002B

Посветени публични 1GbE портове за управление на клъстери
Intel ethernet адаптер RJ45

16Gb/s FC суич
Brocade 6505

Посветени частни 10GbE портове за синхронизация на данни
Intel X520

Спецификация на AccelStor NeoSapphhire™ All Flash масива

FAudio
Описание

Система за съхранение
NeoSapphire™ модел с висока наличност: H710

Версия на изображението
4.0.1

Общ брой дискове
48

Размер на диска
1.92TB

Тип на диска
SSD

FC целеви портове
16х 16Gb порта (8 на нода)

Портове за управление
Кабелът 1GbE ethernet, свързващ се с хостове чрез ethernet суич

Порт за сигнализация
Кабел 1GbE ethernet, свързващ два съхранителни нода

Порт за синхронизация на данни
56Gb/s InfiniBand кабел

Преди използването на масива, той трябва да бъде инициализиран. По подразбиране адресът за управление на двата нода е един и същ (192.168.1.1). Трябва последователно да се свържете с тях и да зададете нови (различни) адреси за управление и да настроите синхронизация на времето, след което портовете за управление могат да бъдат свързани в една мрежа. След това нодовете се обединяват в HA двойка, като се задават подсистеми за свързването на Interlink.

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

След завършване на инициализацията, управлението на масива може да се извършва от всеки нод.

След това създаваме необходимите томове и ги публикуваме за сървъри на приложения.

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Силно се препоръчва да се създадат няколко тома за Oracle ASM, тъй като това ще увеличи броя на целите за сървърите, което в крайна сметка ще подобри общата производителност (повече за опашките в друга част) статии).

Тестова конфигурация

Име на тома за съхранение
Размер на тома

Data01
200GB

Data02
200GB

Data03
200GB

Data04
200GB

Data05
200GB

Data06
200GB

Data07
200GB

Data08
200GB

Data09
200GB

Data10
200GB

Grid01
1GB

Grid02
1GB

Grid03
1GB

Grid04
1GB

Grid05
1GB

Grid06
1GB

Redo01
100GB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Някои пояснения относно режимите на работа на масива и протичащите процеси при извънредни ситуации

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Всеки набор данни на всяка възел има параметър "номер на версия". След първоначалната инициализация той е същият и равен на 1. Ако поради някаква причина номерът на версиите е различен, данните винаги се синхронизират от по-високата версия към по-ниската, след което номерът на по-ниската версия се изравнява, т.е. това означава, че копията са идентични. Причини, поради които версиите могат да бъдат различни:

  • Планирано рестартиране на една от възлите
  • Авария на една от възлите поради внезапно прекъсване (електрическо захранване, прегряване и др.).
  • Прекъсване на InfiniBand връзката с неможливост за синхронизация
  • Авария на една от възлите поради повреда на данните. Тук вече ще е необходимо създаване на нова HA група и пълна синхронизация на набора от данни.

Във всеки случай, възелът, който остава онлайн, увеличава номера си на версия с единица, за да може след възстановяване на връзката да синхронизира своя набор от данни.

Ако се прекъсне връзката по Ethernet линията, Heartbeat временно преминава на InfiniBand и се връща обратно в рамките на 10 секунди при неговото възстановяване.

Настройка на хостовете

За да се осигури отказоустойчивост и да се увеличи производителността, е необходимо да се включи поддръжката на MPIO за масива. За целта трябва да се добавят редове в файла /etc/multipath.conf, след което да се рестартира услугата multipath.

Скрит текстdevices {
device {
vendor "AStor"
path_grouping_policy "group_by_prio"
path_selector "queue-length 0"
path_checker "tur"
features "0"
hardware_handler "0"
prio "const"
failback immediate
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names yes
detect_prio yes
rr_min_io_rq 1
no_path_retry 0
}
}

След това, за да работи ASM с MPIO през ASMLib, е необходимо да се промени файла /etc/sysconfig/oracleasm и след това да се изпълни /etc/init.d/oracleasm scandisks.

Скрит текст

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE="sd"

Забележка

Ако нямате желание да използвате ASMLib, можете да използвате правила UDEV, които са основата за ASMLib.

Започвайки от версия 12.1.0.2, опцията на Oracle Database е налична за инсталиране като част от ПО ASMFD.

Задължително е да се уверите, че създадените дискове за Oracle ASM са подравнени по отношение на размера на блока, с който физически работи масивът (4K). В противен случай могат да възникнат проблеми с производителността. Следователно е необходимо да се създадат томове с подходящи параметри:

parted /dev/mapper/device-name mklabel gpt mkpart primary 2048s 100% align-check optimal 1

Разпределение на бази данни по създадените томове за нашата тестова конфигурация

Име на тома за съхранение
Размер на тома
Съответствие на томовете LUNs
Детайли на устройството ASM Volume
Размер на алокационната единица

Data01
200GB
Карта на всички хранилищни томове към системата за данни на всички портове.
Редундантност: Нормална
Име: DGDATA
Цел: Данни файлове

4MB

Data02
200GB

Data03
200GB

Data04
200GB

Data05
200GB

Data06
200GB

Data07
200GB

Data08
200GB

Data09
200GB

Data10
200GB

Grid01
1GB
Редундантност: Нормална
Име: DGGRID1
Цел: Мрежа: CRS и гласуване

4MB

Grid02
1GB

Grid03
1GB

Grid04
1GB
Редундантност: Нормална
Име: DGGRID2
Цел: Мрежа: CRS и гласуване

4MB

Grid05
1GB

Grid06
1GB

Redo01
100GB
Редундантност: Нормална
Име: DGREDO1
Цел: Журнал на възстановяване на нишка 1

4MB

Redo02
100GB

Redo03
100GB

Redo04
100GB

Redo05
100GB

Redo06
100GB
Редундантност: Нормална
Име: DGREDO2
Цел: Журнал на възстановяване на нишка 2

4MB

Redo07
100GB

Redo08
100GB

Redo09
100GB

Redo10
100GB

Настройки на базата данни

  • Размер на блока = 8K
  • Сwap пространство = 16GB
  • Деактивиране на AMM (Автоматично управление на паметта)
  • Деактивиране на Transparent Huge Pages

Други настройки

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmall 31457280
✓ kernel.shmmn 4096
✓ kernel.sem = 250 32000 100 128
✓ net.ipv4.ip_local_port_range = 9000 65500
✓ net.core.rmem_default = 262144
✓ net.core.rmem_max = 4194304
✓ net.core.wmem_default = 262144
✓ net.core.wmem_max = 1048586
✓ vm.swappiness=10
✓ vm.min_free_kbytes=524288 # не задавайте, ако използвате Linux x86
✓ vm.vfs_cache_pressure=200
✓ vm.nr_hugepages = 57000

# vi /etc/security/limits.conf
✓ grid soft nproc 2047
✓ grid hard nproc 16384
✓ grid soft nofile 1024
✓ grid hard nofile 65536
✓ grid soft stack 10240
✓ grid hard stack 32768
✓ oracle soft nproc 2047
✓ oracle hard nproc 16384
✓ oracle soft nofile 1024
✓ oracle hard nofile 65536
✓ oracle soft stack 10240
✓ oracle hard stack 32768
✓ soft memlock 120795954
✓ hard memlock 120795954

sqlplus "/as sysdba"
alter system set processes=2000 scope=spfile;
alter system set open_cursors=2000 scope=spfile;
alter system set session_cached_cursors=300 scope=spfile;
alter system set db_files=8192 scope=spfile;

Тест за отказоустойчивост

С цел демонстрация беше използван HammerDB за симулиране на OLTP натоварване. Конфигурация на HammerDB:

Брой складове
256

Общо транзакции на потребител
1000000000000

Виртуални потребители
256

В резултат беше постигнат показател 2.1M TPM, което е далеч от максимума на производителността на масива H710, но представлява "поток" за текущата апаратура на сървърите (преди всичко заради процесорите) и тяхното количество. Целта на този тест все пак е демонстрацията на отказоустойчивостта на решението като цяло, а не достигането на максималните производствени показатели. Затова ще се основаваме просто на тази цифра.

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Тест за отказ на един от възлите

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Хостовете загубиха част от пътищата до хранилището, продължавайки да работят чрез останалите с втория възел. Производителността падна за няколко секунди заради преустрояване на пътищата, а след това се върна към нормални показатели. Прекъсване на обслужването не настъпи.

Тест за отказ на шкафа със все оборудване

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

Създаване на отказоустойчиво решение с Oracle RAC и архитектурата AccelStor Shared-Nothing

В този случай производителността също падна за няколко секунди заради преустрояване на пътищата, а след това се върна на половин стойност от оригиналния показател. Резултатът намаля наполовина от първоначалния заради изключването на един сървър за приложения. Прекъсване на обслужването също не настъпи.

Ако имате нужда от реализиране на отказоустойчиво решение Cross-Rack disaster recovery за Oracle на разумна цена и с минимални усилия за разгръщане/администриране, то съвместната работа на Oracle RAC и архитектурата AccelStor Shared-Nothing ще бъде един от най-добрите варианти. Вместо Oracle RAC може да бъде всяко друго софтуерно решение, което предвижда кластеризация, същите СУБД или системи за виртуализация, например. Принципът на изграждане на решението остава същият. И крайният показател – нулеви стойности за RTO и RPO.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster