Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Korxona ilovalari va virtualizatsiya tizimlarining katta qismi nosozliklarga chidamli yechimlarni yaratish uchun o'z mexanizmlariga ega. Xususan, Oracle RAC (Oracle Real Application Cluster) yukni muvozanatlash va server/ilova darajasida nosozliklarga chidamliligini taʼminlash uchun birgalikda ishlaydigan ikki yoki undan ortiq Oracle maʼlumotlar bazasi serverlari klasteridir. Ushbu rejimda ishlash uchun sizga umumiy xotira kerak bo'ladi, bu odatda saqlash tizimidir.

Biz allaqachon birida muhokama qilganimizdek maqolalar, saqlash tizimining o'zi, takrorlangan komponentlar (shu jumladan, nazoratchilar) mavjudligiga qaramay, hali ham muvaffaqiyatsizlik nuqtalariga ega - asosan bitta ma'lumotlar to'plami shaklida. Shuning uchun, yuqori ishonchlilik talablari bilan Oracle yechimini yaratish uchun "N server - bitta saqlash tizimi" sxemasini murakkablashtirish kerak.

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Albatta, birinchi navbatda, biz qanday xavflardan sug'urta qilmoqchi ekanligimizni hal qilishimiz kerak. Ushbu maqolada biz "meteorit keldi" kabi tahdidlardan himoya qilishni ko'rib chiqmaymiz. Shunday qilib, geografik jihatdan tarqalgan ofatlarni tiklash yechimini yaratish keyingi maqolalardan biri uchun mavzu bo'lib qoladi. Bu erda himoya server kabinetlari darajasida qurilganda, biz Cross-Rack deb ataladigan halokatni tiklash yechimini ko'rib chiqamiz. Shkaflarning o'zlari bir xonada yoki turli xil xonalarda joylashgan bo'lishi mumkin, lekin odatda bir bino ichida.

Ushbu kabinetlar "qo'shni" holatidan qat'i nazar, Oracle ma'lumotlar bazalarining ishlashiga imkon beradigan barcha kerakli uskunalar va dasturiy ta'minotni o'z ichiga olishi kerak. Boshqacha qilib aytadigan bo'lsak, Cross-Rack ofatlarni tiklash yechimidan foydalanib, biz muvaffaqiyatsizlik xavfini yo'q qilamiz:

  • Oracle dastur serverlari
  • Saqlash tizimlari
  • Kommutatsiya tizimlari
  • Shkafdagi barcha jihozlarning to'liq ishdan chiqishi:
    • Quvvatni rad etish
    • Sovutish tizimining ishlamay qolishi
    • Tashqi omillar (inson, tabiat va boshqalar)

Oracle serverlarining takrorlanishi Oracle RAC ning ishlash printsipini nazarda tutadi va dastur orqali amalga oshiriladi. Kommutatsiya vositalarining takrorlanishi ham muammo emas. Ammo saqlash tizimining takrorlanishi bilan hamma narsa juda oddiy emas.

Eng oddiy variant - ma'lumotlarni asosiy saqlash tizimidan zaxiraga nusxalash. Saqlash tizimining imkoniyatlariga qarab sinxron yoki asinxron. Asinxron replikatsiya bilan darhol Oracle bilan bog'liq ma'lumotlarning izchilligini ta'minlash haqida savol tug'iladi. Ammo ilova bilan dasturiy ta'minot integratsiyasi mavjud bo'lsa ham, har qanday holatda, asosiy saqlash tizimida ishlamay qolsa, klasterni zaxira saqlashga o'tkazish uchun ma'murlarning qo'lda aralashuvi talab qilinadi.

Keyinchalik murakkab variant - dasturiy ta'minot va/yoki apparat saqlash "virtualizatorlari" bo'lib, ular izchillik bilan bog'liq muammolarni va qo'lda aralashuvni bartaraf etadi. Ammo joylashtirish va keyingi boshqaruvning murakkabligi, shuningdek, bunday echimlarning juda noaniq narxi ko'pchilikni qo'rqitadi.

