Кластер высокой доступности [закрыто]

быстрый вопрос о том, как работает кластер высокой доступности. Если я не ошибся, если я установлю 3 сервера высокой доступности, весь трафик будет обрабатываться только на одном сервере, верно? тогда если первый сервер умер, то он перейдет на второй сервер? или у них есть балансировщик нагрузки, который равномерно распределяет рабочую нагрузку по всему серверу?

1
задан 9 September 2019 в 03:36

1 ответ

Введение

Можно установить его способ, которым Вы хотите.

Программное обеспечение HAProxy может использоваться в качестве подсистемы балансировки нагрузки. Можно также использовать ningx. Я предложил бы, чтобы Вы не использовали Apache, чтобы сделать выравнивание нагрузки. Это не хорошо дизайн для такого. Можно также получить предварительно установленную подсистему балансировки нагрузки от большинства облаков.

Подсистемы балансировки нагрузки

Один предел с подсистемой балансировки нагрузки: если та часть аппаратных сбоев, у Вас может быть мощный набор систем позади, это будет бесполезно.

Так в большинстве случаев Вы хотите по крайней мере две подсистемы балансировки нагрузки, если Вы хотите удостовериться, что всегда были доступны.

На моем конце я создаю систему под названием Снимок! Веб-сайты, которые в конечном счете загрузятся, балансируют все его фронтэнды автоматически (т.е. подсистема балансировки нагрузки будет включена.) Это еще не реализовано, но идея состоит в том, что запросы прибывают в любой компьютер и если компьютер будет уже перегружен, то это передаст запрос к другому компьютеру фронтэнда. Огромное преимущество здесь состоит в том, что все фронтэнды должны умереть перед потерей всех сервисов.

Бэкенды

С установкой подсистемы балансировки нагрузки другие компьютеры, те на самом деле выполнение Ваших сервисов, могут затем быть установкой как бэкендами. Одно преимущество здесь состоит в том, что Вы можете получать лучшую безопасность (т.е. только порт 80/443 открытый между передней стороной и бэкендом).

Без любых подсистем балансировки нагрузки сервисы работают на фронтэнде, и это означает все порты, открытые на тех, которые фронтэнд даст хакерам шанс напасть на Вашу систему.

3 Компьютера, никакие Подсистемы балансировки нагрузки, как это даже работает?

Начиная с Ваших веб-сайтов будет иметь один URL, имение 3 компьютеров действительно не помогло бы, если Ваш URL всегда возвращает тот же IP-адрес. Для создания этой работы необходимо установить DNS для возврата тех трех адресов. Это просто, просто введите тот же адрес три раза и измените IP.

Вот пример для 'www' с 6 серверами:

www   60 IN A 10.0.0.1
www   60 IN A 10.0.0.2
www   60 IN A 10.0.0.3
www   60 IN A 10.0.0.4
www   60 IN A 10.0.0.5
www   60 IN A 10.0.0.6

Это собирается использовать дешевый круговой механизм. Это означает, что не собирается проверять, очень ли сервер занят или нет. Это просто отправит следующий IP каждый раз, когда компьютер запрашивает DNS.

Важный факт о них дюйм/с, я поместил 60 как продолжительность кэша. Это более тяжело на DNS, но это означает, что пользователь должен получать новый IP каждую минуту. Это гарантирует, что компьютеры повернуты. Хотя в большинстве случаев браузер, вероятно, сохранит тот же IP-адрес для пути больше чем 1 минутой (на основе моего опыта). Я думаю, что это не браузер, который решает, или он просто кэширует IP в течение времени, Вы используете тот один веб-сайт. Если Вы закрываете окно, они могут сделать новый поиск. В любом случае это дешево и работает хорошо, но если у Вас может быть подсистема балансировки нагрузки, это намного лучше.

Узкие места

Также Вы хотите не упустить узкие места.

Если Ваше приложение использует базу данных MySQL или PostgreSQL, и Вы помещаете 10 компьютеров фронтэнда, но только один компьютер баз данных, это будет Вашим узким местом. Запросы базы данных будут медленными при обслуживании 1 000 запросов на каждых 10 фронтэндах... это - 10 000 хитов к одному компьютеру, выполняющему базу данных, и это - вероятно, самая медленная часть в целом приложении.

Существует два основных разрешения для данных: используйте систему, такую как Cassandra или заставьте Ваши базы данных MySQL/PostgreSQL работать на нескольких машинах (это выполнимо, я еще не попробовал его, но я работаю с компанией, которой распределили PostgreSQL.)

С системой, такой как Cassandra, все данные распределяются среди всех компьютеров, используемых для выполнения базы данных. С системой, такой как MySQL/PostgreSQL, они ломают данные на таблицу в целом. Таким образом, некоторые таблицы могут все еще быть медленными. Однако в более новых версиях у них могут быть намного лучшие решения. Я нахожусь немного позади на распараллеливании SQL.

Существуют другие проблемы в кластере, о котором нужно думать тщательно. Например, при попытке изменить некоторые данные из нескольких компьютеров, Вам, вероятно, нужна блокировка. База данных SQL имеет такой при использовании a BEGIN + INSERT/UPDATE + COMMIT, Вы будете хороши. Иначе Вы, вероятно, испортите свои данные. Решение избежать проблем состоит в том, чтобы использовать кластерную блокировку (Служитель зоопарка предлагает такой). Ваше приложение. блокировки, затем делает транзакцию и наконец разблокировал. Затем Вы введете мир: что, если блокировка испытывает таймаут, прежде чем применяется транзакция SQL. Забавная забавная забава...

0
ответ дан 7 December 2019 в 18:50

Другие вопросы по тегам:

Похожие вопросы: