SlideShare a Scribd company logo
PHP & Cloud Computing
                PHPTOSTART 2013
  Walter Dal Mut - @walterdalmut - @corleycloud
Whoami
• Walter Dal Mut                                                    •     Corley S.r.l.
   • Startupper                                                           • Scalable CMS
       • Corley S.r.l.
            • http://www.corley.it/                                          • www.xitecms.it
       • UpCloo Ltd.                                                      • Load and Stress tests
            • http://www.upcloo.com/
   • Electronic Engineer
                                                                             • www.corley.it
       • Polytechnic of Turin                                             • Consultancy
• Social                                                                     • PHP
   • @walterdalmut - @corleycloud - @upcloo                                  • AWS
• Websites                                                                   • Distributed Systems
   • walterdalmut.com – corley.it – upcloo.com                               • Scalable Systems

                                 Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                                 @corleycloud @upcloo
AWS - Application Management Solutions




            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                            @corleycloud @upcloo
Why scalability




                                                                    Source Jeff Barr AWS
                                                                    slideshare.net/…
             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                             @corleycloud @upcloo
Also daily…




              Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                              @corleycloud @upcloo
Provision with fixed hardware




             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                             @corleycloud @upcloo
Thanks to Cloud Computing




            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                            @corleycloud @upcloo
Are you wasting monies?




            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                            @corleycloud @upcloo
Scalability effects on your business
• Scale capacity on demand
• Turn fixed costs into variable costs
• Always available
• Rock-solid reliability
• Cost-effective
• Reduce time to market
• Focus on product and core competencies


                     Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                     @corleycloud @upcloo
Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                @corleycloud @upcloo
Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                @corleycloud @upcloo
Scalable PHP environments – Initial Step



                                               Web
     89.30.31.32/32                                                          MySQL
                                             Instance




                      Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                      @corleycloud @upcloo
Scalable PHP environments –
autoscaling


                                                                                   MySQL

                                                     Web
    Elastic Load Balancer
                                                   Instance




                            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                            @corleycloud @upcloo
Scalable PHP environments –
autoscaling

                                                     Web
                                                   Instance
                                                                                   MySQL

                                                     Web
    Elastic Load Balancer
                                                   Instance




                            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                            @corleycloud @upcloo
Scalable PHP environments –
autoscaling

                                                     Web
                                                   Instance
                                                                                     MySQL

                                                     Web
    Elastic Load Balancer
                                                   Instance


                                                     Web
                                                   Instance                          MySQL
                                                                                   Read Replica




                            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                            @corleycloud @upcloo
AWS (Elastic) Load Balancer
• You can distribute incoming traffic across your web instances
• When it detects unhealthy load-balanced web instances, it no longer
  routes traffic to those web instances and spreads the load across the
  remaining healthy web instances.

• Elastic?
   • automatically scales its request handling capacity in response to incoming
     application traffic.



                          Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                          @corleycloud @upcloo
Autoscaling
• Scale out web instances seamlessly and automatically when demand
  increases
• Replace unhealthy or unreachable instances to maintain higher
  availability of your applications.
• Scale dynamically based on your Cloud Watch metrics, or predictably
  according to a schedule that you define..
• Run on-demand or spot instances



                      Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                      @corleycloud @upcloo
Metrics and Autoscaling

                        EC2 Instance                              CloudWatch



                                                                                      Scaling rules

Elastic Load Balancer
                                                                   Autoscaling




                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Metrics and Autoscaling

                        EC2 Instance                              CloudWatch



                                                                                      Scaling rules

Elastic Load Balancer
                                                                   Autoscaling



                        EC2 Instance


                                                                      Alarms

                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Metrics and Autoscaling

                        EC2 Instance                              CloudWatch



                                                                                      Scaling rules

Elastic Load Balancer
                                                                   Autoscaling



                        EC2 Instance




                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Metrics and Autoscaling

                        EC2 Instance                              CloudWatch



                                                                                      Scaling rules

Elastic Load Balancer
                                                                   Autoscaling



                        EC2 Instance


                                                                      Alarms

                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Metrics and Autoscaling

                        EC2 Instance                              CloudWatch



                                                                                      Scaling rules

Elastic Load Balancer
                                                                   Autoscaling




                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Scale with metrics, scheduled or both?
• How to scale? It depends by your application
   • Scheduled scale operations are useful when you have predictable spikes
   • Metrics when you have heavy spike application and you need to adjust your
     infrastructure automatically
   • Mix previous in mixed scenarios
• Which metric use in order to scale?
   • It depends by your application design
      • CPU heavy scale on CPU load metric
      • Network heavy scale on network load metric
      • Etc.
• Remember that applications don’t consume only CPU but also other
  resources
                            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                            @corleycloud @upcloo
We have to discuss about:
• Session Management
   • If we open and close servers runtime we have to maintain PHP sessions in
     order to handle user logins and other application features related to the end
     user session.
• Database connections
   • All MySQL connectors (PDO, MySQLi, [mysql_*]) handle just one connection…
     No “x” RDB connection at the same time
• Software maintenance
   • How we can ran the same application version on all our infrastructure?
• What about logs? How we can collect VM logs in order to centralize
  the log management?
                          Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                          @corleycloud @upcloo
Session Management
• Fortunately with PHP you can use different strategies to centralize
  sessions
   •   Memcache/Memcached (AWS ElastiCache)
   •   Redis
   •   DynamoDB (AWS)
   •   Etc.
• We can modify the session_handler in order to use a different
  storage (php.ini, your application bootstrap, etc.)
session.save_handler = memcache
session.save_path = “tcp://1.cache.group.domain.tld:11211”


                           Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                           @corleycloud @upcloo
MySQL – Master/Slave?
• Master/Slave is a model of communication where one device or
  process has unidirectional control over one or more other devices
   • MySQL can scales out all your read (SELECT) operations on different slave
     servers.

• AWS RDS (Relational Database Service) helps you to create read
  replicas directly in AWS web console with a couple of clicks!




                          Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                          @corleycloud @upcloo
PHP Application MySQL READ
Replicas

                                SELECT ONLY
                                                                            SLAVE 1
                 INSERT/UPDATE/
                 DELETE/SELECT
                                              MASTER
   Application

                                SELECT ONLY
                                                                            SLAVE 2




                     Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                     @corleycloud @upcloo
Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                @corleycloud @upcloo
Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                @corleycloud @upcloo
Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                @corleycloud @upcloo
MySQL Native Driver
• MySQL native driver?
   • Available from PHP >= 5.3
   • You have to compile your PHP with “mysqlnd” support
      • --with-mysqli=mysqlnd --with-pdo=mysqlnd --with-mysql=mysqlnd


• Delegate to “mysqlnd_ms” the master/slave management
   • http://php.net/manual/en/book.mysqlnd.php




                           Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                           @corleycloud @upcloo
Create the mysqlnd_ms configuration file
{
                                                                                    The simple JSON configuration is divided
    "myapp": {
                                                                                    in two main section
        "master": {
             "master_0": {
                                                                                    • Master
                 "host": "localhost",
                                                                                    • Slaves
                 "port": "3306"
             }
        },
                                                                                    “myapp” is the hostname that we use
        "slave": {
                                                                                    instead the real mysql host address.
             "slave_0": {
                 "host": "192.168.2.27",                                            Eg.
                 "port": "3306"
                                                                                    •     mysql_connect(“myapp”, “user”,
                                                                                          “passwd”);
             }
                                                                                    •     new Mysqli(“myapp”, “user”,
        }
                                                                                          “passwd”);
    }
                                                                                    •     new
}                                                                                         PDO(“mysql:dbname=testdb;host=my
                                                                                          app”);
                                        Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                                        @corleycloud @upcloo
