Consul Watch срабатывает на каждом сервере, вызывает несколько HTTP-вызовов - PullRequest
0 голосов
/ 04 октября 2019

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

Проблема, с которой я сталкиваюсь, заключается в том, что когда смена ключа запускает часы, каждый из 3 серверов запускает обработчик. Таким образом, выполняется 3 вызова POST для службы обработчика.
Как сделать так, чтобы вызывалось только одно событие обработчика? Желательно от лидера кластера. Или есть способ включить отслеживание только на конкретном экземпляре сервера?

Альтернатива, о которой я подумал, - это создать обработчик сценария и с помощью проверки сценария проверить, работает ли он на лидере. Если это так, то создайте HTTP-вызов вручную.

{
    "watches": [{
            "type": "keyprefix",
            "prefix": "port-list/",
            "handler_type": "http",
            "http_handler_config": {
                "path": "http://XX.XX.XX.XX:XXXX/alert",
                "method": "POST",
                "header": {
                    "x-foo": ["bar", "baz"]
                },
                "timeout": "10s",
                "tls_skip_verify": false
            }
        }
    ]
}

...