Pengaturan untuk lingkungan tervirtualisasi ketersediaan tinggi

9

Untuk proyek saya memiliki tugas merencanakan pengaturan ketersediaan tinggi untuk toko web dan sistem CMS. Namun, tentu saja proyek ini dengan anggaran yang ketat. Jadi solusi kelas atas mungkin tidak ada dalam anggaran.

Akan ada dua mesin yang menjalankan server web (CMS, shop), satu mesin yang menjalankan database, dan satu mesin untuk menjalankan server faks yang diperlukan untuk mengirimkan pesanan ke mitra. Semua sistem menjalankan Linux. Semua komponen ini harus sangat tersedia dan harus mendukung kegagalan yang transparan.

Untuk mengurangi biaya perangkat keras saya memikirkan lingkungan yang tervirtualisasi. Ada banyak informasi di luar sana, tetapi saya tidak tahu persis harus mulai dari mana. Tampak jelas bahwa setidaknya untuk server diperlukan sebagai host untuk mesin virtual, sehingga tidak ada titik kegagalan tunggal.

Mana cara terbaik untuk mendukung ketersediaan tinggi?

Pertanyaan pertama adalah solusi virtualisasi mana yang terbaik dalam situasi ini. Perlu ada semacam antarmuka manajemen. Perlu ada cara untuk memindahkan mesin virtual yang berjalan dari satu host ke yang lain, sehingga pemeliharaan host dapat dilakukan. Perlu ada semacam mekanisme, sehingga mesin virtual masih tersedia jika satu host gagal. Bisakah Anda memberi saran tentang solusi yang valid di sini?

Penyimpanan file bersama tampaknya menjadi prasyarat ketersediaan tinggi dalam kebanyakan kasus (harapkan VMware vSphere yang agak mahal). Namun, lebih suka menaruh lebih banyak uang di host mesin virtual daripada menambahkan dua server lain ke pengaturan untuk menyediakan penyimpanan file NFS yang berlebihan. Apakah ada kemungkinan untuk bergaul dengan hanya dua host mesin virtual? Sebuah solusi mungkin menggunakan dua ini sebagai host NFS juga. Apakah ada banyak penalti kinerja untuk melakukan ini?

EDIT: Saya menargetkan ketersediaan 99,9%. Namun, tidak diperlukan ketersediaan 24/7 karena ada jam kerja reguler, yang memberikan ruang untuk bermanuver. Periode ketersediaan yang harus dijamin antara pukul 10:00 hingga tengah malam.

spa
sumber
2
Seberapa tinggi 'ketersediaan tinggi'? Apakah Anda memotret untuk ketersediaan 1-sembilan atau 6-sembilan, atau di antara keduanya? Sampai Anda memiliki persyaratan konkret, tidak mungkin untuk mengatakan apakah apa yang ingin Anda lakukan dapat dicapai dengan anggaran tertentu.
growse
Ya kamu benar. Saya menargetkan ketersediaan 99,9%.
spa
"99,9%" bukan hanya ungkapan yang kami buang. Itu sama dengan downtime sekitar 8,8 jam setahun . Itu membawa Anda keluar dari berbagai sistem yang baru saja dilempar bersama dengan anggaran yang ketat. Jika anggaran Anda terbatas, dapatkah Anda mendukung tingkat ketersediaan itu?
Rob Moir
1
@RobMoir - Saya berpendapat bahwa jika Anda memenuhi kriteria yang saya uraikan dalam jawaban saya, tidak ada banyak masalah yang tidak dapat Anda atasi dalam 8 jam tersebut (dan anggarannya masih kecil). Jika Anda memastikan bahwa peringatan lanjut, out-of-jam, downtime terjadwal tidak diperhitungkan dalam SLA Anda (untuk perangkat lunak non-24/7).
Mark Henderson
@MarkHenderson Saya tahu Anda benar, saya hanya mengatakan bahwa prosesnya memerlukan pemikiran dan perencanaan dan tidak akan "terjadi begitu saja" (Anda perlu memastikan Anda bisa mendapatkan suku cadang di lokasi dengan baik dalam waktu 8 jam, untuk contoh, jadi Anda tidak ingin kehilangan 7 jam 'jendela' ke kantor pos, atau menemukan pemasok favorit Anda memilih hari itu untuk kehabisan stok pada kabel sepele yang biasanya mereka miliki dalam stok oleh ribuan) .
Rob Moir

