Ганглии без многоадресной рассылки
Я запускаю Ganglia 3.1.2 в сети, где нет многоадресной рассылки (и я не могу ее включить). У кого-нибудь есть элегантное решение для правильной работы ганглиев? Я нашел это:
http://code.google.com/p/ganglia-multicast-hack/
но это не очень хорошо масштабируется.
Прямо сейчас у меня есть отдельные строки data_source для каждого хоста в моей сети в моем файле gmetad.conf, но это тоже плохо масштабируется, и я не могу получить точную сводную статистику, потому что она продолжает перезаписывать rdds (хотя статистика хоста работает просто отлично).
Любые указатели будут с благодарностью (или подтверждение того, что я уже нашел лучшее решение).
Спасибо!
4 ответа
После дальнейших исследований я нашел ответ. На своих клиентах я добавил следующее в gmond.conf:
udp_send_channel {
host = monitoring-host
port = 8666
ttl = 1
}
udp_send_channel {
host = monitoring-host-backup
port = 8666
ttl = 1
}
Это отправляет данные через одноадресный UDP на узел мониторинга и резервное копирование каждую 1 секунду.
Затем на хосте мониторинга я добавил это:
udp_recv_channel {
port = 8666
}
Ключ должен избавиться от многоадресной записи, которая есть по умолчанию.
При настройке Ganglia в облаке Amazon EC2 возникла та же проблема с многоадресным режимом, который не позволяет использовать многоадресную передачу в своей сети. Возможное решение - перейти в режим одноадресной передачи, который работает, к счастью.
Чтобы быть очень кратким, ниже приведены простые шаги, чтобы избавиться от многоадресного режима.
- Сделайте один из ваших узлов ведущим демоном gmond (сборщик данных ganglia).
Пример: 10 узлов, на которых работает демон gmond. Выберите любой узел из 10 и сделайте так, чтобы тот Мастер, который будет получать все данные от 10 Узлов, также должен был быть его ведомым.
# Define the cluster.
cluster {
name = "Yellow"
owner = "Your Company"
latlong = "N34.02 W118.45"
url = "http://yourcompany.com/"
}
# Disable multicast and define the host, the yellow master, where nodes in the cluster send data.
udp_send_channel {
# mcast_join = 239.2.11.71 (No need to join as mcast is not being used)
host = master.among10node.com (put the IP/Hostname of server from any 10 nodes to ack as master)
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 239.2.11.71 (Disabled mcast as it is not being used)
port = 8649
# bind = 239.2.11.71 (No need to bind as mcast is not being used)
}
Примечание. Скопируйте одну и ту же конфигурацию на все 10 узлов, на которых работает демон gmond. Сначала перезапустите Мастер, затем все остальные. Надеюсь, что это сработает, и мастер-узел получит все данные из других узлов.
Теперь настройте демон консолидации данных ganglia (gmetad) для использования вашего главного узла в качестве основного источника данных.
Пример:
data_source "Yellow" master.among10node.com
# default port is 8649, define here if you are using non default
Теперь перезапустите демон gmetad и позвольте магии начаться.
Приветствия Мохд Мозаммил Хан
Это работает, но проблема в том, что все узлы окажутся в одном и том же источнике данных по умолчанию, поэтому их информация о кластере будет потеряна, что не очень хорошо для мультикластерных сред.
Я еще не пробовал, но возможный обходной путь для этого - создать UDP-канал для каждого кластера, что не очень хорошо, если у вас их много.
Позднее редактировать:
Моя текущая настройка использует одноадресную передачу на уровне кластера из-за сетевых ограничений, и все данные отправляются на узел из каждого кластера. Затем я связываюсь с каждым из тех, кто использует метад, чтобы получить все данные об этом кластере.
Таким образом, кластеры будут назначены их собственным источникам данных, и их полная информация будет там.
Конфиг будет выглядеть так:
# on each node in the cluster
udp_send_channel {
host = 1.2.3.4 # this is a member of the cluster, not a metad server
port = 8650
}
Тогда на метад:
data_source "My Cluster" 1.2.3.4
Для избыточности вы можете иметь несколько записей udp_send_channel и несколько IP-адресов, перечисленных в data_source. Я лично использую два для каждого кластера.
Для федерации я использую что-то вроде этого:
data_source "My Grid" 1.2.3.5:8651
Это действительно только в том случае, если у вас есть метаданные, прослушивающие порт 8651.
Смотрите также:
https://github.com/ganglia/monitor-core/tree/feature/cloud
Я установил это сегодня и заставил это работать на EC2, который не позволяет многоадресную рассылку.