Назад | Перейти на главную страницу

доступ к консулу удаленно с помощью DNS

Я установил консул на EC2 aws.

У меня есть 3 сервера для consul = 11.XX.XX.1,11.XX.XX.2,11.XX.XX.3.

у меня 1 клиент для консула = 11.XX.XX.4

ниже находится файл конфигурации /etc/consul.d/server/config.json

{
    "bootstrap": false,
    "server": true,
    "datacenter": "abc",
    "advertise_addr": "11.XX.XX.1",
    "data_dir": "/var/consul",
    "log_level": "INFO",
    "enable_syslog": true,
    "addresses": {
    "http": "0.0.0.0"
    },
    "start_join": ["11.XX.XX.2", "11.XX.XX.3"]
}

ниже вывод netstat

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8400          0.0.0.0:*               LISTEN      29720/consul    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1006/sshd       
tcp        0      0 127.0.0.1:8600          0.0.0.0:*               LISTEN      29720/consul    
tcp6       0      0 :::8301                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::8302                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::8500                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::22                   :::*                    LISTEN      1006/sshd       
tcp6       0      0 :::8300                 :::*                    LISTEN      29720/consul 

curl отлично работает с удаленной машины, но копать работает только на локальной машине.

; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> @127.0.0.1 -p 8600 web.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40873
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;web.service.consul.        IN  A

;; ANSWER SECTION:
web.service.consul. 0   IN  A   11.XX.XX.4

;; Query time: 0 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Fri Dec 30 08:21:41 UTC 2016
;; MSG SIZE  rcvd: 52

но с удаленной машины копать не работает, пожалуйста, помогите

dig @11.XX.XX.1 -p 8600 web.service.consul

; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> @11.XX.XX.1 -p 8600 web.service.consul
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
-----------------------------

Вы можете попробовать такой способ:

  1. проверьте серверы имен на вашем клиентском компьютере (например: cat /etc/resolv.conf - это зависит от конфигурации вашего компьютера)

  2. изменить конфигурацию серверов консула на:

    {  
        "bootstrap": false,  
        "server": true,  
        "datacenter": "abc",  
        "advertise_addr": "11.XX.XX.1",  
        "data_dir": "/var/consul",  
        "log_level": "INFO",  
        "enable_syslog": true,  
        "addresses": {  
        "http": "0.0.0.0"  
        },  
        "start_join": ["11.XX.XX.2", "11.XX.XX.3"],  
        "recursors": ["xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx"],  
        "ports": {  
            "dns": 53  
        }  
    }

где рекурсоры - IP-адреса DNS-серверов из пункта 1.

  1. перезагрузите или перезапустите службу консула на всех серверах консула - теперь консул прослушивает порт 53 как сервер DNS

  2. измените серверы имен на вашем клиентском компьютере на IP-адреса консул-серверов. Убедитесь, что ваш клиентский компьютер использует новые адреса (вы можете просто перезапустить клиентский компьютер)

Теперь на клиентской машине вы можете использовать все доменные имена, включая consul, например: dig web.service.consul dig google.com

Для того же поведения на серверах consul вы также должны изменить серверы имен на IP-адреса консулов.

Я не специалист по консулу, но я понимаю, что вы используете TCP-порт 8600. Не могли бы вы подтвердить, что проверили, что порт 8600 открыт в настройках правил безопасности AWS?

Не работает ли только консул или какой-либо другой протокол, то есть ssh.