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 ile Web Application Kurulumu 1

There are lots of documentation(blog posts etc.) about AWS in English that’s why I have been writing in Turkish. I hope this will be informative for Turkish readers.
Regards.

Merhaba,

WordPress; php ve mysql tabanlı, açık kaynak kodlu blog ve içerik yönetim sistemidir. Kişisel web sitelerinden yüksek trafik yoğunluklu web sitelerine kadar hemen her türlü içeriğin yayınlanması için kullanılmaktadır. WordPress’in ilk sürümü 2003’de yayınlanmıştı ve elastik, ölçeklenebilir, bulut tabanlı sistemlerde çalışması düşünülerek yapılmamıştı. Zamanla gelişen sürümleri ile bu içerik yönetim sistemi(content management system) ; modern, ölçeklenebilir ve bulut tabanlı sistemlerde çalışabilir hale gelmiştir.Göz atmak isteyenler için wordpress web application’ının dosya ve klasör yapısı hakkında, kaynaklar kısmında, çeşitli adresler paylaştım.

Yazımda, AWS üzerinde ölçeklenebilir(scalable) , stateless mimari ile wordpress web application yapılandırmasından bahsedeceğim. Konunun kapsamı ve kullanacağım servisleri göz önününe aldığımda yazımı iki parçaya bölmeye karar verdim. Bu bölümde , wordpress için gereken relational database servisinin kurulumu,Elastic Beanstalk ile wordpress’in kurulumu ve Elastic Load Balancer konularına değinilecektir. Elastic Beanstalk servisi dışında kalan diğer servislerden önceki yazılarımda bahsetmiştim. Bu konuyu incelemeden önce o yazılara gözatabilirsiniz.

Elastic Beanstalk AWS’nin sunduğu platform as a service ‘dir. Müşteri Elastic Beanstalk ile, web uygulamasını bellirli tanımlar doğrultusunda(ec2,elb,rds vb.) AWS bulutuna kurar ve hizmete açar. Elastic Beanstalk servisinin desteklediği yazılımlardan ve uygulamalardan bazıları aşağıdaki gibidir.

  • Apache http server üzerinde Php , python , ruby Uygulamaları
  • IIS üzerinde .net Uygulamaları
  • Apache üzerinde java uygulamaları
  • Node.js
  • docker
  • Git(desteklediği development methodu)
  • Java Web Application Archive(desteklediği development methodu)

Elastic Beanstalk ‘un bu kulvardaki rakipleri de genel olarak aşağıdaki gibidir.

  • Cloud Foundry
  • Bluemix
  • Appscale
  • Google App Engine
  • Heroku
  • Anynines
  • Engine Yard
  • Opendshift
  • Windows Azure
  • Jelastic

Geleneksel yöntemler ile devam edebiliyorken neden elastic beanstalk kullanmalıyım? Bu soruyu cevaplayarak ilerleyeyim 🙂 Aslında soruyu “Neden buna benzer bir servis kullanalım?” şeklinde de sorabiliriz. Çünkü müşteri olarak istediğiniz PaaS servis sağlayıcısını kullanmakta özgürsünüz 🙂 Yapıyı incelerken edindiğim izlenimi aktararak soruyu cevaplayayım.

Müşterinin amacı; uygulamasını bulutta barındırmak,servis kesintisi yaşamamak,kaynak sıkınıtısı yaşamamak,yönetimsel zorlukları asgari düzeye indirmek,uygulaması için versiyonlama yapabilmek ve maliyeti optimize etmektir. Uygulamayı Elastic Beanstalk servisi ile AWS bulutuna yüklediğinizde, Elastic Beanstalk belirttiğiniz parametrelere göre arka planda,

  • Sanal sunucu instance’ını(EC2)
  • Relational Database Service’ini(Mysql)
  • Load Balancer’ı(Elastik Load Balancer)
  • Ölçeklendirme sistemini(Auto Scaling)
  • Uygulamanın sağlık durumunu(Cloudwatch)
  • S3 storage alanı kullanımını
  • Gerekli security group
  • Versiyon

konfigürasyonlarını tamamlarayarak uygulamanızı hizmete açıyor. Bir bakıma orchestration yapıyor. Bunlar ile birlikte AWS Route 53 hizmetini kullanarak DNS servisinden faydalanabilirsiniz. Stateless web uygulaması mimarisi için de ElasticCache, CloudFront, S3 servislerinden faydalanabilirsiniz. Bu yazının konusu bahsettiklerimin bir kısmı olacak. Diğer kısımlarını sonraki bölümde inceleyeceğim.

Özetle Elastic Beanstalk veya buna benzer bir servis kullanıldığında, müşteri olarak minimum efor ile web uygulamanızı hizmete açabiliyorsunuz. Yapılandırmaya geçebilirim.

Relational Database Service’inde MySQL instance’ını açtım. Elastic beanstalk rds instance’ını da kendi süreçleri içinde oluşturabiliyor. Instance’ın açılmasını bu süreçlere dahil etmeden de oluşturabilirsiniz.

clip_image002

Database ismi, user bilgisi,parola bilgisi,bağlantı yolu(endpoint) bilgisi, üstteki aşama tamamlandıktan sonra belirlenmiş olacak.

clip_image004

Database Instance’ına ait bazı önemli bilgileri farklı renk ile taradım. Bu bilgileri wordpress için kullanacağız. Şimdi wordpress kurulum dosyalarını https://wordpress.org/download/ adresinden temin ediyorum ve uygun bir lokasyona açıyorum. wp-config-sample.php dosyasının ismini wp-config.php olarak değiştiriyorum. Dosyayı notepad++ ile aşağıdaki şekilde yapılandırıyorum.

