Аварийный редис с консул DNS - PullRequest
0 голосов
/ 24 апреля 2019

Как Консул разрешает новый IP-адрес мастера Redis после того, как старый мастер Redis будет удален?Например: я сделал while true; do dig redis.service.google.consul +short; sleep 2; done ответ:

192.168.248.43
192.168.248.41
192.168.248.42

192.168.248.41
192.168.248.42
192.168.248.43

...

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

Вот мой конфиг службы консула в 192.168.248.41

...
"services": [
        {
            "id": "redis01-xxx",
            "name": "redis",
            "tags": ["staging"],
            "address": "192.168.248.41",
            "port": 6379
        }
    ]
...

Вот мой конфиг конфиг службы в 192.168.248.42

...
"services": [
        {
            "id": "redis01-xxx",
            "name": "redis",
            "tags": ["staging"],
            "address": "192.168.248.42",
            "port": 6379
        }
    ]
...

И то же самое с 192.168.248.43.

Мои ожидания похожи на это видео https://www.youtube.com/watch?v=VHpZ0o8P-Ts

когдая копаю, консул разрешит только один IP-адрес (мастер).Когда мастер выключен и Redis Sentinel выбирает нового мастера.Консул разрешит новый IP-адрес Redis Master.

Я очень новичок в Консуле.Итак, я очень признателен, если кто-то может привести краткий пример и возможность предложения консула, чтобы я мог поймать его быстрее.

1 Ответ

1 голос
/ 25 апреля 2019

Когда вы регистрируете несколько служб с одинаковым "name", они будут отображаться под <name>.service.consul (если, конечно, они здоровы). В вашем случае вы не определили никаких проверок работоспособности для ваших redis сервисов, поэтому вы видите все сервисные IP-адреса в своем ответе на DNS-запрос.

В случае использования, когда вам нужен только IP-адрес мастера Redis, я бы порекомендовал зарегистрировать службу с проверкой состояния . Я не знаю, как можно запросить Redis, чтобы узнать, является ли узел главным. Но вы можете использовать для примера проверку скрипта , где ваш скрипт вернул бы 0, если текущий узел Redis был выбран мастером дозором Redis. Consul автоматически распознает этот экземпляр службы как исправный, и вы увидите только его IP в запросе dig redis.service.consul к интерфейсу DNS Consul.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...