Назад | Перейти на главную страницу

Лучшие практики для балансировки нагрузки и виртуализации

Я немного поискал здесь и не нашел ничего подходящего для меня. Я постараюсь быть максимально кратким.

В настоящее время у меня есть сервера OSX, их три. Я перехожу к среде виртуализации для резервирования, и поскольку Apple отменила Xserve. У меня нет опыта виртуализации, но Я быстро учусь и я имею администрируемые серверы с 1997 г..

Итак, новый выделенный сервер в новом дата-центре. Отличное оборудование, установил VMware ESXi, и внутри я создал две сети: «Сеть виртуальных машин» и «Коммутатор». «Сеть виртуальных машин» подключена к физическому сетевому адаптеру, а «Коммутатор» - это виртуальный коммутатор.

Затем я создал VPS с именем «FW» с двумя виртуальными сетевыми адаптерами, по одной для каждой сети в VMware, установил pfSense на этой виртуальной машине и подключил «настоящий» сетевой адаптер к внутреннему коммутатору. Готово.

Затем я собираюсь создать пул ресурсов в сети «Switch» и позволить pfSense сбалансировать его нагрузку.

Мое веб-приложение в настоящее время содержится в одном каталоге, который весит примерно 300 ГБ данных, моя база данных - примерно на 50 ГБ больше. В настоящее время они находятся на Xserve 1 и Xserve 2.

Мой текущий мыслительный процесс заставляет меня работать с этими VPS-машинами:

1. Главный сервер (10.0.0.10) Он содержит два виртуальных жестких диска, один маленький для Linux и один большой для моего веб-приложения. Более крупный монтируется внутри Linux как «/ Atlas» (имя моей CMS) и затем экспортируется в NFS. VPS имеет 2 ГБ оперативной памяти и 2 процессора.

2. Сервер базы данных (10.0.0.11) Это главный сервер базы данных

3. Веб-серверы (10.0.0.20 - 10.0.0.30) Десять серверов Linux, каждый с 5 ГБ жесткого диска, 5 ГБ оперативной памяти и 4 процессора. Каждый монтирует экспорт NFS из №1 и может читать и писать в мой Атлас.

Мои вопросы:

  1. Должен ли я запускать ведомые устройства MySQL на каждом веб-сервере из трех? У меня только около 900 ГБ на сервере, поэтому пространство - проблема.

  2. Если нет, должен ли я иметь отдельные подчиненные серверы аварийного переключения MySQL в одной и той же VMware на случай, если что-то случится с №2?

  3. Я сделаю rsync-резервную копию главного сервера в удаленное место, но есть ли лучший способ, чем NFS, чтобы позволить каждому веб-серверу читать и записывать эти данные. Использование кластерной файловой системы привело бы к проблемам с пространством, верно?

  4. Должен ли я использовать VPS для балансировки нагрузки и использовать собственный LB Apache? Это лучше для веб-приложения, чем использование LB pfSense?

  5. Есть ли другие слабые места в моих мыслях? Я буду использовать его в качестве основного сервера, но у меня будет сервер аварийного переключения, настроенный идентично в другом месте, и я буду использовать DNS-серверы для перенаправления трафика при необходимости (автоматически или вручную).

Я не строю здесь Форт-Нокс, но мне нужно лучшее резервирование, чем сегодня, и я хочу сделать это как можно более «правильным». Любая помощь / комментарии приветствуются!

  1. Многоуровневая сетевая топология означает, что вы никогда не должны запускать MySQL на своем веб-сервере. Если вам нужны резервные серверы MySQL или серверы MySQL с балансировкой нагрузки, создайте db1, db2, db3 и т. Д. Не создавайте дополнительных ведомых устройств, которые вам действительно нужны, поскольку репликация - это все или ничего со стандартным MySQL.
  2. Обычно я делаю репликацию МАСТЕР-МАСТЕР. Обычно это не рекомендуется из-за риска конфликта ключей, но я написал несколько сценариев, которые вторичный сервер запускает в режиме read_only, чтобы избежать записи. Поэтому, если сервер умирает, легко перевернуть переключатель read_only и начать принимать записи.
  3. NFS в порядке; просто сделайте обычную настройку производительности и тестирование.
  4. Взгляните на haproxy для балансировки нагрузки Apache / HTTP и TCP. Прекрасно работает даже с MySQL.. Вы можете запустить haproxy на виртуальной машине.
  5. Наличие избыточных виртуальных машин - это хорошо, но работа на одной физической машине по-прежнему остается слабым местом. Наличие 10 идентичных виртуальных машин Linux, конкурирующих за ресурсы, также может быть слабым местом.

Заключительный комментарий: ESXi великолепен (не поймите меня неправильно), но я бы не стал использовать его в этой ситуации. Взгляните на систему контейнеризации, например OpenVZ. Proxmox предоставляет отличный пользовательский интерфейс. Производительность будет значительно лучше; каждая виртуальная машина может использовать все ядра RAM и CPU. (Если, конечно, вы не ограничиваете.) Конечно, OpenVZ работает только с Linux. Но любое веб-приложение, работающее на Xserve, должно работать и в контейнере Linux?