Jawaban:

13

Sebagai gambaran umum, untuk mencapai Ketersediaan Tinggi yang Anda butuhkan:

  1. Beberapa server
  2. Beberapa salinan data yang konsisten
  3. Data konsisten yang dapat diakses antara beberapa server
  4. Cara mem-booting instance ke-2 secara otomatis pada server siaga

Nomor 1 sesederhana kedengarannya - beli dua server yang identik.

Nomor 2 dapat dicapai dengan mereplikasi SAN (mahal, sangat cepat, sangat andal), atau sistem file yang direplikasi pada masing-masing server (murah, kecepatan dan keandalan dapat bergantung pada pengetahuan Anda tentang teknologi yang dipilih).

Nomor 3 dapat dicapai oleh SAN (satu LUN penyimpanan, diakses oleh dua server), atau sistem file yang direplikasi (dua area penyimpanan terpisah, masing-masing server hanya dapat melihat sendiri).

Nomor 4 dapat dicapai dengan aplikasi detak jantung.

Untuk melakukan ini dengan anggaran kecil, katakanlah VMWare vSphere, Anda dapat menggunakan SAN atau VMWare sekarang menawarkan alat penyimpanan replikasi diri yang menawarkan dua penyimpanan data yang berbeda pada dua server yang dapat digunakan untuk ketersediaan tinggi. vSphere juga menawarkan detak jantung bawaan dan konfigurasi ketersediaan tinggi.

Untuk melakukan ini tanpa anggaran, Anda bisa pergi ke jalur Xen, dan menggunakan DRBD untuk mereplikasi penyimpanan antara dua node. Kemudian Anda mengatur detak jantung untuk mengganti node penyimpanan DRBD aktif dan Xen instance untuk mem-boot VM pada host ke-2 ketika yang pertama turun.

Anda tidak akan mendapatkan 5-sembilan ini (99,999%) uptime menggunakan ini rekomendasi dasar, tetapi Anda bisa easilly mendapatkan 3-sembilan (99,9%) dengan menggunakan metode termurah jika Anda tahu apa yang Anda lakukan.

Mark Henderson
sumber
9

Anda berbicara tentang "pengeluaran" dalam hal "berapa banyak uang tunai yang akan dibeli dengan biaya ini" ketika membahas penyimpanan bersama. Tentu saja itu poin yang benar-benar valid, uang sangat ketat di mana-mana .

Tetapi jika Anda berbicara tentang Ketersediaan Tinggi maka Anda juga perlu bertanya " mengapa kami ingin ketersediaan tinggi?" dan jika jawabannya adalah, misalnya, "karena bisnis menghasilkan lebih dari $ 2000 per jam dalam penjualan online, jadi jika kita libur selama satu jam maka kita telah kehilangan $ 2000" maka pertanyaan tentang biaya dan keterjangkauan bisa menjadi "Bisakah kita tidak mampu membeli sesuatu yang memungkinkan atau sangat meningkatkan penyebaran ketersediaan tinggi kami? "

Ini adalah detail penting dan komentar Anda tentang anggaran - 'ekor' TI tidak boleh mengibaskan 'anjing' bisnis dengan menekankan solusi yang terlalu rumit dan mahal untuk masalah kecil, tetapi pada saat yang sama jika bisnis memiliki persyaratan tertentu dari infrastruktur TI-nya maka harus dipersiapkan untuk menganggarkan dengan baik atau menyesuaikan persyaratannya.

Saya pikir virtualisasi memiliki banyak potensi dalam meningkatkan ketersediaan sistem, tetapi itu bukan tongkat ajaib. Sisi perangkat keras, meskipun penting, sangat sekunder untuk persyaratan perangkat lunak - tidak ada gunanya memiliki cluster basis data SQL yang jatuh tanpa masalah jika salah satu server SQL mogok jika aplikasi front-end yang berbicara ke database tersedak karena tidak dapat menangani failover.

