J'ai parcouru Internet à la recherche de conseils sur la bonne façon de déployer spring-cloud-netflix eureka server à aws. Nous avons beaucoup utilisé le docker pour les microservices en utilisant à la fois spring-cloud et nodejs, donc j'ai essayé de déployer mon appli spring-boot spring-cloud eurecca à ECS. Il y a très peu d'informations dans la documentation de Spring-Cloud, mais j'ai trouvé quelques informations assez utiles ici: https://www.slideshare.net/ToddMiller34/spring-cloud-into-production. Sur cette base, j'ai actuellement les suivantes:spring-cloud-netflix eureka aws déploiement
standard printemps-nuage-démarreur eureka-serveur (printemps-nuage Camden.SR5, printemps-démarrage 1.5.1) avec
@Bean
@Autowired
@Profile("aws")
public EurekaInstanceConfigBean eurekaInstanceConfigBean(InetUtils inetUtils) {
EurekaInstanceConfigBean config = new EurekaInstanceConfigBean(inetUtils);
AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
config.setHostname(info.get(AmazonInfo.MetaDataKey.publicHostname));
config.setIpAddress(info.get(AmazonInfo.MetaDataKey.publicIpv4));
config.setDataCenterInfo(info);
return config;
}
pièces pertinentes configuration de repo config nuage:
eureka:
instance:
non-secure-port: ${server.port}
environment: test
client:
eurekaServerDNSName: test.mydomain.com
datacenter: cloud
client:
region: us-west-2
registerWithEureka: true
fetchRegistry: true
eurekaServerURLContext: eureka
eurekaServerPort: 8761
useDnsForFetchingServiceUrls: true
côté: Je suis surpris que eureka.client.region était nécessaire, mais sans elle les dns chercher pour urls de service est allé à txt.us-est-1 ... par défaut .
route53 records txt dans la zone privée organisée:
txt.us-west-2.test.mydomain.com = "us-west-2a.test.mydomain.com" "us-west-2b.test.mydomain.com"
txt.us-west-2a.test.mydomain.com = "ec2-123-456-789-123.us-west-2.compute.amazonaws.com"
txt.us-west-2b.test.mydomain.com = "ec2-987-654-321-123.us-west-2.compute.amazonaws.com"
J'ai eu quelques eureka.server.bindingStrategy réglé sur « route53 », mais cela ne fonctionne pas (me donne une erreur de ne pas être en mesure de trouver un domaine gratuit dans localhost de la ligne 135 de Route53Binder). J'ai reçu les noms d'hôte ec2 - ### des instances de conteneur ec2, et les choses semblent fonctionner, mais je crains fort que ces noms d'hôtes ne changent à chaque redémarrage des instances de conteneur. J'ai lu à propos de la liaison route53, mais cela ne semble pas compatible avec l'extraction des URL de service de DNS et ne semble pas bien supporté par netflix eux-mêmes (j'ai lu les commentaires sur les bogues par les ingénieurs de netflix que le classeur route53 code donné par la communauté, et qu'ils ne l'utilisent pas sur netflix). J'ai également lu sur la liaison EIP, mais je ne suis pas sûr de savoir comment l'utiliser avec ECS. Est-ce que je crée juste autant d'EIP que j'ai des serveurs d'eureka, placez-les dans les dossiers de t53 de route53 et eureka s'associera automatiquement? Tout cela manque cruellement de documentation.
pourriez-vous fournir un peu plus d'informations sur votre conception globale? J'ai un peu de mal à faire fonctionner ma première application Spring Cloud dans ECS.Un exemple de repo git serait très utile ... –