У меня есть установка Graphite на трех экземплярах на EC2:
relay1.graphite.prod.example.ec2
cache3.graphite.prod.example.ec2
cache4.graphite.prod.example.ec2
Реле отлично работает с постоянным хешированием. Проблема в том, что два веб-сервера не взаимодействуют друг с другом, поэтому я вижу показатели только с одного сервера.
Я потратил много времени, глядя на https://answers.launchpad.net/graphite/+question/114206 и я не могу понять, что я неправильно настроил. Я могу запустить wget из cache3 против cache4, получить данные обратно и увидеть их в журналах Apache. Так что я не думаю, что проблема в брандмауэре. Я пробовал включить suppressError = False
в remote_storage.py и включил DEBUG в local_settings.py, но я не вижу ошибок в Firebug.
cache3 - local_settings.py
CLUSTER_SERVERS = [ 'cache4.graphite.prod.example.ec2', 'localhost' ]
cache4 - local_settings.py
CLUSTER_SERVERS = [ 'cache3.graphite.prod.example.ec2', 'localhost' ]
Я также пробовал использовать IP-адреса, но это не повлияло.
Я немного отладил и изменил storage.py
для прямого жесткого кодирования моих удаленных хостов:
STORE = Store(settings.DATA_DIRS, remote_hosts=["cache4.graphite.prod.example.ec2", "127.0.0.1"])
Это сработало. Итак, как-то мой CLUSTER_SERVERS
значение не извлекается из local_settings.py правильно.
Какие-либо предложения?
Оказывается разрешения на local_settings.py
были слишком строгими, и Apache не смог их прочитать:
-rw------- 1 root root 4006 May 4 13:40 local_settings.py
Установка разрешений на 644 (вместо 600) решила проблему.