Получение «FAILED» при подключении к PCF Dev с помощью CF CLI

Я запускаю pcf dev 0.15.0 на CentOS x64 7.2 с Vagrant 1.8.1 и VirtualBox 5.0.

Когда я делаю vagrant up, мне кажется (мне), что все загружается хорошо (хотя требуется несколько минут, чтобы получить от 0 до 48 запущенных служб)

PCF Dev has reserved 32 GB out of 46 GB total system memory.
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'pcfdev/pcfdev' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: Waiting for services to start...
==> default: 0 out of 48 running
==> default: 0 out of 48 running
==> default: 0 out of 48 running
==> default: 0 out of 48 running
==> default: 0 out of 48 running
==> default: 37 out of 48 running
==> default: 48 out of 48 running
==> default: PCF Dev is now running.
==> default: To begin using PCF Dev, please run:
==> default:    cf login -a api.local.pcfdev.io --skip-ssl-validation
==> default: Email: admin
==> default: Password: admin

Я запускаю это без изменений, единственное изменение заключается в том, что я установил VM_MEMORY, потому что хочу использовать больше памяти (вы можете увидеть результат в первой строке файла журнала)

Когда я пытаюсь войти в систему с помощью cf login -a api.local.pcfdev.io --skip-ssl-validation -v, это не может быть разрешено, поэтому я использую IP-адрес, который ifconfig сообщает мне после того, как я vagrant ssh в поле:

eth0      Link encap:Ethernet  HWaddr 08:00:27:6c:38:a8
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe6c:38a8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:823 errors:0 dropped:0 overruns:0 frame:0
          TX packets:669 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:82923 (82.9 KB)  TX bytes:83850 (83.8 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:02:34:18
          inet addr:192.168.11.11  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe02:3418/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2955 (2.9 KB)  TX bytes:4782 (4.7 KB)

Вот результат, когда я использую 192.168.11.11 при соединении с cf:

API endpoint: 192.168.11.11

REQUEST: [2016-06-10T10:24:37+02:00]
GET /v2/info HTTP/1.1
Host: 192.168.11.11
Accept: application/json
Content-Type: application/json
User-Agent: go-cli 6.18.1+a1103f0 / linux



RESPONSE: [2016-06-10T10:24:37+02:00]
HTTP/1.1 404 Not Found
Content-Length: 65
Content-Type: text/plain; charset=utf-8
Date: Fri, 10 Jun 2016 08:24:37 GMT
X-Cf-Routererror: unknown_route
X-Content-Type-Options: nosniff
X-Vcap-Request-Id: ba181cbd-aaf3-43cf-4169-e2d7e42d19a5

404 Not Found: Requested route ('192.168.11.11') does not exist.


REQUEST: [2016-06-10T10:24:37+02:00]
GET /v2/info HTTP/1.1
Host: 192.168.11.11
Accept: application/json
Content-Type: application/json
User-Agent: go-cli 6.18.1+a1103f0 / linux



RESPONSE: [2016-06-10T10:24:37+02:00]
HTTP/1.1 404 Not Found
Content-Length: 65
Content-Type: text/plain; charset=utf-8
Date: Fri, 10 Jun 2016 08:24:37 GMT
X-Cf-Routererror: unknown_route
X-Content-Type-Options: nosniff
X-Vcap-Request-Id: 69d68148-17ca-4434-4562-4a6fd90d7984

404 Not Found: Requested route ('192.168.11.11') does not exist.

FAILED
Server error, status code: 404, error code: 0, message:

Похоже, что у других тоже есть подобные проблемы в Windows: https://github.com/pivotal-cf/pcfdev/issues/68


person Marged    schedule 10.06.2016    source источник


Ответы (1)


То, что вы пытаетесь сделать, не сработает, потому что IP-адрес не является непосредственно IP-адресом сервера API, это IP-адрес маршрутизатора, который будет смотреть на запрошенный хост и определять, куда проксировать запрос (например, система сообщает это для прокси-запросов для api.local.pcfdev.io к API облачного контроллера, работающему внутри вашего блока PCF Dev.

api.local.pcfdev.io должно разрешиться в 192.168.11.11. Подойдет любой адрес *.local.pcfdev.io, это глобально настроенный DNS для удобства людей, использующих PCF Dev. Вам даже не нужно устанавливать PCF Dev на свой компьютер, чтобы это работало, например. на моей машине:

$ nslookup foo.local.pcfdev.io
Server:     208.69.43.23
Address:    208.69.43.23#53

Non-authoritative answer:
Name:   foo.local.pcfdev.io
Address: 192.168.11.11

Если есть какое-то ограничение, не позволяющее вашей машине разрешать адреса, зарегистрированные в мире, вам может потребоваться научить локальную машину правильному разрешению DNS. Один из вариантов — настроить ваш компьютер для разрешения этого домена с подстановочными знаками: https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain

Другой вариант — просто определить разрешения DNS для конечного списка системных компонентов в файле /etc/hosts. Я не уверен на 100%, каким будет полный список, но я думаю, что это, вероятно, охватит его:

  • blobstore.local.pcfdev.io
  • uaa.local.pcfdev.io
  • login.local.pcfdev.io
  • api.local.pcfdev.io
  • doppler.local.pcfdev.io
  • loggregator.local.pcfdev.io

В дополнение к системным компонентам вам необходимо убедиться, что у вас настроен DNS для каждого приложения, которое вы отправляете. Я считаю, что по умолчанию ваши приложения будут доступны через some-app-name.local.pcfdev.io, который в настоящее время у вас не работает. Здесь вы можете либо настроить дополнительные записи /etc/hosts для каждого приложения, которое вы отправляете, либо выбрать другой домен приложений с подстановочными знаками, который ваша машина может преобразовать в 192.168.11.11 (например, попробуйте 192.168.11.11.xip.io, хотя я подозреваю, что вашей машине тоже не понравится xip.io) . Подробнее о том, как указать PCF Dev создать новый домен для приложений, можно узнать здесь: https://docs.cloudfoundry.org/adminguide/manage-domains-routes.html. Таким образом, в этом случае ваше приложение будет доступно по адресу some-app-name.192.168.11.11.xip.io.

Тем не менее, *.local.pcfdev.io DNS зарегистрирован на общедоступных DNS-серверах, поэтому проще всего будет просто выяснить, как получить это разрешение на вашем компьютере.

person Amit Kumar Gupta    schedule 10.06.2016
comment
Спасибо, я провел быстрый тест, сопоставив api.local.pcfdev.io с этим IP-адресом, манипулируя файлом локальных хостов. Каково ваше предложение ? Однажды я видел документ, в котором показано, как манипулировать DNS и сопоставлять *.local.pcfdev.io с этим IP-адресом. Это путь? - person Marged; 10.06.2016
comment
Добавил несколько вариантов в мой ответ. - person Amit Kumar Gupta; 10.06.2016
comment
Вы правы, мои проблемы вызваны DNS. Я все еще борюсь с dnsmasq, но это уже другая история. - person Marged; 13.06.2016