Maintain softwares



                                                      Web
     Elastic Load Balancer
                                                    Instance




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
Maintain softwares

                                                      Web
                                                    Instance


                                                      Web
     Elastic Load Balancer
                                                    Instance




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
Maintain softwares

                                                      Web
                                                    Instance


                                                      Web
     Elastic Load Balancer
                                                    Instance


                                                      Web
                                                    Instance




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
Maintain softwares

                                                      Web
                                                    Instance



     Elastic Load Balancer



                                                      Web
                                                    Instance




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
Maintain softwares

                                                      Web
                                                    Instance



     Elastic Load Balancer




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
How we can stay fresh?
• If servers starts and stops continuously we have to find solutions to
  stay updated also on software
   • When a server starts, it has to create a valid environment in order to provides
     web pages. Strategies?
      • Compile and bundle all softwares in one instance image
          • It is very simple but all software becomes old very quickly and when you have to release an
            update you have to compile a new image and update all load balancers configurations. It is a
            long and complex operation
      • Use EC2_USER_DATA feature provided by AWS
          • You can run a shell script when your instances bootstraps. It is more flexible because you can
            create a skeleton (PHP + libraries) and download all software runtime during the boot
            operation
      • Typically you will use both in conjunction

                               Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                               @corleycloud @upcloo
Cool Up/Down – Inhibits alarms




            Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                            @corleycloud @upcloo
Scales in action




             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                             @corleycloud @upcloo
Run commands on multiple servers
• If you ran many servers execute commands could be hard. You can
  use tools to run commands on a server list
   • Capistrano (Ruby)
      • https://github.com/capistrano/capistrano
   • Fabric (Python)
      • https://github.com/fabric/fabric
      • Use CLOTH for AWS EC2 instances
          • https://github.com/garethr/cloth
   • Chef
   • Puppet
   • Etc…

                              Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                              @corleycloud @upcloo
Fabric is very simple
#! /usr/bin/env python
from __future__ import with_statement
from fabric.api import *
                                                                                        EC2 instances are dynamic with don’t know
from fabric.contrib.console import confirm                                              addresses, for that reason we can use tagging
                                                                                        system to execute commands on a group of