AccelStor NeoSapphire™ All Flash massivi yechimi Cross-Rack falokatini tiklash kabi stsenariylar uchun juda mos keladi. H710 Shared-Hech narsa arxitekturasidan foydalanish. Ushbu model flesh-disklar bilan ishlash uchun xususiy FlexiRemap® texnologiyasidan foydalanadigan ikki tugunli saqlash tizimidir. Rahmat FlexiRemap® NeoSapphire™ H710 600K IOPS@4K tasodifiy yozish va 1M+ IOPS@4K tasodifiy oʻqishni taʼminlashga qodir, bu klassik RAID-ga asoslangan saqlash tizimlaridan foydalanganda erishib boʻlmaydi.

Ammo NeoSapphire™ H710 ning asosiy xususiyati ikkita tugunning alohida holatlar ko'rinishida bajarilishi bo'lib, ularning har biri ma'lumotlarning o'ziga xos nusxasiga ega. Tugunlarni sinxronlashtirish tashqi InfiniBand interfeysi orqali amalga oshiriladi. Ushbu arxitektura tufayli tugunlarni 100 m gacha bo'lgan masofada turli joylarga tarqatish mumkin va shu bilan Cross-Rack ofatlarni tiklash yechimini ta'minlaydi. Ikkala tugun ham to'liq sinxron ishlaydi. Xost tomondan H710 oddiy ikki nazoratli saqlash tizimiga o'xshaydi. Shu sababli, qo'shimcha dasturiy ta'minot yoki apparat variantlarini yoki ayniqsa murakkab sozlamalarni bajarishga hojat yo'q.

Agar biz yuqorida tavsiflangan barcha Cross-Rack ofatlarni tiklash echimlarini solishtirsak, AccelStor opsiyasi qolganlardan sezilarli darajada ajralib turadi:

AccelStor NeoSapphire™ hech narsa arxitekturasini baham ko'rmadi
Dasturiy ta'minot yoki apparat "virtualizator" saqlash tizimi
Replikatsiyaga asoslangan yechim

Mavjudligi

Server xatosi
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q

Kommutatsiya xatosi
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q

Saqlash tizimining ishlamay qolishi
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q
Chaqiruv

Kabinetning to'liq ishdan chiqishi
Bo'sh vaqt yo'q
Bo'sh vaqt yo'q
Chaqiruv

Narx va murakkablik

Yechim narxi
Past*
baland
baland

Joylashtirishning murakkabligi
past
baland
baland

*AccelStor NeoSapphire™ hali ham All Flash massivi boʻlib, uning taʼrifi boʻyicha “3 tiyin” ga tushmaydi, ayniqsa u ikki barobar quvvat zaxirasiga ega. Biroq, unga asoslangan yechimning yakuniy narxini boshqa sotuvchilarning shunga o'xshashlari bilan taqqoslaganda, xarajat past deb hisoblanishi mumkin.

Ilova serverlari va barcha Flash massiv tugunlarini ulash uchun topologiya quyidagicha ko'rinadi:

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Topologiyani rejalashtirishda boshqaruv kalitlarini takrorlash va serverlarni o'zaro ulash tavsiya etiladi.

Bu erda va keyin biz Fiber Channel orqali ulanish haqida gaplashamiz. Agar siz iSCSI dan foydalansangiz, hamma narsa bir xil bo'ladi, ishlatiladigan kalitlar turlari va bir oz boshqacha massiv sozlamalari uchun sozlangan.

Massivda tayyorgarlik ishlari

Ishlatilgan uskunalar va dasturiy ta'minot

Server va Switch spetsifikatsiyalari

komponentlar
tavsifi

Oracle Database 11g serverlari
Ikki

Server operatsion tizimi
oracle linux

Oracle ma'lumotlar bazasi versiyasi
11 g (RAC)

Har bir server uchun protsessorlar
Ikki 16 yadroli Intel® Xeon® CPU E5-2667 v2 @ 3.30 GHz

Har bir server uchun jismoniy xotira
128GB

FC tarmog'i
Ko'p yo'nalishli FC 16Gb/s

FC HBA
Emulex Lpe-16002B

Klasterni boshqarish uchun ajratilgan umumiy 1GbE portlari
Intel Ethernet adapteri RJ45

