Как интегрировать инструмент визуализации Graphexp с Neptune из экземпляра EC2 в том же VPC, что и Neptune - PullRequest
2 голосов
/ 02 апреля 2019

Я настроил кластер базы данных AWS Neptune с одним основным и двумя узлами реплики в трех частных подсетях, каждая в трех зонах доступности в пределах одного региона. Я также создал соответствующие общедоступные подсети, в которых экземпляры EC2 будут иметь приложение визуализатора графа db, например https://github.com/bricaud/graphexp или https://github.com/erandal/graphexp.. Я использую более позднюю версию (erandal) из-за более привлекательного пользовательского интерфейса. Он также развернут на веб-сервере apache httpd.

Частные подсети имеют доступ к Интернету через шлюз NAT, связанный с общедоступными подсетями.

На данный момент у меня есть только один экземпляр EC2, чтобы сначала проверить возможность подключения этих инструментов пользовательского интерфейса к Neptune, прежде чем увеличивать доступность экземпляров с помощью реплик развертывания в разных AZ.

Я пытался подключиться с помощью обоих вариантов, которые предоставляет Graphexp (websockets и http), но безуспешно. Я продолжаю получать сообщение об ошибке - ERR_ADDRESS_UNREACHABLE в консоли инструментов Chrome Dev. Я попытался подключиться как к имени хоста конечной точки кластера Neptune, так и к его внутреннему IP-адресу и т. Д. Интересно то, что я могу успешно вызывать конечную точку gremlin Нептуна из оболочки экземпляра EC2 с помощью cURL. Почему это веб-приложение не работает?

1 Ответ

0 голосов
/ 17 апреля 2019

Я использовал GraphExp без проблем с Нептуном.Основная особенность установки заключается в том, что вызовы базы данных выполняются через AJAX, что означает, что вам необходимо настроить сетевое подключение (группы безопасности) таким образом, чтобы ваш клиентский экземпляр, на котором запущен браузер, имел доступ для связи с конечной точкой Neptune.,

В вашем случае вы упоминаете, что вы настроили свои SG таким образом, чтобы ваш экземпляр EC2 мог успешно выполнять запросы CURL к БД.После того, как вы разместили GraphExp, как вы открывали страницу в браузере?Вы сделали конечную точку graphexp доступной вне вашего VPC и подключились к ней напрямую из какой-то другой сети?Если да, то ваш клиентский экземпляр (тот, у которого открыта страница браузера) должен иметь возможность общаться с конечной точкой БД.Попробуйте выполнить CURL из этого экземпляра в конечную точку БД и посмотрите, работает ли он.

Если вы подтвердите, что приведенная выше гипотеза верна, один из способов исправить это - создать ALB, который поддерживается вашими конечными точками (IP-адресами) Neptune DB.А затем присоедините группу безопасности к ALB, которая делает ее доступной с вашего клиентского компьютера.Теперь заставьте GraphExp общаться с конечной точкой ALB вместо фактической конечной точки Нептуна.Я использовал это в своих экспериментах.Небольшой сбой для меня заключался в том, что я не получил работу с websocket.HTTP был достаточно хорош для меня, и я не стал пытаться отлаживать то, что происходило с WS.

Как только вы все заработаете, дайте мне знать, если вам нужно знать другие хаки, чтобы заставить вещи работать лучше.Например, я закончил тем, что отключил некоторый код в GraphExp, который использовался для выполнения сложных запросов на чтение, которые меня не особо интересовали. Это ускорило загрузку приложения для моей демонстрации.

Надеюсь, это поможет.

...