Оба сервера, работающие keepalived, становятся ведущим устройством

AFAIK эта политика, устанавливающая полностью, отключает Windows Installer. Собственные обновления Microsoft, которые основаны на MSI, даже не установят, когда эта установка будет настроена для "Всегда" (см. http://support.microsoft.com/kb/278295).

Я выключил бы установку временно, выполнил бы установку и затем снова включил бы ее.

2
задан 27 January 2011 в 17:30
2 ответа

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

Согласно RFC, когда приоритеты равны на обоих узлах;

  Если Приоритет в РЕКЛАМЕ равен локальному
 Приоритет и основной IP-адрес отправителя больше
 чем локальный первичный IP-адрес, тогда:

 o Отменить Adver_Timer
 o Установите Master_Down_Timer на Master_Down_Interval
 o Переход в состояние {Backup}

Итак, тот, у кого самый большой IP-адрес, выиграет.

В keepalived способ, которым это делается, в основном неправильный. При этом сравнении порядок байтов не учитывается должным образом.

Предположим, у нас есть два маршрутизатора: (A) 10.1.1.200 и (B) 10.1.1.201.

Код должен выполнить следующее сравнение .

На A:

if (10.1.1.201 > 10.1.1.200) // True
   be_backup();

На B:

if (10.1.1.200 > 10.1.1.201) // False
  be_master();

Однако, поскольку порядок байтов не обрабатывается неправильно, вместо этого выполняется следующее сравнение.

На A:

if (10.1.1.201 > 200.1.1.10) // False
  be_master();

На B:

if (10.1.1.200 > 201.1.1.10) // False
  be_master();

Этот патч должен работать , но я переделал его из своего исходного патча и не тестировал . Даже не проверял компилирует! Так что никаких возвратов!

--- vrrp/vrrp.c.old 2013-10-13 17:39:29.421000176 +0100
+++ vrrp/vrrp.c 2013-10-13 18:07:57.360000966 +0100
@@ -923,7 +923,7 @@
    } else if (vrrp->family == AF_INET) {
        if (hd->priority > vrrp->effective_priority ||
            (hd->priority == vrrp->effective_priority &&
-            ntohl(saddr) > ntohl(VRRP_PKT_SADDR(vrrp)))) {
+            ntohl(saddr) > VRRP_PKT_SADDR(vrrp))) {
            log_message(LOG_INFO, "VRRP_Instance(%s) Received higher prio advert"
                        , vrrp->iname);
            if (proto == IPPROTO_IPSEC_AH) {
3
ответ дан 3 December 2019 в 11:07

Теги

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