16 Gb/s FC kaliti
Brokar 6505

Ma'lumotlarni sinxronlashtirish uchun maxsus 10GbE portlar
Intel X520

AccelStor NeoSapphire™ All Flash Array spetsifikatsiyasi

komponentlar
tavsifi

Saqlash tizimi
NeoSapphire™ yuqori mavjudlik modeli: H710

Rasm versiyasi
4.0.1

Drayvlarning umumiy soni
48

Drayv o'lchami
1.92TB

Drayv turi
SSD

FC maqsadli portlari
16x 16Gb portlar (har bir tugun uchun 8 ta)

Boshqaruv portlari
Ethernet kaliti orqali xostlarga ulanadigan 1GbE chekilgan kabeli

Yurak urishi porti
Ikki saqlash tugunlari o'rtasida ulanadigan 1GbE Ethernet kabeli

Ma'lumotlarni sinxronlash porti
56 Gb/s InfiniBand kabeli

Massivni ishlatishdan oldin uni ishga tushirish kerak. Odatiy bo'lib, ikkala tugunning boshqaruv manzili bir xil (192.168.1.1). Siz ularga birma-bir ulanishingiz va yangi (allaqachon boshqa) boshqaruv manzillarini o'rnatishingiz va vaqt sinxronizatsiyasini sozlashingiz kerak, shundan so'ng Boshqaruv portlari bitta tarmoqqa ulanishi mumkin. Keyinchalik, Interlink ulanishlari uchun pastki tarmoqlarni belgilash orqali tugunlar HA juftligiga birlashtiriladi.

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Boshlash tugallangandan so'ng, siz har qanday tugundan massivni boshqarishingiz mumkin.

Keyinchalik, biz kerakli hajmlarni yaratamiz va ularni dastur serverlarida nashr qilamiz.

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Oracle ASM uchun bir nechta jildlarni yaratish tavsiya etiladi, chunki bu serverlar uchun maqsadlar sonini oshiradi, natijada umumiy ish faoliyatini yaxshilaydi (boshqasida navbatlar haqida batafsilroq). maqola).

Sinov konfiguratsiyasi

Saqlash hajmi nomi
Ovoz hajmi

Ma'lumotlar 01
200GB

Ma'lumotlar 02
200GB

Ma'lumotlar 03
200GB

Ma'lumotlar 04
200GB

Ma'lumotlar 05
200GB

Ma'lumotlar 06
200GB

Ma'lumotlar 07
200GB

Ma'lumotlar 08
200GB

Ma'lumotlar 09
200GB

Ma'lumotlar 10
200GB

Grid01
1GB

Grid02
1GB

Grid03
1GB

Grid04
1GB

Grid05
1GB

Grid06
1GB

Qayta 01
100GB

Qayta 02
100GB

Qayta 03
100GB

Qayta 04
100GB

Qayta 05
100GB

Qayta 06
100GB

Qayta 07
100GB

Qayta 08
100GB

Qayta 09
100GB

Qayta 10
100GB

Massivning ishlash rejimlari va favqulodda vaziyatlarda sodir bo'ladigan jarayonlar haqida ba'zi tushuntirishlar

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Har bir tugunning ma'lumotlar to'plami "versiya raqami" parametriga ega. Dastlabki ishga tushirilgandan so'ng, u bir xil va 1 ga teng. Agar biron bir sababga ko'ra versiya raqami boshqacha bo'lsa, u holda ma'lumotlar har doim eski versiyadan yoshga sinxronlashtiriladi, shundan so'ng yosh versiyaning soni hizalanadi, ya'ni. bu nusxalar bir xil ekanligini anglatadi. Versiyalar boshqacha bo'lishining sabablari:

  • Tugunlardan birini rejalashtirilgan qayta ishga tushirish
  • To'satdan yopilish (elektr ta'minoti, qizib ketish va h.k.) tufayli tugunlardan birida avariya.
  • Sinxronlash imkonsizligi sababli InfiniBand aloqasi uzildi
  • Ma'lumotlarning buzilishi tufayli tugunlardan birida ishdan chiqish. Bu erda siz yangi HA guruhini yaratishingiz va ma'lumotlar to'plamini to'liq sinxronlashtirishingiz kerak bo'ladi.

