Ubuntu Enterprise Cloud - отключение NC и синхронизация времени

У меня проблемы с моей облачной установкой.

Я установил все с компакт-диска Ubuntu Server 11.04, затем обновил систему до последней версии (apt-get update && apt-get dist-upgrade), установил NTP, правильно настроил его и загрузил все. Некоторое время облако работает нормально, но затем контроллер облака / кластер перестанет общаться с одним из контроллеров узла!

Одним из симптомов является euca-describe-availability-zones verbose внезапно начинает показывать меньше ресурсов, чем соответствующие (и начальные) значения.

Если я смотрю на cc.log, это показывает:

[Mon Sep 19 19:09:07 2011][002531][EUCADEBUG ] DEBUG: requested URI http://10.20.200.10:8775/axis2/services/EucalyptusNC
[Mon Sep 19 19:09:07 2011][002531][EUCADEBUG ]  ncClientCall(ncDescribeResource): ppid=13403 client calling 'ncDescribeResource'
[Mon Sep 19 19:09:07 2011][002531][EUCAERROR ] ERROR: DescribeResource() could not be invoked (check NC host, port, and credentials)
[Mon Sep 19 19:09:07 2011][002531][EUCADEBUG ]  ncClientCall(ncDescribeResource): ppid=13403 done calling 'ncDescribeResource' with exit code '1'

Затем в соответствующем узле контроллера, axis2c.log, Я вижу это:

[Mon Sep 19 19:10:58 2011] [error] rampart_timestamp_token.c(179) [rampart]Timestamp not valid: Created time is not valid
[Mon Sep 19 19:10:58 2011] [error] rampart_sec_header_processor.c(612) [rampart]Timestamp is not valid
[Mon Sep 19 19:10:58 2011] [error] rampart_sec_header_processor.c(1911) [rampart]Timestamp processing failed
[Mon Sep 19 19:10:58 2011] [error] rampart_in_handler.c(143) [rampart][rampart_in_handler] Security Header processing failed.
[Mon Sep 19 19:10:58 2011] [error] phase.c(233) Handler RampartInHandler invoke failed within phase Security
[Mon Sep 19 19:10:58 2011] [error] engine.c(696) Invoking phase Security failed
[Mon Sep 19 19:10:58 2011] [error] engine.c(279) Invoking operation specific phases failed for operation ncDescribeResource
[Mon Sep 19 19:10:58 2011] [error] rampart_engine.c(159) [rampart][rampart_engine] Cannot get saved rampart_context
[Mon Sep 19 19:10:58 2011] [error] rampart_out_handler.c(136) [rampart][rampart_out_handler] ramaprt_context creation failed.
[Mon Sep 19 19:10:58 2011] [error] phase.c(233) Handler RampartOutHandler invoke failed within phase MessageOut
[Mon Sep 19 19:10:58 2011] [error] engine.c(696) Invoking phase MessageOut failed

Итак: есть проблема синхронизации времени.

Однако NTP установлен и правильно настроен.

Одна вещь, которую я заметил, выпустив много ntpq -npявляется то, что ЧПУ перестает работать после положительного смещения по времени. Если смещение остается отрицательным, все работает нормально. Смещения очень малы (около 5 мс, абсолютный максимум, который я мог видеть, составляет 10 мс).

Погуглив, я нашел этот валовый код: http://wso2.org/project/wsf/php/1.1.0/docs/code-coverage/rampartc/src/util/.libs/rampart_timestamp_token.c.gcov.html

/*Check whether created is less than current time or not*/
  current_val = rampart_generate_time(env, 0);
  validity = rampart_compare_date_time(env, current_val, created_val);
  if (validity == AXIS2_SUCCESS)
  {
      AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][ts]Timestamp not valid: Created time is not valid");
              AXIS2_FREE(env->allocator, current_val);
              current_val = NULL;
      return AXIS2_FAILURE;
  }

Как мы видим, он, по-видимому, допускает отклонения во времени в одном смысле, но не в другом.

Я что-то пропустил? Я единственный сталкиваюсь с этой проблемой? Разве не глупо проверять временные метки с точностью до миллисекунды и разрешать только отрицательные отклонения?!

Как люди справляются с этой проблемой? Что я могу сделать, чтобы сохранить мое облако живым?

Я подумал о некоторых решениях:

  1. Патч бампер, чтобы просто удалить проверку метки времени
  2. Патч вал, чтобы учесть и положительные отклонения
  3. Найдите способ сделать ntp или же ntpdate отрегулируйте время до некоторого определенного смещения позади эталонного времени сервера
  4. Напишите мой собственный инструмент синхронизации времени

Как вы думаете?

РЕДАКТИРОВАТЬ: похоже, можно отключить Rampart в конфигурации Axis2, но я не могу понять, как это сделать!

РЕДАКТИРОВАТЬ 2: Версия Rampart, доступная в репозиториях Ubuntu, является 1.3.0, которая относится к 2007 или 2008 году... последняя выпущенная версия похожа на 1.6.0, начиная с июня 2011 года. Очевидно, что эта последняя версия допускает пакеты "из будущего ". Я бы очень хотел найти эту последнюю версию из PPA!

РЕДАКТИРОВАТЬ 3: Я нашел некоторые параметры, чтобы изменить поведение Rampart 1.3.0: TimeToLive, ClockSkewBuffer и PrecisionInMilliseconds. Я добавил их (360, 60 и false соответственно) в EucalyptusNC.xml и EucalyptusCC.xml, и все становится лучше. Иногда я все еще вижу сообщения об ошибках временной метки в журналах, но сейчас они очень редки. Я также отключил NTP на NC и создал скрипт cron (который запускается каждый час) для синхронизации времени (ntpdate -b) с CC.

РЕДАКТИРОВАТЬ 4: Видимо, это ошибка в упаковке эвкалипта в Ubuntu. Я подал ошибку на Launchpad, следуя рекомендациям людей из #eucalyptus на Freenode: https://bugs.launchpad.net/ubuntu/+source/eucalyptus/+bug/854946

2 ответа

Решение

Насколько я понимаю, версия rampartc - 1.3.0, а текущая версия axis2c - 1.6.0. Так что это текущая версия.

Мы не видели этой проблемы в синхронизации: если время не превышает 5 минут, оно обычно работает.

Вы столкнулись с ключевой проблемой, связанной с мягкой виртуализацией в целом и с расширением облачной виртуализации, часы не основаны на аппаратных часах, и они будут зависеть от общей деловой активности базовой операционной системы хоста. Иногда физические часы и виртуальные часы синхронизируются, вызывая скачок часов, когда это происходит. Есть много приложений, где этот скачок часов может повлиять на производительность приложения. Там, где вам нужны действительно высокоточные часы для целей синхронизации или аудита, вам может потребоваться перейти на физический хостинг, а не виртуальный хостинг в Интернете.

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