Я написал клиент-серверное приложение на Java и хочу запустить его на Amazon EC2 Ubuntu instacnes. Клиент работает на экземпляре EC2, а сервер на одном и третьем экземпляре EC2 предназначен для размещения базы данных postgreSQL. У меня есть вопросы по подключению к сети, и я надеюсь, что кто-нибудь сможет помочь. :)
Я знаю, что мне нужно использовать общедоступный DNS для подключения клиента к серверу. Могу я просто использовать socket = new Socket(host, port);
с хостом общедоступный DNS в виде строки или мне нужно использовать что-то вроде InetAddress address = InetAddress.getByName(host);
?
Какие порты мне разрешено использовать? Socket будет прослушивать этот порт.
Нужно ли мне настраивать что-то еще для экземпляра EC2, чтобы получить соединение?
На одном экземпляре EC2 я установлю postgreSQL. Я думаю, что могу установить его, как с обычным Ubuntu. Могу ли я затем просто подключиться к базе данных, используя общедоступный DNS из экземпляра EC2 и порт, который я установил в postgreSQL, или мне нужно создать другие настройки?
В общем, лучше избегать такого рода множественных вопросов. Трудно дать однозначный ответ на четыре вопроса в одном, особенно если области знаний не полностью совпадают. Тем не менее, лучшее усилие:
Установление соединений сокетов TCP внутри EC2 происходит так же, как и за его пределами. Все, что вы делаете в обычных сетях TCP / IP, вы делаете в ETC.
Единственная разница вне вашего кода, и это факт, что в регионе EC2 имена хостов для других узлов в этом регионе разрешаются как внутренние IP-адреса, а за пределами этого региона они разрешаются как общедоступные IP-адреса.
Обычно это именно то, что вы хотите, чтобы происходило автоматически, и вам обычно не нужно ничего менять.
Вы можете использовать любой порт, который вам нравится, если это разрешено в ваших группах безопасности. EC2 здесь ничем не отличается. Применяются обычные правила, например в большинстве систем unix / linux порты 1024 и ниже зарезервированы для root.
Экземпляры EC2-classic всегда могут подключаться к Интернету для исходящих подключений.
Чтобы подключаться друг к другу и получать входящие соединения из более широкого Интернета, вы должны добавить настройки группы безопасности, которые позволяют другим группам безопасности и / или IP-адресам подключаться. Видеть документация EC2 по группам безопасности.
Для экземпляров VPC вы настраиваете группы безопасности VPC, а также у вас есть правила маршрутизации подсети. Подробнее см. документация по VPC. EC2-classic все чаще устаревает в пользу VPC, поэтому, возможно, стоит начать с VPC с одной подсетью и общедоступными IP-адресами по умолчанию вместо того, чтобы начинать с EC2 classic.
Используйте имя хоста (да, «общедоступный DNS»), а не IP-адрес, для подключения к экземпляру, на котором запущен PostgreSQL. Он будет преобразован во внутренний IP-адрес при подключении из другого экземпляра EC2 в том же регионе, что вы и хотите, чтобы ваш трафик не учитывался как Интернет-трафик.
Вам нужно будет настроить группу безопасности для экземпляра, чтобы разрешить входящие соединения через порт. Если в ОС хоста есть брандмауэр, вам также необходимо разрешить соединения через него. Наконец, вам нужно установить PostgreSQL listen_addresses
поэтому он фактически принимает соединения с нелокальных адресов.
Настоятельно советую изучить некоторые EC2 учебник и документация материал, прежде чем пытаться это сделать. Поиграйте с некоторыми микро-экземплярами и привыкните к работе с группами безопасности, разделением общедоступного / частного DNS и т. Д.