Har qanday holatda, onlayn qolgan tugun juftlik bilan aloqa tiklangandan so'ng ma'lumotlar to'plamini sinxronlashtirish uchun versiya raqamini bittaga oshiradi.

Agar chekilgan havolasi orqali aloqa uzilib qolsa, Heartbeat vaqtincha InfiniBand-ga o'tadi va tiklangandan keyin 10 soniya ichida qaytib keladi.

Xostlarni sozlash

Xatolarga chidamliligini ta'minlash va ish faoliyatini yaxshilash uchun massiv uchun MPIO qo'llab-quvvatlashini yoqishingiz kerak. Buni amalga oshirish uchun siz /etc/multipath.conf fayliga qatorlarni qo'shishingiz va keyin multipath xizmatini qayta ishga tushirishingiz kerak.

Yashirin matnqurilmalar {
qurilma {
sotuvchi "AStor"
path_grouping_policy "group_by_prio"
path_selector "navbat uzunligi 0"
path_checker "tur"
"0" xususiyatlari
hardware_handler "0"
prio "const"
zudlik bilan qayta tiklash
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names ha
detect_prio ha
rr_min_io_rq 1
no_path_retry 0
}
}

Keyinchalik, ASM ASMLib orqali MPIO bilan ishlashi uchun siz /etc/sysconfig/oracleasm faylini o'zgartirishingiz va keyin /etc/init.d/oracleasm skanerlash disklarini ishga tushirishingiz kerak.

Yashirin matn

# ORACLEASM_SCANORDER: Diskni skanerlashni buyurtma qilish uchun mos naqshlar
ORACLEASM_SCANORDER="dm"

# ORACLEASM_SCANEXCLUDE: Disklarni skanerlashdan chiqarib tashlash uchun mos naqshlar
ORACLEASM_SCANEXCLUDE="sd"

nota

Agar siz ASMLib-dan foydalanishni xohlamasangiz, ASMLib uchun asos bo'lgan UDEV qoidalaridan foydalanishingiz mumkin.

Oracle ma'lumotlar bazasining 12.1.0.2 versiyasidan boshlab, ASMFD dasturiy ta'minotining bir qismi sifatida o'rnatish imkoniyati mavjud.

Oracle ASM uchun yaratilgan disklar massiv jismoniy (4K) bilan ishlaydigan blok o'lchamiga mos kelishini ta'minlash juda muhimdir. Aks holda, ishlash bilan bog'liq muammolar paydo bo'lishi mumkin. Shuning uchun tegishli parametrlarga ega hajmlarni yaratish kerak:

parted /dev/mapper/qurilma nomi mklabel gpt mkpart birlamchi 2048s 100% tekislash-tekshirish optimal 1

Sinov konfiguratsiyasi uchun yaratilgan hajmlar bo'yicha ma'lumotlar bazalarini taqsimlash

Saqlash hajmi nomi
Ovoz hajmi
LUN hajmini xaritalash
ASM ovoz balandligi qurilmasi tafsilotlari
Ajratish birligi hajmi

Ma'lumotlar 01
200GB
Barcha saqlash hajmlarini saqlash tizimining barcha ma'lumotlar portlari bilan taqqoslang
Ortiqchalik: Oddiy
Nomi: DGDATA
Maqsad: ma'lumotlar fayllari

4MB

Ma'lumotlar 02
200GB

Ma'lumotlar 03
200GB

Ma'lumotlar 04
200GB

Ma'lumotlar 05
200GB

Ma'lumotlar 06
200GB

Ma'lumotlar 07
200GB

Ma'lumotlar 08
200GB

Ma'lumotlar 09
200GB

Ma'lumotlar 10
200GB

Grid01
1GB
Ortiqchalik: Oddiy
Nomi: DGGRID1
Maqsad: Grid: CRS va ovoz berish

4MB

Grid02
1GB

Grid03
1GB

Grid04
1GB
Ortiqchalik: Oddiy
Nomi: DGGRID2
Maqsad: Grid: CRS va ovoz berish

