IT & IoT Security | Cloud | It's all about the life itself

Nothing in life is as important as you think it is, while you are thinking about it.

AWS Elastic Beanstalk ve CloudFront servislerinin yapılandırılması

Merhaba,

İlk bölümde wordpress web uygulamasının yedeğini S3’e almıştık. Aldığımız yedeği yükleyebileceğimiz ortamı oluşturmamız gerekiyor. AWS’de bu ortamı oluşturken birkaç seçeneğiniz mevcut. AWS’yi kullanma biçimizine bağlı olarak seçeneklerin/senaryoların sayıları fazlalaştırılabilir.

Yazının devamını incelemeden önce konu bütünlüğü açısından “Bölüm 1 AWS Backup WordPress to S3isimli yazımı inceleyebilirsiniz.

Bu yazıda incelediğim senaryo şu şekildeydi:

  • Elastic Beanstalk ile web uygulamasının kodlarını ve yaptığım değişiklikleri AWS’ye yükledim .
  • CloudFront konfigürasyonunu yaptım.

Beanstalk ile bu işlemi yaparken arka planda otomatik olarak sanal sunucu instance’ınız açılıyor. Elastic Load Balancer tanımlanıyor. Auto Scaling group tanımlanıyor.

Bu şekilde ilerlemek yerine şunu da tercih edebilirsiniz. Sanal sunucunuzu seçtiğiniz bir image(ubuntu,fedora vb.) ile kurabilirsiniz. Ardından apache vb. ön gereksinimleri kurabilirsiniz. Ardından wordpress uygulamasını kurabilirsiniz. Erişim için gereken security group,access control list bileşenlerini yapılandırabilirsiniz. Ardından auto-scaling ve load balancing seçeneklerini yapılandırabilirsiniz. Bu aşamaya gelene kadar yorulabilirsiniz 🙂 O açından elastic beanstalk vb. bir servis kullanmak oldukça avantajlıdır.

clip_image001

 

Web uygulamanızın sürümünü güncellemekte oldukça kolay hale geliyor. Değişen kodlarınızı elastic beanstalk ile aws’ye yükleyebiliyorsunuz.

clip_image003

Bu şekilde ilerlemek her işlemi tek tek yapmaya göre daha avantajlıdır. Elastic beanstalk web uygulamanızın kaynak kodlarını ilk yükleme sırasında “first release” olarak adlandırıyor. Siz yeni bir sürüm yüklemediğiniz sürece, gelecekte açılacak yeni sanal sunuculara bu sürümü kuracaktır.

Elastic beanstalk; yüklediğiniz ilk sürümü, kurulum sırasında S3 ‘te oluşturduğu bucket içinde depoluyor.

clip_image004

Bu süreçte otomatik olarak işletildiğinden dolayı, bulut servis sağlayıcısı sizi bir adımdan daha kurtarmış oluyor 🙂

clip_image006

Elastic beanstalk yükleme sırasında gerekecek erişim izinlerini; web uygulamanız için gerekecek security group’larını oluşturarak yapılandırıyor. Üstteki resimde de görülen security group’larda yapınız için gereken özel bir erişim varsa yapılandırmanız gerekecektir!

Elastic beanstalk ile auto scaling’inde yapılandırıldığını belirtmiştim. Auto-Scaling’in gözleyeceği policy’leri düzenlemeniz gerekebilir.

clip_image008

Üstteki policy, şartlar sağlandığında ortamdaki sanal sunuculardan bir tanesini ortamdan siler!

clip_image010

Üstteki policy şartlar sağlandığında ortama bir adet sanal sunucu ekler! Elastic beanstalk ile yüklediğiniz web uygulamanız da yeni eklenen sunuculara otomatik olarak kurulur!

Normal şartlarda web uygulamanıza ait tüm İçerik sanal sunucunun diskinde(elastic block store) barınmaktadır. Web uygulamanızın tüm içeriğini veya belirleyeceğiniz bir içeriği AWS CloudFront servisini kullanarak düşük gecikme süresi ve yüksek band genişliği ile dünyaya açabilirsiniz. CloudFront’un kullanım mantığı genel olarak şu şekilde.

CloudFront web servisine gelen talep sizin belirleyeceğiniz seviyede ayrıştırılarak bir kısmı S3’ten bir kısmı Elastic Block Store’dan(sanal sunucunuzun diski) alınarak ziyaretçiye sunulur.

Web uygulamanıza gelen hangi talebin nereden tedarik edileceğini aşağıdaki benzer yapılandırmalar ile sağlayabilirsiniz.

clip_image012

Üstteki yapılandırmama göre bazı talepler S3’e , bazı talepler elastic load balancer’a yönlendirilecek.

clip_image014

Üstteki yapılandırma ile web uygulamasının hangi kısımlarının nereden tedarik edileceğini belirlemiş oldum. Web uygulamasının bazı kısımlarına gelen talep; elastic load balancer’a, dolayısıyla sanal sunucuya ve dolayısıyla sanal sunucunun diskine(elastic block store) yönleniyor. Diğer iki kısmına gelen talep ise S3 üzerinden karşılanacaktır. Precedence ‘a dikkat edecek olursak son durumda tüm talepler elastic beanstalk adresinden karşılanmaktadır(yani sanal sunucudan ve diskinden)[Benim bu servisten anladığım bu şekilde :)]. Bu servis oldukça kapsamlı, o açından aws dokumantasyonunu mutlaka okuyunuz ve aws yetkili partnerinden destek alınız!

S3 üzerinden sunuculacak içerik için S3 tarafında aşığıdaki yapılandırmaya dikkat ediniz.

clip_image015

S3’teki bucket üzerinde static web hosting fonksiyonunu devreye alıyoruz. CloudFront bu bucket’ta barınan objeleri(Ör: web uygulamasının static içeriği) alarak ziyaretçiye sunuyor. CloudFront’un gözlemini aşağıdaki kısımlardan yapabilirsiniz.

clip_image017

clip_image019

clip_image021

Üstteki ekran görüntülerinde request’ler,data transfer değeri ve popular objeler listelenmiş. Bir diğer aws servisi olan cloudwatch ile daha detaylı gözlem yapabilirsiniz ve alarm oluşturabilirsiniz.

Üstte bahsettiğim yapılandırmalar ile yeni yüklemekte olduğum web uygulamasının deployment/release management ’ını elastic beanstalk ile, düşük gecikme/yüksek bant genişliği ile sunulmasını da cloudfront ile sağlamış olduk. CloudFront ve Elastic Beanstalk servislerinin konu kapsamındaki yapılandırmalarından genel olarak bahsetmiş oldum. Diğer bölümde görüşmek üzere.

Herkese sorunsuz ve neşeli günler dilerim.