Как получить доступ к внешнему интерфейсу

Как я могу получить доступ к внешнему интерфейсу консула?

Я хочу получить доступ к пользовательскому интерфейсу консула

<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