Використовуючи головний вузол ZFS як сервер бази даних?


9

Я використовую двоядерний NAS-підтримку ZFS для спільного зберігання кластерів високої доступності на основі рекомендованої Nexenta архітектури, як показано тут:

введіть тут опис зображення

Диски в 1 JBOD зберігатимуть файли баз даних для однієї бази даних Postgres 4 ТБ, а диски в іншій JBOD зберігають 20 ТБ великих сирих бінарних плоских файлів (результати кластеру для великих моделей зіткнення зіркових об'єктів). Іншими словами, JBOD, що створює резервні копії файлів Postgres, буде працювати в основному випадковими робочими навантаженнями, тоді як JBOD, що підтримує результати моделювання, буде працювати в основному послідовним навантаженням. Обидва головні вузли мають 256 ГБ пам'яті та 16 ядер. Кластер містить близько 200 ядер, що підтримують сеанс Postgres, тому я очікую приблизно 200 одночасних сеансів.

Мені цікаво, чи розумно в моїх налаштуваннях так, щоб головні вузли ZFS діяли одночасно як дзеркальна пара серверів баз даних Postgres для мого кластера? Єдині недоліки, які я бачу, це:

  1. Менша гнучкість для масштабування моєї інфраструктури.
  2. Трохи нижчий рівень надмірності.
  3. Обмежена пам'ять та ресурси процесора для Postgres.

Однак перевага, яку я бачу, полягає в тому, що ZFS в будь-якому разі досить тупий щодо автоматичного відмови, і мені не доведеться витрачати багато роботи, отримуючи кожен сервер бази даних Postgres, щоб з'ясувати, чи не вдався головний вузол, оскільки він вийде з ладу разом із головою вузол.


PostgreSQL не можна запускати в будь-якому режимі спільного зберігання. Спроби зробити це не вдасться. Спроба обійти захист, щоб перешкодити вам робити це (як-от переміщення / приховування postmaster.pid), призведе до серйозної пошкодження даних.
Крейг Рінгер

2
@CraigRinger Хм, чи суперечить це wiki.postgresql.org/wiki/Shared_Storage ?
elleciel

1
Ви можете запустити його, якщо ви абсолютно гарантуєте, що тільки один поштовий майстер одночасно може мати доступ до каталогу даних. Хороший STONITH / фехтування є абсолютною вимогою уникнути великої корупції даних. Особисто немає способу зробити це. Це також виключає переваги, про які ви говорите - з'ясовуючи, який основний / активний сервер автоматично, тощо - тому що вам доведеться керувати відмовою.
Крейг Рінгер

2
Я переглянув сторінку вікі, щоб зробити її зрозумілішою; дякую, що вказали на це.
Крейг Рінгер

1
Це не має сенсу. Рішення HA Nexenta використовує кластеризацію RSF-1 . Здається, ви робите це з ZFS на Linux без RSF-1. Зауважте, ZFS в Linux насправді не має можливості кластеризації, тому посилання на Nexenta не застосовується. Що ви можете отримати, маючи два головних вузла?
ewwhite

Відповіді:


0

У вас не може бути двох екземплярів Postgres ("кластерів" у термінології Postgres), що діють на одних і тих же фізичних файлах.

якщо ви хочете продуктивність, різкості можуть допомогти вам (по два екземпляри, кожен з яких містить різні дані)

Якщо ви хочете забезпечити високу доступність, тоді рішення може бути відмовою від STONITH. вам потрібно переконатися, що потім апаратне забезпечення відновлюється, воно не намагається відкрити базу даних, поки другий вузол обслуговує її.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.