J'ai un VPC avec trois sous-réseaux dans différentes zones de disponibilité et un point de terminaison VPC d'interface dans chacun. Le point de terminaison d'un VPC a 4 noms d'hôte DNS par défaut :

  • Un nom d'hôte DNS régional, par exemple vpce-x.ec2.us-east-1.vpce.amazonaws.com.
  • Trois noms d'hôte DNS zonaux spécifiques au point de terminaison, par exemple vpce-x-us-east-1a.ec2.us-east-1.vpce.amazonaws.com.

Si je comprends bien, le nom d'hôte DNS régional sera un point de terminaison arbitraire. Existe-t-il un moyen de configurer un seul nom d'hôte DNS qui résoudra toujours le point de terminaison dans le même sous-réseau, afin de réduire le trafic inter-AZ ? Je ne sais pas si une politique de routage de latence est applicable pour ce cas d'utilisation ou non, ou s'il existe une autre solution. Ou le nom d'hôte DNS régional fera-t-il déjà quelque chose comme ça ?

Le cas d'utilisation ici est une application qui envoie beaucoup de trafic vers un service externe via des points de terminaison d'instance VPC - au point que le transfert de données entraîne des coûts importants. Éviter le trafic inter-AZ pour le point de terminaison VPC réduirait une partie des coûts de transfert de données.

answer

Si vous utilisez le nom DNS zonal, vous parlez à cette zone. De la doc :

Choose a subnet in your VPC to use the interface endpoint. We create an endpoint network interface in the subnet. An endpoint network interface is assigned a private IP address from the IP address range of your subnet, and keeps this IP address until the interface endpoint is deleted. You can specify more than one subnet in different Availability Zones (as supported by the service) to help ensure that your interface endpoint is resilient to Availability Zone failures. In that case, we create an endpoint network interface in each subnet that you specify.

Donc, si vous avez une instance en cours d'exécution, par exemple us-east-1a, dites-lui d'utiliser le point de terminaison east-1a et toutes les communications seront dans l'AZ. Vous devriez pouvoir modifier le nom DNS en utilisant des variables d'environnement dans votre code, des mappages dans vos recherches CloudFormation ou Parameter Store. Gardez à l'esprit que cela ne résistera pas à l'échec.

À moins que vous ne fassiez des choses HPC qui nécessitent une latence extrêmement faible ou que vous transfériez d'énormes quantités de données entre les zones, j'utiliserais simplement le nom régional (par exemple, us-east-1). Je m'attends à ce qu'il utilise quelque chose de sensé.

Vous pourrez peut-être vérifier en faisant quelques -uns host REGIONALDNSet en vérifiant quelle adresse IP il vous renvoie, et en comparant avec le résultat zonal.