Мне нравится доступ оболочки так же как любой администратор, но клиент всегда знает лучше всего. Просто тарифицируйте свое время, и если Вы занимаете больше времени, потому что не наличие доступа оболочки замедляет Вас, затем скажите им это.
Каково Ваше конкретное требование для него? Удобство выполнения материала, локального на веб-сервере, или там законные риски данных, идущих ясный по проводу? Можно ли соединиться с удаленным mysql клиентом (в этом случае, uou может попытаться использовать опцию SSL), или это связывается с localhost сервера или иначе non-routable интерфейс? Если уязвимые данные являются беспокойством, можно настроить простую страницу PHP-загрузки и использовать HTTPS для загрузок.
Без большего количества деталей, существует мало для создания случая в Вашу пользу.
Подсистемы балансировки нагрузки не могут легко масштабироваться другими подсистемами балансировки нагрузки, так как по сути будет единственная подсистема балансировки нагрузки на цепочке, где-нибудь поддерживающей соединения. Тем не менее стабилизаторы, такие как LVS или HAProxy имеют абсурдную способность в диапазоне Гбит/с. После того как Вы добираетесь вне возможностей единственной подсистемы балансировки нагрузки (программное обеспечение, аппаратные средства, безотносительно), затем необходимо будет переместиться в другие методы, такие как круговой DNS.
Хорошо, уже существует принятый ответ, но существует что-то для добавления.. Наиболее распространенные 'классические' способы масштабировать уровень подсистемы балансировки нагрузки (без определенного порядка):
Циклический алгоритм DNS для разглашения нескольких IP-адресов для домена. Для каждого IP-адреса реализуйте высоконадежную пару сервера (2 сервера, сотрудничающие при хранении одного IP-адреса, работающего в любом случае.) Каждый IP соответствует одному кластеру подсистемы балансировки нагрузки, или устройства использования или серверы с программным обеспечением выравнивания нагрузки. Масштаб горизонтально путем добавления большего количества пар подсистемы балансировки нагрузки по мере необходимости.
Маршрутизация или брандмауэр настраивает для распределения нагрузки к нескольким подсистемам балансировки нагрузки. Имейте передний маршрутизатор, или передний брандмауэр распространил входящие соединения с несколькими IP-адресами (каждое представление одной пары подсистемы балансировки нагрузки) путем хеширования исходного IP-адреса, наличия нескольких маршрутов равной стоимости к подсистемам балансировки нагрузки, или подобный.
Слой подсистем балансировки нагрузки уровня IP перед слоем подсистем балансировки нагрузки уровня HTTP. Выравнивание нагрузки iPlayer может быть реализовано в ASICs / кремний и может быть злым быстро для некоторых вещей. Таким образом единственная пара подсистемы балансировки нагрузки IP может часто 'поддерживать на высоком уровне' с несколькими уровнями HTTP/HTTPS подсистемы балансировки нагрузки и обеспечивать мультигигабитные уровни производительности при сохранении архитектуры хорошей и простой.
Движение абсолютно всестороннего на различных способах делать вышеупомянутое потребовало бы очень длинного ответа. Но в целом, не то, чтобы трудно масштабировать уровень подсистемы балансировки нагрузки, намного более трудно масштабировать уровень сервера приложений и особенно уровень базы данных.
Выбираете ли Вы форм-фактор устройства (F5, Cisco, A10), или универсальный сервер (программное обеспечение Windows / Linux +) имеет значение меньше. Основные соображения при масштабировании горизонтально слоя подсистемы балансировки нагрузки:
Обычно Вы не должны волноваться об этом, прежде чем Ваш веб-сайт станет очень большим - единственный современный сервер с fx nginx обработает десятки тысяч простых Запросов HTTP в секунду. Не делайте преждевременной оптимизации, не имейте дело с этим, прежде чем Вы будете иметь к.
Типичный подход должен был бы создать кластер, достаточно большой, чтобы обработать необходимую загрузку и использовать SLB, который может сделать детерминированное выравнивание нагрузки (для случая постоянных соединений).
Что-то как CARP использует хеш IP запроса для определения, какой веб-сервер бэкенда обработал бы запрос, это должно быть детерминировано, но не очень полезно, если существует брандмауэр или NAT перед подсистемой балансировки нагрузки.
Можно также найти что-то как IPVS полезным при работе Linux.
Возможно, вместо того, чтобы постоянно сохранить столько открытых соединений для отправки ответов кодируйте приложение таким способом так, чтобы клиенты периодически опрашивали серверы так же часто по мере необходимости?
То, что Вы делаете, на самом деле требует ответа, эта самая миллисекунда или клиент могут ожидать 15/20 секунды до следующего периода опроса?
Ключ для масштабирования слоя выравнивания нагрузки HTTP должен добавить другой слой низшего уровня (IP или TCP) выравнивание нагрузки сначала. Этот слой может быть создан полностью с программным обеспечением с открытым исходным кодом, хотя Вы получите лучшие результаты, если у Вас будут современные маршрутизаторы.
Потоки (сеансы TCP) должны быть хешированы с помощью заголовков, таких как порты IP и TCP источника/места назначения, для решения, в какой frontend они переходят. Вам также нужен механизм, чтобы удостовериться, что, когда frontend умирает, он прекращает привыкать.
Существуют различные стратегии, я собираюсь обрисовать в общих чертах пару этого, я использовал в производстве на сайтах, служащих миллионам пользователей, таким образом, можно получить идею. Это было бы слишком длинно для объяснения всего в деталях, но я надеюсь, что этот ответ даст Вам достаточно информации/указателей для начала работы. Для реализации этих решений, Вы испытываете необходимость в ком-то, кто действительно хорошо осведомлен о сетях.
По общему признанию то, что я описываю здесь, намного более трудно реализовать, чем, что описано в других ответах, но это - действительно современное состояние, если у Вас есть высоко переданный веб-сайт с большими проблемами масштабируемости и требованиями доступности более чем 99,9%. Если у Вас уже есть вид сетевого инженера парня на борту, он стоит меньше, чтобы установить и работать (и в капитальных расходах и в opex), чем устройства подсистемы балансировки нагрузки, и он не может масштабироваться далее почти ни по какой дополнительной стоимости (по сравнению с покупкой нового, еще более дорогого устройства при перерастании текущей модели).
По-видимому, у Вас есть пара маршрутизаторов, на которых соединены Ваши восходящие каналы ISP. Ваш ISP предоставляет 2 ссылки (активный/пассивный, с помощью VRRP). На Ваших маршрутизаторах Вы также используете VRRP, и Вы направляете трафик, идущий в Вашу сеть общего пользования к брандмауэру. Брандмауэры (FW 1
и FW 2
ниже), также также активны/пассивны и отфильтрует трафик и отправит каждый поток на здоровый сервер фронтэнда (Ваши подсистемы балансировки нагрузки HTTP, FE 1
и FE 2
ниже).
+--------------+ +--------------+ | ISP router A | | ISP router B | +--------------+ +--------------+ | | ==#======================#== (public network) | | +---------------+ +---------------+ | Your router A | | Your router B | +---------------+ +---------------+ | | ==#=====#==========#=====#== (RFC 1918 private network) | | | | +------+ +------+ +------+ +------+ | FW 1 | | FE 1 | | FE 2 | | FW 2 | +------+ +------+ +------+ +------+
Цель состоит в том, чтобы иметь поток, похожи на это:
Теперь волшебство происходит на шагах 4 и 5, поэтому давайте посмотрим более подробно, что они делают.
Ваш брандмауэр знает список frontends (FE 1
и FE 2
), и это выберет одного из них на основе конкретного аспекта потока (например, путем хеширования исходного IP и порта среди других заголовков). Но это также должно удостовериться, что передает трафик к здоровому frontend, иначе Вы поместите трафик в черный список. При использовании OpenBSD, например, можно использовать relayd
. Что relayd
делает просто: это проверки состояния весь Ваш frontends (например, путем отправки им тестового Запроса HTTP), и каждый раз, когда frontend здоров, он добавляет его к таблице что использование брандмауэра для выбора следующего транзитного участка пакетов данного потока. Если frontend приводит проверки состояния к сбою, он удален из таблицы, и никакие пакеты больше не отправляются в него. При передаче пакета к frontend весь брандмауэр делает подкачивает целевой MAC-адрес пакета, чтобы быть тем из выбранных frontend.
На шаге 5 пакеты от пользователя получены Вашей подсистемой балансировки нагрузки (быть этим Лак, nginx, или безотносительно). На данном этапе пакет все еще предназначен к Вашему общедоступному IP-адресу, таким образом, необходимо исказить VIP на петлевом интерфейсе. Это называют DSR (Прямой Возврат Сервера), потому что Ваши frontends завершают соединение TCP, и брандмауэр, промежуточный только, видит симплексный трафик (только входящие пакеты). Ваш маршрутизатор направит исходящие пакеты непосредственно назад к маршрутизаторам ISP. Это особенно хорошо для Трафика HTTP, потому что запросы имеют тенденцию быть меньшими, чем ответы, иногда значительно так. Только быть ясным: это не OpenBSD определенная вещь и широко используется в высоко переданных веб-сайтах.
Глюки:
Эта стратегия более эффективна, но более тверда установить, потому что она зависит больше от специфических особенностей маршрутизаторов, которые Вы имеете. Идея состоит в том, чтобы обойти брандмауэр выше и иметь маршрутизаторы, делают всю работу, которую делали брандмауэры.
Вам будут нужны маршрутизаторы, которые поддерживают L3/L4 ACLs на порт, BGP и ECMP и Основанную на политике маршрутизацию (PBR). Только высокопроизводительные маршрутизаторы поддерживают эти функции, и у них часто есть дополнительные лицензионные сборы для использования BGP. Это обычно еще более дешево, чем аппаратные подсистемы балансировки нагрузки и также намного легче масштабироваться. Хорошая вещь об этих высокопроизводительных маршрутизаторах состоит в том, что они имеют тенденцию быть частотой строчной развертки (например, они могут всегда истратить ссылку, даже на 10GbE интерфейсы, потому что все решения они делают, сделаны в аппаратных средствах ASICs).
На портах, на которых у Вас есть свои восходящие каналы ISP, примените ACL, который раньше был на брандмауэре (например, "только позволяют 80/tcp и 443/tcp, идущий в этот конкретный IP-адрес"). Затем имейте каждый из своих frontends, поддерживают сеанс BGP с Вашим маршрутизатором. Можно использовать превосходный OpenBGPD (если frontends находятся на OpenBSD), или Quagga. Ваш маршрутизатор будет ECMP трафик к frontends, которые здоровы (потому что они поддерживают свои сеансы BGP). Маршрутизатор также направит трафик, соответственно использующий PBR.
pfsync
. pfsync
будет обычно дважды скорость передачи пакетов на своих брандмауэрах.pfsync
.relayd
конфигурацияСм. также ПРАКТИЧЕСКОЕ РУКОВОДСТВО в https://calomel.org/relayd.html
vip="1.2.3.4" # Your public IP address # (you can have more than one, but don't need to) fe1="10.1.2.101" fe2="10.1.2.102" fe3="10.1.2.103" fe4="10.1.2.104" # You can have any number of frontends. int_if="em0" table <fe> { $fe1 retry 2, $fe2 retry 2, $fe3 retry 2, $fe4 retry 2 } table <fallback> { 127.0.0.1 } redirect webtraffic { listen on $vip port 80 session timeout 60 route to <fe> check http "/healthcheck.html" digest "(the sha1sum of healthcheck.html)" interface $int_if }