clip_image005

Bilgileri, database instance’ının detaylarından temin ediyorsunuz. Dosyanın alt kısmında authentication unique keys and salt isminde bir bölüm var. O kısmı da şu adresten edineceğiniz bilgiler ile doldurabilirsiniz > https://api.wordpress.org/secret-key/1.1/salt/

Değiştirdiğiniz dosyayı da içerecek şekilde wordpress kurulum nesnelerini zip biçiminde paketleyiniz. Paketleyeceğiniz nesneler aşağıdaki gibidir.

clip_image007

Paketlediğimiz dosyayı Elastic Beanstalk ile yapılandırma esnasında kullanacağız.

clip_image008

Üstte görülen kısımdan Elastik Beanstalk paneline geçiyorum ve “create new application” ile yeni bir uygulama oluşturuyorum.

clip_image009

“Next” ile devam.

clip_image011

“Create web server” ile devam ediyorum.

clip_image013

Gereken parametreleri seçerek devam ediyorum. Siz uygulamanıza uygun farklı parametreler seçebilirsiniz(IIS,single instance vb.)

clip_image015

Paketlediğim wordpress zip dosyasını source olarak seçerek devam ediyorum. Upload işlemi yapılacak.

clip_image017

Uygulamanın ismini not alabilirsiniz ama nihai noktada DNS üzerinde cname kaydı açarak yönlendirmeler yapacaksınız. Kısa vadede testleriniz için burada görülen ismi kullanabilirsiniz.

clip_image018

Database Instance’ını daha önce açtığım için bu aşamayı kutucukları işaretlemeden ilerletiyorum.

clip_image019

Configuration Details aşamasında, testim için gereken ayarları yapılandırdım. Health check için readme.html’in varlığını kullanacağım. WordPress kurulum dosyaları arasında bu dosya vardı! “Next” ile devam ediyorum. Elastic Beanstalk, uygulama ortamını hazırlamaya başlıyor.

clip_image021

Üstteki “Launching” süreci tamamlandıktan sonra şu işlemler bitmiş oluyor.

  • WordPress’in üzerinde çalışacağı sanal sunucu hazırlanıyor(EC2 instance)
  • Elastic Load Balancer hazırlanıyor
  • Auto-scaling group hazırlanıyor
  • Hazırlanan servisler için gereken tüm security group’lar ve gereken izinler hazırlanıyor

clip_image023

Elastic Beanstalk, uygulamayı ve uygulamaya dair tüm bileşenleri yapılandırdı. Yapılan işlemlerin detayına Logs kısmından ve Events kısmından bakabilirsiniz. Bu aşamada wordpress’i konfigüre etmek için Elastic Load Balancer’ın public ismi ile wordpress web application’ını açabilmemiz gerekiyor. Durum aşağıdaki gibidir.

clip_image025

Elastic Load Balancer’ın public dns ismi hayli karmaşık. CNAME kaydı kullanarak sadeleştirebilirsiniz. Bu yazının ikinci bölümünde cloudfront’dan bahsedeceğim. İsterseniz ne yapmak istediğinize ondan sonra karar veriniz. Bu haliyle bizi karşılayan ilk nokta elastic load balancer’daki listener’dır. ELB gelen isteği içerideki sağlıklı instance’a iletiyor. ELB ve EC2 instance’ları Auto-Scale ’ing group ile ilişiklendirilmiş durumdadır. Sağlıklı instance’ın kaynaklarında bir darboğaz yaşanırsa, auto-scaling sistemi ortama yeni bir instance ekliyor, onu da ilkine benzer şekilde yapılandırıyor ve elastic load balancer arkasına alıyor. Auto scaling’in olması gerektiği gibi çalışabilmesi için wordpress web uygulamasının stateless mimaride çalışması gerekiyor.

Burada bırakıyorum.Stateless mimarinin yapılandırılması,ElastiCache,Cloudfront ve kalan detaylardan ikinci bölümde bahsedeceğim. WordPress yapılandırmasını da bölümün sonuna bırakıyorum.

Herkese sorunsuz ve neşeli günler dilerim.

Kaynaklar:

http://en.wikipedia.org/wiki/Service_statelessness_principle

http://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk/3227428347751765/

https://www.pantz.org/software/mysql/mysqlcommands.html

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html

https://wordpress.org/download/

https://api.wordpress.org/secret-key/1.1/salt/

http://aws.amazon.com/documentation/

http://digwp.com/2012/05/complete-list-wordpress-files

http://www.howtospoter.com/web-20/wordpress/wordpress-guide-dissection-of-file-structure

http://www.wpexplorer.com/wordpress-internal-function

http://aws.amazon.com/elasticbeanstalk/

http://aws.amazon.com/whitepapers/

3 comments found

  1. bunu yaptiktan sonra domain’i elasticbeanstalk diye veriyor bize. biz dns ayarlarindan kendi adresimizi buraya gosterip bu yukledigimiz wp’yi prod olarak kullanmis oluyoruz degil mi

    1. Merhaba
      Evet, wp-admin sayfası içinde blog url alanı da mevcut. Kontrol edersiniz.
      Teşekkürler.

    2. Merhaba
      Evet.
      DNS’i de AWS ROute 53 ‘den kullanıyorsanız işlem daha kolay olabilir.

Comments are closed.