Bangun solusi failover berdasarkan arsitektur Oracle RAC dan AccelStor Shared-Nothing

Sejumlah besar aplikasi Enterprise dan sistem virtualisasi memiliki mekanisme sendiri untuk membangun solusi toleran kesalahan. Secara khusus, Oracle RAC (Oracle Real Application Cluster) adalah sekelompok dua atau lebih server basis data Oracle yang bekerja bersama untuk menyeimbangkan beban dan memberikan toleransi kesalahan pada tingkat server / aplikasi. Untuk bekerja dalam mode ini, diperlukan penyimpanan yang umum, yang perannya biasanya penyimpanan.


Seperti yang telah kita bahas di salah satu artikel kami, dengan sendirinya, terlepas dari adanya komponen duplikat (termasuk pengontrol), sistem penyimpanan masih memiliki titik kegagalan - terutama dalam bentuk satu set data tunggal. Oleh karena itu, untuk membangun solusi Oracle dengan persyaratan keandalan yang meningkat, skema “N server - satu penyimpanan” harus rumit.




Pertama, tentu saja, Anda perlu memutuskan risiko apa yang ingin kami asuransikan. Dalam artikel ini, kami tidak akan mempertimbangkan perlindungan terhadap ancaman seperti meteorit telah tiba. Jadi membangun solusi pemulihan bencana yang tersebar secara geografis akan tetap menjadi topik untuk salah satu artikel berikut. Di sini kita melihat apa yang disebut solusi pemulihan bencana Cross-Rack, ketika perlindungan dibangun di tingkat lemari server. Lemari sendiri dapat terletak di ruangan yang sama, atau berbeda, tetapi biasanya di dalam gedung yang sama.


Kabinet ini harus berisi semua set peralatan dan perangkat lunak yang diperlukan yang akan memastikan operasi database Oracle terlepas dari keadaan "tetangga". Dengan kata lain, menggunakan solusi pemulihan bencana Cross-Rack, kami menghilangkan risiko kegagalan:


  • Server Aplikasi Oracle
  • Sistem penyimpanan
  • Sistem switching
  • Kegagalan total semua peralatan di kabinet:
    • Kegagalan daya
    • Kegagalan sistem pendingin
    • Faktor eksternal (manusia, alam, dll.)

Duplikasi server Oracle menyiratkan prinsip Oracle RAC dan diimplementasikan melalui aplikasi. Duplikasi alat switching juga tidak masalah. Tetapi dengan duplikasi sistem penyimpanan, semuanya tidak begitu sederhana.


Opsi termudah adalah mereplikasi data dari penyimpanan utama ke cadangan. Sinkron atau asinkron, tergantung pada kemampuan penyimpanan. Replikasi asinkron segera menimbulkan pertanyaan untuk memastikan konsistensi data dengan Oracle. Tetapi bahkan jika ada integrasi perangkat lunak dengan aplikasi, dalam hal apa pun, dalam hal terjadi kecelakaan pada sistem penyimpanan utama, intervensi manual oleh administrator akan diperlukan untuk mengalihkan cluster ke penyimpanan cadangan.


Opsi yang lebih kompleks adalah "virtualisator" perangkat lunak dan / atau perangkat keras dari sistem penyimpanan, yang akan menghilangkan masalah dengan konsistensi dan intervensi manual. Tetapi kompleksitas penyebaran dan administrasi selanjutnya, serta biaya yang sangat tidak senonoh dari solusi semacam itu, membuat takut banyak orang.


Hanya untuk skenario seperti pemulihan bencana Cross-Rack, semua Flash AccelStor NeoSapphire ™ H710 menggunakan arsitektur Shared-Nothing yang sempurna . Model ini adalah sistem penyimpanan dua-tunggal yang menggunakan teknologi FlexiRemap® sendiri untuk bekerja dengan flash drive. Berkat FlexiRemap® NeoSapphire ™ H710, ini dapat menghasilkan hingga 600K IOPS @ 4K penulisan acak dan 1M + IOPS @ 4K pembacaan acak, yang tidak dapat dicapai dengan penyimpanan berbasis RAID klasik.


