AWS Private ,Public ,Elastic IP ve Elastic Load Balancer

AWS ortamından EC2, ELB(Elastic Load Balancer), RDS, MemCache, SQS, S3, ElasticSearch vb servisler kullanıyorsanız IP ve DNS kavramlarının ne anlama geldiğini biliyor olmanız gerekiyor.

Yazımda aşağıdaki sorulara cevap vermeye çalışacağım ?

  1. IP ve DNS nedir ?
  2. Public, Private, Elastic IP nedir ?
  3. Elastic Load Balancer IP ayarları nasıldır ?
  4. RDS ve Memcache neden Endpoint adresleri üzerinden nasıl çalışılır ?

IP: Hizmet aldığınız sunucunun adresi anlamına gelir. DNS: IP adresleri rakamlardan oluştuğu için daha anlaşılır isim karşılıklarına verilen isimlere denir. Bu IP adresleri DNS kayıtları şeklinde Domain Name Sunucularında tutulurlar. DNS sunucunun tutulan bu kayıtlar A, CNAME, MX vb tipte olabilirler.

AWS üzerinde bir EC2 sunucusu açtığımızda Private IP ve Public IP oluşturulur. Private IP dışarıdaki sunuculardan erişemezsiniz. AWS’deki iç ağdan erişebileceğiniz IP’dir. Örneğin bir EC2 makinesi diğer EC2 makinesine web servis hizmeti verecek ise Security Group ayarlarından Private IP vererek sunuculara yetki vermeniz gerekir.

EC2

EC2'lerde Public IP’ler IP Pool’undan alınarak rastgele olarak atanır ve her EC2 reboot işleminden sonra bu IP adresleri değişir. Yani siz Security Group veya DNS A IPv4 adresine bu Public IP sini verirseniz EC2 sunucunuzun reboot’undan sonra bu ayarlarınız işe yaramayacaktır.

Public IP sürekli değiştiği için bulut’ ta değişmeyen bir IP üretme ihtiyacı oluşmaktadır. Elastic IP bu amaç ile üretilir. EC2 yan sekmesinden bir ElasticIP üretip Ec2 sunucunu bu bu IP ekleyebilirsiniz. Bunu yaptığınızda mevcut IP değişerek Elastic IP aynı olacaktır. Bundan sonra sunucunu reboot yapsanız bile Public IP’si güncellenmeyecektir.

Elastic Load Balancing

2nci bir durum EC2 makinesinden LoadBalancer oluşturup bunun arkasına birden fazla instance eklemeniz durumunda LoadBalancer DNS ismini görebilirsiniz. HealtCheck sekmesinden Listener’ kısmında eklediğiniz portları belli zaman aralıkları ile kontrol edebilir. İlgili sunucunun InService veya OutService olduğunu görebilirsiniz.

AWS nin LoadBalancer DNS adresininin IP adresini öğrenmek istediğinizde nslookup DNS adresine yazdığınızda sizin karşınıza bu DNS karşılık gelen IP’leri gösterecektir. Load Balancer bağlı 2 IP miz olduğu için

Bu IP adresleri bizim Instance bağladığımız EC2 instance public IP leri değildir. LoadBalancer önde oluşturduğu IP’lerdir. Bu IPler listener’dan dinledikleri paketleri kendilerine bağlı arka plandaki EC2 instance’larına iletirler.

Peki hangi IP adresinin hangi EC2 instance paket ilettiğini nasıl anlayabiliriz ? Yapmamız gereken tcpdump ile ilgili portları dinleyerek ilgili IP adreslerinden telnet çekerek bu adreslerin hangi LoadBalancer IP adresleri ile bağlı olduğunu görebilirsiniz.

RDS ve MemCache Servisleri

RDS ve Memcache adreslerinde Endpoint adresinden faydalanarak işlemlerinizi gerçekleştirebilirsiniz. Endpoint genelde sunucu sunucu arası iletişimlerde kullanılan bir kavramdır. Webservis, DB servisleri , Memcache servisleri, Queue servisleri için Endpoint kavramını kullanırız.

Girdiğiniz DB ismine göre size bir Endpoint adresi oluşturur. 3306 MySQL , 6379 Redis için Default port’u gösterir.
xxxx.cyozurvuifki.eu-west-1.rds.amazonaws.com:3306 xxxx.cyozurvuifki.eu-west-1.redis.amazonaws.com:6379

Bu kısımda IP yerine DNS ile çalışmamanız gerekir. Çünkü Multi-AZ olan bir RDS, Memcache servisi çöktüğünde DNS => IP yönlendirmesi ile sizi replike RDS yönlendirmeyi otomatik olarak yapar.