Dan dua server "sangat tersedia" yang duduk bersebelahan di pusat data masih rentan terhadap kegagalan daya, pencurian, dll. Sekali lagi, tergantung pada jawaban untuk " mengapa kita melakukan ini?", Anda mungkin perlu mempertimbangkan aspek ini dengan cukup hati-hati karena dapat menambah biaya dan kompleksitas ke beberapa bagian dari proyek Anda.

Rob Moir
sumber
3
...no good having a SQL database cluster that falls over with no trouble in the event of one of the SQL servers crashing if the front-end application that talks to the database chokes because it can't handle the failover.- Saya tidak bisa cukup menekankan hal ini. Kami memiliki klien yang meminta kami menerapkan cluster HA SQL Server pada SAN besar dan pada akhirnya perangkat lunak mereka harus dihidupkan ulang jika terjadi kegagalan karena tidak dapat menangani gangguan komunikasi. Itu adalah latihan mahal yang sia-sia ketika SQL Mirror dan NLB akan mencukupi.
Mark Henderson
Kedengarannya seperti kita berdua mendapatkan bekas luka yang sama dari proyek lama
Rob Moir
@ MarkHenderson mengapa komunikasi terputus (btw yang mana - SAN atau jaringan)?
Nils
5

Tanpa mengetahui DB dan server aplikasi yang Anda gunakan, saya akan merekomendasikan:

  • Gunakan XEN> 3,2 dalam mode PV untuk VM (hanya favorit pribadi saya) - kompartemen atau solusi virutalization lightwight lainnya mungkin cocok juga (OpenVZ untuk menyebutkan satu).
  • Bangun empat mesin VM pada setiap simpul fisik
  • Gunakan RAID 5 lokal dengan disk SAS 3,5 "- sebanyak mungkin disk yang tersedia secara lokal (5 bagus)
  • Gunakan 15k RPM disk (DB Anda akan membutuhkannya)
  • Gunakan DRBD dan OCFS2 untuk menyediakan penyimpanan "berbagi" yang murah, gunakan jaringan lokal yang cepat, aman, dan dapat diandalkan untuk koneksi ini (ikatan interkoneksi langsung cukup cepat dan bagus).
  • Lakukan HA pada level aplikasi
  • Gunakan load-balancing antara pasangan mesin, sehingga Anda membuat 8 mesin melakukan tugas bersamaan

HA-Contoh:

  • Application-Server: Gunakan Tomcat dalam mode aktif / aktif berkerumun
  • LVS: Gunakan slave bersamaan dan master replikasi lvs
  • Oracle-DB: Gunakan RAC (Saya tidak tahu apakah ada solusi setara untuk OpenSource DBs)

Jika Anda melakukan HA pada layer aplikasi, layer itu paling tahu bagaimana mereplikasi sesi. Jika satu simpul turun (terencana atau tidak terencana), simpul yang masih hidup akan mengambil alih - termasuk sesi.

Nils
sumber
"Oracle-DB: Use RAC" - Edisi Standar tidak berlisensi atau didukung dengan OCFS2. Selain itu, jawaban yang sangat informatif.
kubanczyk
@kubanczyk Oracle-RAC lebih dari ocfs2. Tapi ocfs2 gratis. Jadi Anda bisa menggunakannya kapan pun Anda mau.
Nils
2

Mengapa Anda ingin membeli host Anda sendiri? Mengapa Anda tidak menemukan penyedia Enterprise Cloud / IaaS seperti BlueLock atau Terremark yang akan menyediakan infrastruktur yang Anda butuhkan. Mereka akan menyediakan layanan seperti vSphere HA (lebih seperti pengurangan downtime daripada layanan HA tetapi ini merupakan solusi yang hemat biaya), Firewall, LTM / SSL Offloader, SAN (dengan rak berlebih), Pemantauan / Peringatan, dll. Perhatikan bahwa kami tidak berbicara tentang solusi cloud konsumen di sini jadi bersiaplah untuk membayar nilai.

HTTP500
sumber
Ya kamu benar. Namun setup termasuk seperti perangkat keras khusus untuk pengiriman faks. Jadi solusi cloud tidak akan melakukannya dengan sedih.
spa
@ spa, Anda masih bisa menyediakan perangkat keras khusus di lingkungan fisik mereka, sisanya di virtual dan menjembatani VLAN.
HTTP500