Я гуглил весь день и не могу понять. Я пытаюсь настроить многоуровневое приложение в AWS VPC, но я новичок в большой системной сетевой архитектуре. Я собираюсь использовать несколько подсетей для обработки различных частей приложения. Наши серверы приложений должны будут связываться с серверами баз данных в подсети БД, а также с различными другими службами в других подсетях. Я собираюсь использовать CloudFormation, чтобы все это организовать.
Мой вопрос очень простой. Какие имена / IP-адреса я настраиваю для своих приложений, чтобы они могли взаимодействовать с этими другими службами. Моим серверам приложений потребуется URL-адрес для базы данных и всех этих других служб. Кажется, я не могу понять, как назначить имя хоста созданным ресурсам.
Для база данных у вас есть два варианта:
mysql-rds01.abcdefgh.ap-southeast-2.rds.amazonaws.com
- используйте это.ip-172-31-44-105.ap-southeast-2.compute.internal
или лучше создать зону в AWS Route53 и в этой зоне создайте запись вроде db-server
будучи CNAME
указывая на указанное выше имя. Это дает преимущество использования стабильного имени (db-server
), который можно обновить в одном месте (Route53) при изменении IP-адреса экземпляра.Всегда стараюсь использовать RDS если у вас нет очень веской причины, почему бы не использовать RDS и не использовать свой собственный.
Затем для связи между уровнями может быть хорошей идеей использовать Эластичные балансировщики нагрузки (ELB) - они могут быть внутренний, например спрячьте свой внутренний кластер веб-служб за внутренним ELB, а для разговора с веб-службой используйте DNS-имя ELB. Будет что-то вроде internal-blahblah-12345678.ap-southeast-2.elb.amazonaws.com
и снова вы можете дать ему хороший CNAME
в Маршрут53.
Излишне говорить, что всем этим будет управлять ваш CloudFormation шаблоны. В том же шаблоне, который создает ваш хост веб-службы, также создайте его ELB и его записи Route53. Тогда у вас будут все логически связанные ресурсы, созданные за один раз.