Доступ к консулу с удаленного доступа через DNS
Я установил консул на EC2 AWS.
у меня есть 3 сервера для консула = 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
-----------------------------
2 ответа
Вы можете попробовать так:
проверьте серверы имен на вашем клиентском компьютере (например: cat /etc/resolv.conf - это зависит от конфигурации вашего компьютера)
изменить конфигурацию серверов consul на:
{ "начальная загрузка": ложь, "сервер": правда, "датацентр": "abc", "advertise_addr": "11.XX.XX.1", "data_dir": "/var/consul", "log_level": "INFO", "enable_syslog": правда, "адреса": { "http": "0.0.0.0" }, "start_join": ["11.XX.XX.2", "11.XX.XX.3"], "рекурсоры": ["xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx"], "порты": { "днс": 53 } }
где рекурсорами являются IP-адреса DNS-серверов из пункта 1.
перезагрузите или перезапустите консул на всех серверах консула - теперь консул прослушивает порт 53 как DNS-сервер
Измените серверы имен на вашем клиентском компьютере, чтобы они указывали IP-адреса серверов. Убедитесь, что ваш клиентский компьютер использует новые адреса (вы можете просто перезагрузить клиентский компьютер)
Теперь на клиентской машине вы можете использовать все доменные имена, в том числе консул, например: dig web.service.consul dig google.com
Для того же поведения на серверах консула вы должны также изменить имена серверов на IP-адреса консула.
Я не специалист по консулам, но я понимаю, что вы используете TCP-порт 8600. Таким образом, не могли бы вы подтвердить, что вы проверили, что порт 8600 открыт в настройках правил безопасности AWS?
Не работает только консул или любой другой протокол, т. Е. Ssh.