Назад | Перейти на главную страницу

Подключение с помощью Java к инстансам Amazon EC2

Я написал клиент-серверное приложение на Java и хочу запустить его на Amazon EC2 Ubuntu instacnes. Клиент работает на экземпляре EC2, а сервер на одном и третьем экземпляре EC2 предназначен для размещения базы данных postgreSQL. У меня есть вопросы по подключению к сети, и я надеюсь, что кто-нибудь сможет помочь. :)

  1. Я знаю, что мне нужно использовать общедоступный DNS для подключения клиента к серверу. Могу я просто использовать socket = new Socket(host, port); с хостом общедоступный DNS в виде строки или мне нужно использовать что-то вроде InetAddress address = InetAddress.getByName(host);?

  2. Какие порты мне разрешено использовать? Socket будет прослушивать этот порт.

  3. Нужно ли мне настраивать что-то еще для экземпляра EC2, чтобы получить соединение?

  4. На одном экземпляре EC2 я установлю postgreSQL. Я думаю, что могу установить его, как с обычным Ubuntu. Могу ли я затем просто подключиться к базе данных, используя общедоступный DNS из экземпляра EC2 и порт, который я установил в postgreSQL, или мне нужно создать другие настройки?

В общем, лучше избегать такого рода множественных вопросов. Трудно дать однозначный ответ на четыре вопроса в одном, особенно если области знаний не полностью совпадают. Тем не менее, лучшее усилие:

  1. Установление соединений сокетов TCP внутри EC2 происходит так же, как и за его пределами. Все, что вы делаете в обычных сетях TCP / IP, вы делаете в ETC.

    Единственная разница вне вашего кода, и это факт, что в регионе EC2 имена хостов для других узлов в этом регионе разрешаются как внутренние IP-адреса, а за пределами этого региона они разрешаются как общедоступные IP-адреса.

    Обычно это именно то, что вы хотите, чтобы происходило автоматически, и вам обычно не нужно ничего менять.

  2. Вы можете использовать любой порт, который вам нравится, если это разрешено в ваших группах безопасности. EC2 здесь ничем не отличается. Применяются обычные правила, например в большинстве систем unix / linux порты 1024 и ниже зарезервированы для root.

  3. Экземпляры EC2-classic всегда могут подключаться к Интернету для исходящих подключений.

    Чтобы подключаться друг к другу и получать входящие соединения из более широкого Интернета, вы должны добавить настройки группы безопасности, которые позволяют другим группам безопасности и / или IP-адресам подключаться. Видеть документация EC2 по группам безопасности.

    Для экземпляров VPC вы настраиваете группы безопасности VPC, а также у вас есть правила маршрутизации подсети. Подробнее см. документация по VPC. EC2-classic все чаще устаревает в пользу VPC, поэтому, возможно, стоит начать с VPC с одной подсетью и общедоступными IP-адресами по умолчанию вместо того, чтобы начинать с EC2 classic.

  4. Используйте имя хоста (да, «общедоступный DNS»), а не IP-адрес, для подключения к экземпляру, на котором запущен PostgreSQL. Он будет преобразован во внутренний IP-адрес при подключении из другого экземпляра EC2 в том же регионе, что вы и хотите, чтобы ваш трафик не учитывался как Интернет-трафик.

    Вам нужно будет настроить группу безопасности для экземпляра, чтобы разрешить входящие соединения через порт. Если в ОС хоста есть брандмауэр, вам также необходимо разрешить соединения через него. Наконец, вам нужно установить PostgreSQL listen_addresses поэтому он фактически принимает соединения с нелокальных адресов.

Настоятельно советую изучить некоторые EC2 учебник и документация материал, прежде чем пытаться это сделать. Поиграйте с некоторыми микро-экземплярами и привыкните к работе с группами безопасности, разделением общедоступного / частного DNS и т. Д.