from cloth.tasks import *                                                               instances
env.user = "root"                                                                             fab nodes:"^production.*" tail
env.directory = '/mnt/wordpress'
env.key_filename = ['/home/walter/Amazon/wp-                                            Execute the “tail” command on all instances
cms.pem']                                                                               with a name that starts with “production.”
@task                                                                                   Eg.
def reload():                                                                                  •   production.web-1
  "Reload Apache configuration"                                                                •   production.log
  run('/etc/init.d/apache2 reload')                                                            •   production.mongodb

@task
def tail():
  "Tail Apache logs"
  run('tail /var/log/syslog')         Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                                      @corleycloud @upcloo
Centralize all logs
• We create and destroy instances thanks to alarms but when we
  close an instance we lose immediately all instance/application logs
• How we can manage logs?
   •   The simplest way is to use Rsyslog clusters
• Rsyslog is an opensource software that forwarding log messages in
  an IP network
• Rsyslog implement the basic syslog protol
   •   That means that we can configure apache logs to “syslog” instead using
       normal text files.
   •   In this way we can collect all logs in one group of VM and work on these
       files later thanks to other technologies

                           Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                           @corleycloud @upcloo
Log management
• Collecting logs is not the latest operation because you have to
  analyse and reduce information
   •   Move logs to S3 bucket – Time based
   •   Analyze logs with Hadoop
       • Map Reduce on the cloud with Elastic Map Reduce service (EMR)
   •   Use script languages on top of Hadoop in order to simply the log analysis
       • HIVE – Data Warehouse infrastructure (data summarization)
       • Pig – High level platform for creating MapReduce program




                             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                             @corleycloud @upcloo
Cloud Conference 2013 – 18 April
• www.cloudconf.it
   • @_CloudConf_
   • https://www.facebook.com/pages/Cloud-Conf-Italia/140265592804313?ref=hl

• Data analysis
   • Hadoop – MapReduce Framework
   • Apache Pig – MapReduce Scripting Language for Hadoop
   • Apache Hive – Data Warehouse System for Hadoop

                                   PUG User Coupon Code:
                                            pug-user
                                  Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                                                  @corleycloud @upcloo
Thanks for listening



                       Any questions?




             Walter Dal Mut walter.dalmut@gmail.com @walterdalmut
                             @corleycloud @upcloo

More Related Content

PDF
Php Development In The Cloud
PPTX
Corley scalability
PDF
Build a custom (micro)framework with ZF2 Components (as building blocks)
PDF
Cloud party 2014 - Deploy your infrastructure with Saltstack - Salt Cloud wit...
PDF
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
PPTX
MySQL - Scale Out @ CloudParty 2013 Milano Talent Garden
PDF
From Chef to Saltstack on Cloud Providers - Incontro DevOps 2015
PPTX
Disaster Recovery - On-Premise & Cloud
Php Development In The Cloud
Corley scalability
Build a custom (micro)framework with ZF2 Components (as building blocks)
Cloud party 2014 - Deploy your infrastructure with Saltstack - Salt Cloud wit...
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
MySQL - Scale Out @ CloudParty 2013 Milano Talent Garden
From Chef to Saltstack on Cloud Providers - Incontro DevOps 2015
Disaster Recovery - On-Premise & Cloud

Viewers also liked (10)

PDF
An introduction to Hubot - CloudConf 2015 - Turin Italy
PDF
Middleware PHP - A simple micro-framework
PPTX
Cloud computing & lamp applications
PDF
Scale your Magento app with Elastic Beanstalk
PDF
React vs Angular2
PDF
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
PDF
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
PPT
Cloud computing simple ppt
PPTX
Introduction of Cloud computing
PPTX
cloud computing ppt
An introduction to Hubot - CloudConf 2015 - Turin Italy
Middleware PHP - A simple micro-framework
Cloud computing & lamp applications
Scale your Magento app with Elastic Beanstalk
React vs Angular2
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Cloud computing simple ppt
Introduction of Cloud computing
cloud computing ppt
Ad

Similar to Php & cloud computing (20)

PPTX
WORKSHOP: Microservices as Containers on AWS
PPTX
Release the Monkeys ! Testing in the Wild at Netflix
PDF
Virtualization Landscape & Cloud Computing
PDF
Micro service, Containers & Cluster Management
PPTX
The Mushroom Cloud Effect or What Happens When Containers Fail? by Alois Mayr...
PPTX
The Mushroom Cloud Effect - What happens when containers fail?
PDF
Tackling complexity in giant systems: approaches from several cloud providers
PDF
Introduction to Docker
PDF
Practical Cloud & Workflow Orchestration
PPTX
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
PPTX
Cloud computing benefits
PPT
Building Cloud Native Software
PPTX
MassTLC Cloud Summit Keynote
PDF
OpenNebulaConf2015 1.07 Cloud for Scientific Computing @ STFC - Alexander Dibbo
PPTX
IEEE Cloud 2012: Clouds Hands-On Tutorial
PPT
pat kerpan stateless server motion cloud camp
PPTX
Spotinst 'AWS Cost Optimization' Webinar - Jan 20th, 2016
PDF
AWS Pop-up Loft Berlin: Cache is King - Running Lean Architectures: Optimizin...
PDF
Cloud Native Camel Riding
PPTX
Scaling on AWS to the First 10 Million Users
WORKSHOP: Microservices as Containers on AWS
Release the Monkeys ! Testing in the Wild at Netflix
Virtualization Landscape & Cloud Computing
Micro service, Containers & Cluster Management
The Mushroom Cloud Effect or What Happens When Containers Fail? by Alois Mayr...
The Mushroom Cloud Effect - What happens when containers fail?
Tackling complexity in giant systems: approaches from several cloud providers
Introduction to Docker
Practical Cloud & Workflow Orchestration
IMC Summit 2016 Breakout - Aleksandar Seovic - The Illusion of Statelessness
Cloud computing benefits
Building Cloud Native Software
MassTLC Cloud Summit Keynote
OpenNebulaConf2015 1.07 Cloud for Scientific Computing @ STFC - Alexander Dibbo
IEEE Cloud 2012: Clouds Hands-On Tutorial
pat kerpan stateless server motion cloud camp
Spotinst 'AWS Cost Optimization' Webinar - Jan 20th, 2016
AWS Pop-up Loft Berlin: Cache is King - Running Lean Architectures: Optimizin...
Cloud Native Camel Riding
Scaling on AWS to the First 10 Million Users
Ad

More from Corley S.r.l. (20)

PDF
Aws rekognition - riconoscimento facciale
PDF
AWSome day 2018 - scalability and cost optimization with container services
PDF
AWSome day 2018 - API serverless with aws
PDF
AWSome day 2018 - database in cloud
PDF
Trace your micro-services oriented application with Zipkin and OpenTracing
PDF
Apiconf - The perfect REST solution
PDF
Apiconf - Doc Driven Development
PDF
Authentication and authorization in res tful infrastructures
PDF
Flexibility and scalability of costs in serverless infrastructures
PDF
CloudConf2017 - Deploy, Scale & Coordinate a microservice oriented application
PDF
A single language for backend and frontend from AngularJS to cloud with Clau...
PPTX
AngularJS: Service, factory & provider
PPTX
The advantage of developing with TypeScript
PDF
Angular coding: from project management to web and mobile deploy
PDF
Corley cloud angular in cloud
PDF
Measure your app internals with InfluxDB and Symfony2
PDF
Read Twitter Stream and Tweet back pictures with Raspberry Pi & AWS Lambda
PDF
Cloud Conf 2015 - Develop and Deploy IOT Applications
PDF
AngularJS advanced project management
PDF
Raspberry Pi - HW/SW Application Development
Aws rekognition - riconoscimento facciale
AWSome day 2018 - scalability and cost optimization with container services
AWSome day 2018 - API serverless with aws
AWSome day 2018 - database in cloud
Trace your micro-services oriented application with Zipkin and OpenTracing
Apiconf - The perfect REST solution
Apiconf - Doc Driven Development
Authentication and authorization in res tful infrastructures
Flexibility and scalability of costs in serverless infrastructures
CloudConf2017 - Deploy, Scale & Coordinate a microservice oriented application
A single language for backend and frontend from AngularJS to cloud with Clau...
AngularJS: Service, factory & provider
The advantage of developing with TypeScript
Angular coding: from project management to web and mobile deploy
Corley cloud angular in cloud
Measure your app internals with InfluxDB and Symfony2
Read Twitter Stream and Tweet back pictures with Raspberry Pi & AWS Lambda
Cloud Conf 2015 - Develop and Deploy IOT Applications
AngularJS advanced project management
Raspberry Pi - HW/SW Application Development

Php & cloud computing

  • 1. PHP & Cloud Computing PHPTOSTART 2013 Walter Dal Mut - @walterdalmut - @corleycloud
  • 2. Whoami • Walter Dal Mut • Corley S.r.l. • Startupper • Scalable CMS • Corley S.r.l. • http://www.corley.it/ • www.xitecms.it • UpCloo Ltd. • Load and Stress tests • http://www.upcloo.com/ • Electronic Engineer • www.corley.it • Polytechnic of Turin • Consultancy • Social • PHP • @walterdalmut - @corleycloud - @upcloo • AWS • Websites • Distributed Systems • walterdalmut.com – corley.it – upcloo.com • Scalable Systems Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 3. AWS - Application Management Solutions Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 4. Why scalability Source Jeff Barr AWS slideshare.net/… Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 5. Also daily… Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 6. Provision with fixed hardware Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 7. Thanks to Cloud Computing Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 8. Are you wasting monies? Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 9. Scalability effects on your business • Scale capacity on demand • Turn fixed costs into variable costs • Always available • Rock-solid reliability • Cost-effective • Reduce time to market • Focus on product and core competencies Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 10. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 11. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 12. Scalable PHP environments – Initial Step Web 89.30.31.32/32 MySQL Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 13. Scalable PHP environments – autoscaling MySQL Web Elastic Load Balancer Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 14. Scalable PHP environments – autoscaling Web Instance MySQL Web Elastic Load Balancer Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 15. Scalable PHP environments – autoscaling Web Instance MySQL Web Elastic Load Balancer Instance Web Instance MySQL Read Replica Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 16. AWS (Elastic) Load Balancer • You can distribute incoming traffic across your web instances • When it detects unhealthy load-balanced web instances, it no longer routes traffic to those web instances and spreads the load across the remaining healthy web instances. • Elastic? • automatically scales its request handling capacity in response to incoming application traffic. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 17. Autoscaling • Scale out web instances seamlessly and automatically when demand increases • Replace unhealthy or unreachable instances to maintain higher availability of your applications. • Scale dynamically based on your Cloud Watch metrics, or predictably according to a schedule that you define.. • Run on-demand or spot instances Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 18. Metrics and Autoscaling EC2 Instance CloudWatch Scaling rules Elastic Load Balancer Autoscaling Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 19. Metrics and Autoscaling EC2 Instance CloudWatch Scaling rules Elastic Load Balancer Autoscaling EC2 Instance Alarms Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 20. Metrics and Autoscaling EC2 Instance CloudWatch Scaling rules Elastic Load Balancer Autoscaling EC2 Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 21. Metrics and Autoscaling EC2 Instance CloudWatch Scaling rules Elastic Load Balancer Autoscaling EC2 Instance Alarms Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 22. Metrics and Autoscaling EC2 Instance CloudWatch Scaling rules Elastic Load Balancer Autoscaling Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 23. Scale with metrics, scheduled or both? • How to scale? It depends by your application • Scheduled scale operations are useful when you have predictable spikes • Metrics when you have heavy spike application and you need to adjust your infrastructure automatically • Mix previous in mixed scenarios • Which metric use in order to scale? • It depends by your application design • CPU heavy scale on CPU load metric • Network heavy scale on network load metric • Etc. • Remember that applications don’t consume only CPU but also other resources Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 24. We have to discuss about: • Session Management • If we open and close servers runtime we have to maintain PHP sessions in order to handle user logins and other application features related to the end user session. • Database connections • All MySQL connectors (PDO, MySQLi, [mysql_*]) handle just one connection… No “x” RDB connection at the same time • Software maintenance • How we can ran the same application version on all our infrastructure? • What about logs? How we can collect VM logs in order to centralize the log management? Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 25. Session Management • Fortunately with PHP you can use different strategies to centralize sessions • Memcache/Memcached (AWS ElastiCache) • Redis • DynamoDB (AWS) • Etc. • We can modify the session_handler in order to use a different storage (php.ini, your application bootstrap, etc.) session.save_handler = memcache session.save_path = “tcp://1.cache.group.domain.tld:11211” Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 26. MySQL – Master/Slave? • Master/Slave is a model of communication where one device or process has unidirectional control over one or more other devices • MySQL can scales out all your read (SELECT) operations on different slave servers. • AWS RDS (Relational Database Service) helps you to create read replicas directly in AWS web console with a couple of clicks! Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 27. PHP Application MySQL READ Replicas SELECT ONLY SLAVE 1 INSERT/UPDATE/ DELETE/SELECT MASTER Application SELECT ONLY SLAVE 2 Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 28. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 29. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 30. Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 31. MySQL Native Driver • MySQL native driver? • Available from PHP >= 5.3 • You have to compile your PHP with “mysqlnd” support • --with-mysqli=mysqlnd --with-pdo=mysqlnd --with-mysql=mysqlnd • Delegate to “mysqlnd_ms” the master/slave management • http://php.net/manual/en/book.mysqlnd.php Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 32. Create the mysqlnd_ms configuration file { The simple JSON configuration is divided "myapp": { in two main section "master": { "master_0": { • Master "host": "localhost", • Slaves "port": "3306" } }, “myapp” is the hostname that we use "slave": { instead the real mysql host address. "slave_0": { "host": "192.168.2.27", Eg. "port": "3306" • mysql_connect(“myapp”, “user”, “passwd”); } • new Mysqli(“myapp”, “user”, } “passwd”); } • new } PDO(“mysql:dbname=testdb;host=my app”); Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 33. Maintain softwares Web Elastic Load Balancer Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 34. Maintain softwares Web Instance Web Elastic Load Balancer Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 35. Maintain softwares Web Instance Web Elastic Load Balancer Instance Web Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 36. Maintain softwares Web Instance Elastic Load Balancer Web Instance Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 37. Maintain softwares Web Instance Elastic Load Balancer Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 38. How we can stay fresh? • If servers starts and stops continuously we have to find solutions to stay updated also on software • When a server starts, it has to create a valid environment in order to provides web pages. Strategies? • Compile and bundle all softwares in one instance image • It is very simple but all software becomes old very quickly and when you have to release an update you have to compile a new image and update all load balancers configurations. It is a long and complex operation • Use EC2_USER_DATA feature provided by AWS • You can run a shell script when your instances bootstraps. It is more flexible because you can create a skeleton (PHP + libraries) and download all software runtime during the boot operation • Typically you will use both in conjunction Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 39. Cool Up/Down – Inhibits alarms Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 40. Scales in action Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 41. Run commands on multiple servers • If you ran many servers execute commands could be hard. You can use tools to run commands on a server list • Capistrano (Ruby) • https://github.com/capistrano/capistrano • Fabric (Python) • https://github.com/fabric/fabric • Use CLOTH for AWS EC2 instances • https://github.com/garethr/cloth • Chef • Puppet • Etc… Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 42. Fabric is very simple #! /usr/bin/env python from __future__ import with_statement from fabric.api import * EC2 instances are dynamic with don’t know from fabric.contrib.console import confirm addresses, for that reason we can use tagging system to execute commands on a group of from cloth.tasks import * instances env.user = "root" fab nodes:"^production.*" tail env.directory = '/mnt/wordpress' env.key_filename = ['/home/walter/Amazon/wp- Execute the “tail” command on all instances cms.pem'] with a name that starts with “production.” @task Eg. def reload(): • production.web-1 "Reload Apache configuration" • production.log run('/etc/init.d/apache2 reload') • production.mongodb @task def tail(): "Tail Apache logs" run('tail /var/log/syslog') Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 43. Centralize all logs • We create and destroy instances thanks to alarms but when we close an instance we lose immediately all instance/application logs • How we can manage logs? • The simplest way is to use Rsyslog clusters • Rsyslog is an opensource software that forwarding log messages in an IP network • Rsyslog implement the basic syslog protol • That means that we can configure apache logs to “syslog” instead using normal text files. • In this way we can collect all logs in one group of VM and work on these files later thanks to other technologies Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 44. Log management • Collecting logs is not the latest operation because you have to analyse and reduce information • Move logs to S3 bucket – Time based • Analyze logs with Hadoop • Map Reduce on the cloud with Elastic Map Reduce service (EMR) • Use script languages on top of Hadoop in order to simply the log analysis • HIVE – Data Warehouse infrastructure (data summarization) • Pig – High level platform for creating MapReduce program Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 45. Cloud Conference 2013 – 18 April • www.cloudconf.it • @_CloudConf_ • https://www.facebook.com/pages/Cloud-Conf-Italia/140265592804313?ref=hl • Data analysis • Hadoop – MapReduce Framework • Apache Pig – MapReduce Scripting Language for Hadoop • Apache Hive – Data Warehouse System for Hadoop PUG User Coupon Code: pug-user Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo
  • 46. Thanks for listening Any questions? Walter Dal Mut [email protected] @walterdalmut @corleycloud @upcloo

Editor's Notes

  • #11: We will cover only infrastructures not communications or other types of scalabilities…