Quelle est la meilleure pratique pour la communication entre les instances Amazon EC2?

41

J'ai configuré des instances Amazon EC2 pour un projet à venir. Ce sont toutes des micro-instances fonctionnant sous Ubuntu Server 64bit. Voici ce que j'ai configuré jusqu'à présent:

  • Serveur Web - Apache
  • Serveur de base de données - MySQL
  • Serveur de développement - Apache et MySQL
  • Serveur de fichiers - SVN et Bacula (les sauvegardes sont effectuées dans des compartiments S3)

Actuellement, il n'y a qu'un seul serveur Web, mais il y en aura éventuellement d'autres.

Ma première question est la suivante: quel est le moyen le plus sûr et le plus sûr pour les instances Amazon EC2 de communiquer entre elles? Actuellement, j'utilise SSH, est-ce la meilleure méthode?

Selon Amazon, les instances qui communiquent entre elles en utilisant leurs adresses IP Elastic se verront facturer des frais de transfert de données. Cependant, les instances qui communiquent en utilisant leurs adresses IP privées peuvent le faire gratuitement. Malheureusement, il semble que les IP privées changent si l'instance est arrêtée et redémarrée.

C'est donc ma deuxième question: comment utiliser les adresses IP privées des instances Amazon si elles ne sont pas statiques?

Je sais que les instances ne seront probablement pas arrêtées et démarrées très fréquemment, mais néanmoins, si l'adresse IP se trouve dans divers fichiers de configuration, il serait difficile de toutes les parcourir et de les modifier.

Je suis principalement préoccupé par les serveurs Web, qui devront avoir accès au serveur de base de données et au serveur de fichiers, qui devront avoir accès à toutes les instances lors des sauvegardes.

Remarque: Je n'ai jamais utilisé Bacula auparavant et je ne l'ai pas encore configuré, mais je suppose qu'il faudra les adresses IP des clients pour les sauvegarder.

ks78
la source
2
+1 - J'aimerais les adresses IP privées élastiques. Notez également que je pense que vous ne pouvez pas communiquer entre régions sur des adresses IP privées.
Joel K
Je pense que vous constaterez qu’un seul m1.small va vous donner de bien meilleures performances que plusieurs t1.micro. Ensuite, passez à c1.medium. Ensuite, lancez plusieurs c1.medium ou utilisez un type d'instance encore plus grand. Notez cependant que m1.small et c1.medium ne prennent en charge que les versions 32 bits et non 64 bits.
Eric Hammond

Réponses:

29

Consultez l'article d'Eric Hammond expliquant comment utiliser les adresses IP Elastic, même à partir de EC2. Cette méthode n'entraîne PAS de frais de bande passante car la résolution de l'adresse IP Elastic (par son nom) depuis EC2 renvoie l'adresse IP privée.

http://alestic.com/2009/06/ec2-elastic-ip-internal

Pour plus d'options, j'ai un article examinant quelques alternatives:

http://shlomoswidler.com/2010/06/track-changes-to-your-dynamic-cloud-services-automatically.html

Shlomo Swidler
la source
Merci pour votre réponse. Je pense de plus en plus que le DNS dynamique est la voie à suivre, même si je n’ai jamais installé de DNS auparavant. Connaissez-vous des sites proposant une procédure détaillée expliquant comment procéder?
ks78
6

Déployez votre instance EC2 dans un AWS Virtual Private Cloud (VPC). Lorsque vous configurez votre VPC, vous affectez le CIDR à toutes les instances EC2 du VPC et l'adresse IP interne est statique.

utilisateur188724
la source
C'est de loin la meilleure approche.
ceejayoz
2
  • Méthode de communication la plus sécurisée

SSH est une très bonne méthode pour transférer des données entre différents serveurs, mais si vous recherchez quelque chose comme une connexion permanente (à une base de données par exemple), vous pouvez utiliser tout type de logiciel de tunnelage crypté, tel que stunnel

  • IP privées non statiques

Comme il n’est pas possible d’avoir des IP privées privées statiques, vous pouvez utiliser une sorte de déploiement de serveur automatique pour cela, il existe plusieurs outils tels que mcollective, capistrano ou func qui vous permettront d’enregistrer votre nouvelle instance sur un serveur désigné central et de générer des actions sur plusieurs serveurs. machines basées sur cette

Lynxman
la source
J'avais initialement posté la même question sur StackOverflow. Quelqu'un a suggéré d'utiliser un serveur DNS. Ainsi, si les adresses IP privées changent, cela n'aurait aucune importance, car elles utiliseraient des noms fournis par DNS pour communiquer. Quelle est votre opinion sur cette solution?
ks78
1
Ce n'est pas une mauvaise solution si vous êtes en mesure de maintenir une zone DNS dynamique à jour. Toutefois, étant donné que vous auriez besoin de l'utiliser ainsi qu'un serveur DNS principal pour toutes vos instances, vous obtiendrez également un point de défaillance unique. c'est pourquoi j'ai suggéré plutôt mcollective ou capistrano, ce qui vous donnerait également l'avantage d'exécuter des opérations complexes sur vos nœuds
Lynxman
Merci. Je me demandais simplement quelle serait votre opinion sur cette solution. Je vais regarder dans mcollective et capistrano.
ks78
désolé de faire revivre un ancien thread, mais les adresses IP privées sont-elles toujours non statiques sur ec2? Ce n’est pas ce que j’ai observé lors d’une toute nouvelle configuration ec2: les interfaces réseau restent après l’arrêt des serveurs et les adresses IP privées n’ont pas encore changé. Je semble également être capable de choisir des adresses IP privées secondaires si nécessaire.
icyitscold