2015-03-24 1 views
3

У меня есть распределенное приложение, работающее на виртуальных машинах, среди которых у меня есть одна служба, работающая в активном/пассивном режиме. Активная виртуальная машина предоставляет услугу через публичный IP-адрес. В случае сбоя активной виртуальной машины публичный IP-адрес будет перемещен в пассивную виртуальную машину, и пассивная виртуальная машина станет активной и начнет предоставлять услугу.Как следует использовать приложения с использованием активной/пассивной избыточной модели с использованием кубернетов?

Как этот шаблон подходит для контейнерных приложений, управляемых кубернетами?

Если я использую контроллер репликации с репликами = 1, в случае сбоя узла/миньона контроллер репликации перепланирует pod (= VM в моем текущем приложении) в другом миньоне, но это, вероятно, приведет к большому времени простоя по сравнению с мое текущее решение, в котором перемещается только IP-ресуремент.

Если я использую контроллер репликации с replicas = 2, тогда мне нужно будет иметь другую конфигурацию с двумя контейнерами (один с открытым IP-адресом, а другой без), который является анти-шаблоном? Более того, в кубернетах не предусмотрено никакого способа поддерживать виртуальный IP (перемещать струи aroud.)?

ИЛИ следует использовать replicas = 2 и реализовать что-то самостоятельно для управления IP (или, возможно, использовать кардиостимулятор?), Это вызовет еще одну проблему: в моем приложении будут использоваться кузнецы и кардиостимулятор/corosync)

так, как это должно быть сделано?

+0

Есть ли причина, по которой вы не можете постоянно балансировать баланс между двумя активными репликами? Как выглядит процедура перехода на другой ресурс? У вас есть база данных, и если да, потеряете ли вы фиксации, если первичный сбой? –

+0

Активная/пассивная ВМ сама по себе является балансировкой нагрузки в моем приложении. Это единственный компонент, обеспечивающий внешнюю связь. Actaully У меня несколько активных/пассивных пар зависит от требуемой емкости. Каждая пара имеет один открытый IP-адрес. –

+0

Процедура отказоустойчивости в настоящее время реализована с помощью собственной системы восстановления, в основном она контролирует виртуальную машину и выполняет переход на другой ресурс, если атакующая виртуальная машина не выполнена. Я думаю, что кардиостимулятор в качестве управления ресурсами поддерживает этот случай с помощью агента ресурсов IP. Тем не менее, использование кардиостимулятора вместе с Kubernetes, кажется, как-то противоречиво, поскольку оба они обеспечивают управление кластерами. –

ответ

2

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

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

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

+0

Благодарим вас за помощь. Я проверю зонд готовности. Правильно ли я понимаю, что мне нужно настроить этот внешний IP-адрес на один миньон кластера, а затем, если этот миньон завершится неудачно, я потеряю доступ к службе, т. Е. Одну точку отказа здесь. О внешнем балансировщике нагрузки, у меня была бы моя инфраструктура APP независимой, так что это не вариант, не так ли? –

+0

Re: внешний IP-адрес, это зависит от вашей конфигурации развертывания. Например, если вы работаете в GCE, ваш внешний IP-адрес будет сбалансирован по нагрузке на вашем наборе здоровых узлов.Если вы работаете в помещениях и хотите разделить IP-адрес на два узла, вы можете использовать балансировщик нагрузки (например, netscaler) для распространения пакетов на нескольких хостах для повышения надежности. –

Смежные вопросы