Tetapi fitur utama dari NeoSapphire ™ H710 adalah eksekusi dua node sebagai lampiran terpisah, yang masing-masing memiliki salinan data sendiri. Sinkronisasi simpul dilakukan melalui antarmuka InfiniBand eksternal. Berkat arsitektur ini, node dapat tersebar di lokasi yang berbeda dengan jarak hingga 100m, sehingga memberikan solusi pemulihan bencana Cross-Rack. Kedua node bekerja sepenuhnya dalam mode sinkron. Dari sisi host, H710 terlihat seperti penyimpanan dual-controller biasa. Oleh karena itu, tidak ada opsi perangkat lunak dan perangkat keras tambahan dan pengaturan rumit yang perlu dilakukan.


Jika Anda membandingkan semua solusi pemulihan bencana Cross-Rack yang dijelaskan di atas, versi AccelStor menonjol dari yang lain:


AccelStor NeoSapphire ™ Shared Nothing ArchitecturePerangkat lunak atau "virtualizer" penyimpananSolusi replikasi
Ketersediaan
Kegagalan ServerTidak ada downtimeTidak ada downtimeTidak ada downtime
Alihkan KegagalanTidak ada downtimeTidak ada downtimeTidak ada downtime
Kegagalan PenyimpananTidak ada downtimeTidak ada downtimeDowntime
Kegagalan seluruh kabinetTidak ada downtimeTidak ada downtimeDowntime
Biaya dan kerumitan
Biaya solusiRendah *TinggiTinggi
Kesulitan PenempatanRendahTinggiTinggi

* AccelStor NeoSapphire ™ masih merupakan array All Flash, yang menurut definisi tidak memerlukan biaya "3 kopecks," terutama karena ia memiliki cadangan kapasitas ganda. Namun, membandingkan total biaya solusi berdasarkan solusi tersebut dengan yang serupa dari vendor lain, biayanya dapat dianggap rendah.


Topologi untuk menghubungkan server aplikasi dan Semua node array Flash akan terlihat seperti ini:



Saat merencanakan topologi, Anda juga sangat disarankan untuk menduplikasi switch manajemen dan interkoneksi server.


Selanjutnya, kita akan berbicara tentang menghubungkan melalui Fibre Channel. Dalam hal menggunakan iSCSI, semuanya akan sama, disesuaikan untuk jenis switch yang digunakan dan pengaturan array yang sedikit berbeda.


Pekerjaan persiapan pada array


Perangkat keras dan lunak bekas

Spesifikasi Server dan Switch


KomponenDeskripsi
Oracle Database 11g serverDua
Sistem operasi serverOracle Linux
Versi database Oracle11g (RAC)
Prosesor per serverDua 16 core Intel® Xeon® CPU E5-2667 v2 @ 3.30GHz
Memori fisik per server128GB
Jaringan fc16Gb / s FC dengan multipathing
FC HBAEmulex Lpe-16002B
Port 1GbE publik khusus untuk manajemen clusterAdaptor ethernet Intel rj45
16Gb / s FC switchBrokat 6505
Port 10GbE pribadi khusus untuk sinkronisasi dataIntel X520

AccelStor NeoSapphhire ™ Semua Spesifikasi Array Flash


KomponenDeskripsi
Sistem penyimpananModel ketersediaan tinggi NeoSapphire ™: H710
Versi gambar4.0.1
Jumlah total drive48
Ukuran drive1.92TB
Jenis driveSSD
Port target FCPort 16x16Gb (8 per node)
Port manajemenKabel ethernet 1GbE menghubungkan ke host melalui switch ethernet
Port detak jantungKabel ethernet 1GbE menghubungkan antara dua simpul penyimpanan
Port sinkronisasi dataKabel InfiniBand 56Gb / s


Sebelum Anda mulai menggunakan array, Anda harus menginisialisasi itu. Secara default, alamat kontrol kedua node adalah sama (192.168.1.1). Anda perlu menyambungkannya satu per satu dan menetapkan alamat manajemen yang baru (sudah berbeda) dan mengonfigurasi sinkronisasi waktu, setelah itu port Manajemen dapat dihubungkan ke satu jaringan. Setelah itu, node-node tersebut digabungkan menjadi sepasang HA dengan menetapkan subnet ke koneksi Interlink.



Setelah inisialisasi selesai, Anda dapat mengontrol array dari sembarang node.


Selanjutnya, buat volume yang diperlukan dan publikasikan untuk server aplikasi.



Sangat disarankan agar Anda membuat beberapa volume untuk Oracle ASM, karena ini akan meningkatkan jumlah target untuk server, yang pada akhirnya akan meningkatkan kinerja keseluruhan (lebih lanjut tentang antrian di artikel lain).


Konfigurasi tes
Nama volume penyimpananUkuran volume
Data01200GB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Data10200GB
Kisi011GB
Kisi021GB
Kisi031GB
Kisi041GB
Kisi051GB
Kisi061GB
Redo01100GB
Ulangi02100GB
Ulang03100GB
Ulang04100GB
Ulangi05100GB
Ulang06100GB
Ulang07100GB
Ulangi08100GB
Ulang09100GB
Ulang 10100GB


Beberapa penjelasan tentang mode operasi array dan proses yang terjadi dalam situasi darurat



Setiap dataset simpul memiliki parameter "nomor versi". Setelah inisialisasi awal, itu sama dan sama dengan 1. Jika karena alasan tertentu nomor versi berbeda, maka selalu ada sinkronisasi data dari versi yang lebih lama ke versi yang lebih muda, setelah itu nomor tersebut disejajarkan dengan versi yang lebih muda, mis. ini berarti bahwa salinannya identik. Alasan mengapa versi dapat bervariasi:


  • Reboot terjadwal dari salah satu node
  • Kecelakaan di salah satu node karena shutdown mendadak (listrik, panas berlebih, dll.).
  • Koneksi InfiniBand rusak dengan ketidakmampuan untuk melakukan sinkronisasi
  • Gangguan pada salah satu node karena korupsi data. Ini akan membutuhkan pembuatan grup HA baru dan sinkronisasi lengkap set data.

Bagaimanapun, simpul yang tersisa online meningkatkan nomor versinya satu, sehingga setelah tersambung kembali dengan pasangan, menyinkronkan kumpulan datanya.


Jika koneksi terputus melalui tautan Ethernet, maka Heartbeat sementara beralih ke InfiniBand dan kembali dalam 10 detik ketika dipulihkan.


Konfigurasi Host


Untuk memastikan toleransi kesalahan dan meningkatkan kinerja, Anda harus mengaktifkan dukungan MPIO untuk array. Untuk melakukan ini, tambahkan baris ke file /etc/multipath.conf, lalu muat ulang layanan multipath


Teks tersembunyi
perangkat {
perangkat {
vendor "AStor"
path_grouping_policy "group_by_prio"
path_selector "panjang antrian 0"
path_checker "tur"
fitur "0"
hardware_handler "0"
prio "const"
segera failback
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names ya
detect_prio ya
rr_min_io_rq 1
no_path_retry 0
}
}


Selanjutnya, agar ASM dapat bekerja dengan MPIO melalui ASMLib, Anda perlu memodifikasi file / etc / sysconfig / oracleasm dan kemudian jalankan /etc/init.d/oracleasm scandisks


Teks tersembunyi

# ORACLEASM_SCANORDER: Pola yang cocok untuk memesan pemindaian disk
ORACLEASM_SCANORDER = "dm"



# ORACLEASM_SCANEXCLUDE: Mencocokkan pola untuk mengeluarkan disk dari pemindaian
ORACLEASM_SCANEXCLUDE = "sd"


Catatan


Jika Anda tidak ingin menggunakan ASMLib, Anda dapat menggunakan aturan UDEV, yang merupakan dasar untuk ASMLib.


Dimulai dengan versi 12.1.0.2 Oracle Database, opsi tersedia untuk instalasi sebagai bagian dari perangkat lunak ASMFD.



Pastikan untuk memastikan bahwa disk yang dibuat untuk Oracle ASM sejajar dengan ukuran blok tempat array bekerja secara fisik (4K). Jika tidak, masalah kinerja dapat terjadi. Karena itu, Anda harus membuat volume dengan parameter yang sesuai:


berpisah / dev / mapper / nama perangkat mklabel gpt mkpart primer 2048s 100% menyelaraskan-periksa optimal 1


Distribusi database pada volume yang dibuat untuk konfigurasi pengujian kami


Nama volume penyimpananUkuran volumePemetaan Volume LUNsDetail Perangkat Volume ASMUkuran Unit Alokasi
Data01200GBPetakan semua volume penyimpanan ke sistem penyimpanan semua port dataRedundansi: normal
Nama: DGDATA
Tujuan: File data
4MB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Data10200GB
Kisi011GBRedundansi: normal
Nama: DGGRID1
Tujuan: Kotak: CRS dan Voting
4MB
Kisi021GB
Kisi031GB
Kisi041GBRedundansi: normal
Nama: DGGRID2
Tujuan: Kotak: CRS dan Voting
4MB
Kisi051GB
Kisi061GB
Redo01100GBRedundansi: normal
Nama: DGREDO1
Tujuan: Mengulang log utas 1

4MB
Ulangi02100GB
Ulang03100GB
Ulang04100GB
Ulangi05100GB
Ulang06100GBRedundansi: normal
Nama: DGREDO2
Tujuan: Mengulang log utas 2

4MB
Ulang07100GB
Ulangi08100GB
Ulang09100GB
Ulang 10100GB

Pengaturan basis data
  • Ukuran blok = 8K
  • Swap space = 16GB
  • Nonaktifkan AMM (Manajemen Memori Otomatis)
  • Nonaktifkan Halaman Besar Transparan


Pengaturan lainnya

# 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 # jangan atur ini jika Anda menggunakan Linux x86
✓ vm.vfs_cache_pressure = 200
✓ vm.nr_hugepages = 57000



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


sqlplus “/ as sysdba”
ubah proses set sistem = 2000 scope = spfile;
ubah set sistem open_cursors = 2000 scope = spfile;
ubah set sistem session_cached_cursors = 300 scope = spfile;
ubah set sistem db_files = 8192 scope = spfile;




Tes toleransi kesalahan


Untuk tujuan demonstrasi, HammerDB digunakan untuk meniru beban OLTP. Konfigurasi HammerDB:


Jumlah Gudang256
Total Transaksi per Pengguna1000000000000
Pengguna virtual256

Hasilnya, indikator TPM 2.1M diperoleh, yang jauh dari batas kinerja array H710 , tetapi ini adalah "langit-langit" untuk konfigurasi perangkat keras server saat ini (terutama karena prosesor) dan jumlahnya. Tujuan dari tes ini adalah untuk menunjukkan toleransi kesalahan dari solusi secara keseluruhan, dan bukan untuk mencapai kinerja maksimum. Oleh karena itu, kami hanya akan membangun di atas angka ini.



Tes untuk kegagalan salah satu node




Host kehilangan beberapa jalur ke toko, terus bekerja melalui yang tersisa dengan simpul kedua. Kinerja turun selama beberapa detik karena restrukturisasi jalur, dan kemudian kembali normal. Tidak ada gangguan layanan yang terjadi.


Uji kegagalan kabinet dengan semua peralatan




Dalam hal ini, kinerja juga turun selama beberapa detik karena restrukturisasi jalur, dan kemudian kembali ke setengah nilai dari indikator asli. Hasilnya dibelah dua dari yang asli karena pengecualian dari operasi satu server aplikasi. Gangguan layanan juga tidak terjadi.


Jika Anda perlu menerapkan solusi pemulihan bencana Cross-Rack yang toleran terhadap Oracle dengan biaya yang masuk akal dan dengan sedikit upaya penyebaran / administrasi, maka bekerja bersama dengan arsitektur Oracle RAC dan AccelStor Shared-Nothing akan menjadi salah satu pilihan terbaik. Alih-alih Oracle RAC, mungkin ada perangkat lunak lain yang menyediakan untuk clustering, DBMS atau sistem virtualisasi yang sama, misalnya. Prinsip membangun solusi akan tetap sama. Dan skor akhir adalah nol untuk RTO dan RPO.

Source: https://habr.com/ru/post/id448538/


All Articles