4MB

Grid05
1GB

Grid06
1GB

Qayta 01
100GB
Ortiqchalik: Oddiy
Nomi: DGREDO1
Maqsad: 1-ipning jurnalini takrorlang

4MB

Qayta 02
100GB

Qayta 03
100GB

Qayta 04
100GB

Qayta 05
100GB

Qayta 06
100GB
Ortiqchalik: Oddiy
Nomi: DGREDO2
Maqsad: 2-ipning jurnalini takrorlang

4MB

Qayta 07
100GB

Qayta 08
100GB

Qayta 09
100GB

Qayta 10
100GB

Ma'lumotlar bazasi sozlamalari

  • Blok hajmi = 8K
  • Swap maydoni = 16 GB
  • AMM (Avtomatik xotira boshqaruvi) ni o'chiring
  • Shaffof katta sahifalarni o'chirib qo'ying

Boshqa sozlamalar

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmal 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 # agar siz Linux x86 dan foydalanayotgan bo'lsangiz, buni o'rnatmang
✓ vm.vfs_cache_pressure=200
✓ vm.nr_hugepages = 57000

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

sqlplus "/ sysdba sifatida"
tizim to'plami jarayonlarini o'zgartirish = 2000 scope = spfile;
tizim to'plamini o'zgartirish open_cursors=2000 scope=spfile;
tizim to'plamini o'zgartirish session_cached_cursors=300 scope=spfile;
tizim to'plamini o'zgartirish db_files=8192 scope=spfile;

Muvaffaqiyatsizlik testi

Namoyish maqsadida HammerDB OLTP yukini taqlid qilish uchun ishlatilgan. HammerDB konfiguratsiyasi:

Omborlar soni
256

Bir foydalanuvchi uchun jami tranzaktsiyalar
1000000000000

Virtual foydalanuvchilar
256

Natijada 2.1M TPM hosil bo'ldi, bu massivning ishlash chegarasidan uzoqdir H710, lekin serverlarning joriy apparat konfiguratsiyasi (birinchi navbatda protsessorlar tufayli) va ularning soni uchun "ship" hisoblanadi. Ushbu testning maqsadi hali ham maksimal ishlashga erishish emas, balki butun yechimning xatoga chidamliligini ko'rsatishdir. Shuning uchun biz shunchaki ushbu raqamga asoslanamiz.

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Tugunlardan birining ishlamay qolishi uchun sinov

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Xostlar saqlashga olib boradigan yo'llarning bir qismini yo'qotib, qolganlarini ikkinchi tugun bilan ishlashni davom ettirdilar. Ishlash yo'llari qayta tiklanayotgani sababli bir necha soniya pasayib ketdi va keyin normal holatga qaytdi. Xizmatda hech qanday uzilish yo'q edi.

Barcha jihozlar bilan shkafning ishdan chiqishini tekshirish

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Oracle RAC va AccelStor Shared-Nothing arxitekturasi asosida nosozliklarga chidamli yechim yaratish

Bunday holda, ishlash ham yo'llarning qayta tuzilishi tufayli bir necha soniya pasayib ketdi va keyin asl qiymatining yarmiga qaytdi. Bitta dastur serveri ishlamasligi sababli natija dastlabkisidan ikki baravar kamaydi. Xizmat ko'rsatishda ham hech qanday uzilish yo'q.

Agar Oracle uchun nosozliklarga chidamli Cross-Rack ofatlarni qayta tiklash yechimini o‘rtacha xarajat va kam joylashtirish/ma’muriyat harakatlari bilan amalga oshirish zarurati tug‘ilsa, Oracle RAC va arxitektura birgalikda ishlaydi. AccelStor Shared - Hech narsa eng yaxshi variantlardan biri bo'ladi. Oracle RAC o'rniga, masalan, klasterlashni ta'minlaydigan har qanday boshqa dasturiy ta'minot, bir xil DBMS yoki virtualizatsiya tizimlari bo'lishi mumkin. Yechimni qurish printsipi bir xil bo'lib qoladi. Va pastki chiziq RTO va RPO uchun nolga teng.

Manba: www.habr.com

a Izoh qo'shish