Как получить доступ к внешнему интерфейсу
Как я могу получить доступ к внешнему интерфейсу консула?
Я хочу получить доступ к пользовательскому интерфейсу консула
<ANY_MASTER_OR_SLAVE_NODE_IP>:8500
Я пытаюсь сделать туннель ssh для доступа:
ssh -N -f -L 8500: localhost: 8500 [email protected]
Затем, если я получаю доступ к http://localhost:8500
Он работает, но это не то, что я хочу. Мне нужно получить доступ извне, без туннеля ssh.
Мой файл config.json следующий:
{
"bind_addr":"172.16.8.216",
"server": false,
"datacenter": "nyc2",
"data_dir": "/var/consul",
"ui_dir": "/home/ikerlan/dist",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.16.8.211","172.16.8.212","172.16.8.213"]
}
Любая помощь?
Благодаря
Ответы
Ответ 1
Добавить
{
"client_addr": "0.0.0.0"
}
к вашей конфигурации или добавьте параметр -client 0.0.0.0
в командную строку консула, чтобы сделать ваш веб-интерфейс доступным извне (см. документы для получения дополнительной информации).
Обратите внимание, что это также приведет к тому, что ваш API-интерфейс Consul REST будет доступен извне. В зависимости от вашей среды вам может понадобиться активировать ACL Consul для ограничения доступа.
Ответ 2
В этом случае вы можете использовать socat.
socat -d -d TCP-L: 8500, bind = 172.16.93.128, fork TCP: localhost: 8500 &
где 172.16.93.12 - мой IP.
Ответ 3
Наконец-то я нахожу решение. Добавьте в файл конфигурации адрес привязки, который является IP-адресом машины, и client_addr, который является хостами, которые он слушает. Поэтому я использую 0.0.0.0 для прослушивания всех IP-адресов.
"bind_addr":"<machine-ip>",
"client_addr":"0.0.0.0",
Ответ 4
Я запускаю его как изображение докера, я дал
docker pull consul
docker run -p 8500:8500 consul
и я могу получить доступ к консулу ui на http://<hostname>:8500/ui
Ответ 5
У Консула пока нет практического опыта, но вот несколько советов:
- Запустите
sudo netstat -peanut | grep :8500
и проверьте, привязан ли консул к 0.0.0.0 или явный ip. Должен проверять документы, если это настраивается.
- На каждом node установите Squid, Nginx или любое другое программное обеспечение, которое может выступать в качестве прокси-сервера HTTP
Ответ 6
Невозможно получить пользовательский интерфейс, если нет пользовательского интерфейса)
Classic UI - это несколько стеков рабочего окружения (x-term....), поэтому перед тем, как получить, вам нужно установить его на node
Ответ 7
2 способа
{
"client_addr": "192.0.2.0"
}
или же
{
"addresses": {
"http": "192.0.2.0",
"https": "192.0.2.0"
}
}
Адреса могут быть предпочтительнее, чем 'client_addr', потому что это позволяет вам изменять только подмножество служб.
Чтобы изменить все услуги с 127.0.0.1 на 192.0.2.0
"addresses": {
"http": "192.0.2.0",
"https": "192.0.2.0",
"dns": "192.0.2.0",
"grpc": "192.0.2.0"
}
Вы можете проверить, к какому ip-сервису привязан сервис, введя netstat -plnt
netstat -plnt | grep consul
tcp 0 0 192.168.1.204:8301 0.0.0.0:* LISTEN 27725/consul
tcp 0 0 192.168.1.204:8302 0.0.0.0:* LISTEN 27725/consul
tcp 0 0 127.0.0.1:8500 0.0.0.0:* LISTEN 27725/consul
tcp 0 0 127.0.0.1:8600 0.0.0.0:* LISTEN 27725/consul
tcp 0 0 192.168.1.204:8300 0.0.0.0:* LISTEN 27725/consul