Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Drupal Extreme Scaling

808 visualizaciones

Publicado el

Slides from the session I presented on DrupalCamp 2015 about Drupal scaling ability with Apache Mesos, Docker containers and some more fancy technologies.

Publicado en: Software
  • Sé el primero en comentar

Drupal Extreme Scaling

  1. 1. About Me Academics Computer Science Engineer - UCA Masters Degree on Software Engineering - US Masters Degree on IT Security - US Experience 5+ years as web developer, 3 of them using Drupal Currently: Freelance DevOps IT Security, GNU/Linux, Python, Node.JS . . . Interests Rock’n’Roll (electric guitar) and videogames Books, movies, beer, whiskey, roleplaying. . . Zequi V´azquez Drupal Extreme Scaling
  2. 2. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  3. 3. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  4. 4. Introduction How does Drupal scale? What is scaling? Related to performance, but it’s not the same Horizontal scaling Vertical scaling Drupal is highly cache-dependent Zequi V´azquez Drupal Extreme Scaling
  5. 5. Introduction Drupal performance, scalabilty & availability Memcache Apc / Opcache Varnish Redundancy Choose your cache improvement module Zequi V´azquez Drupal Extreme Scaling
  6. 6. Introduction Cloud computing and containers Elastic computing → resources grow on demand In theory, we achieve full scalability and availability. False! The hidden enemy: budget grows till infinity and beyond Containers (Docker) → Only for local environments? Zequi V´azquez Drupal Extreme Scaling
  7. 7. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  8. 8. The Project Some base requirements Built in Drupal 7, as a multisite install Currently, +30k sites. It needs to scale up to +100k sites Availability close to 99.999 % Of course, high performance at lowest possible cost Need to control site creation from external app Automated and not-disruptive deployments Ability to execute drush commands on all sites Migration from previous platform Three devs only - frontend, backend and devops Zequi V´azquez Drupal Extreme Scaling
  9. 9. What?? Zequi V´azquez Drupal Extreme Scaling
  10. 10. Desperate times . . . Seems scary, uh? Usual technologies are not enough to tackle project We are “computer sciencists”, aren’t we? God bless Open Source Stairway to heaven cloud Docker is more than local Zequi V´azquez Drupal Extreme Scaling
  11. 11. . . . funny times! Zequi V´azquez Drupal Extreme Scaling
  12. 12. The Webserver Drupal over Nginx and PHP-fpm Nginx allow a real very flexible configuration PHP fpm increases performance significantly We use DynamoDB to identify existent sites Mod Security with custom rules for Drupal - soon! Zequi V´azquez Drupal Extreme Scaling
  13. 13. The Node.JS app Manage sites on a multisite Drupal Asynchronous: execute something, and forget about it Use DynamoDB to store a list of deployed sites API to allow batch operations on sites list Zequi V´azquez Drupal Extreme Scaling
  14. 14. The Container Stateless Drupal container Memcache, MySQL, MongoDB as external services S3fs module → all files on S3 Emails sent through PostMark Monitorization using NewRelic Zequi V´azquez Drupal Extreme Scaling
  15. 15. The Cluster Apache Mesos and Marathon Mesos abstracts the resources and creates a cluster Two masters orchestrated by Zookeeper, one or more workers Marathon allows to run Docker containers Chronos allows to run cron jobs Rest API to manage apps and containers Zequi V´azquez Drupal Extreme Scaling
  16. 16. The AutoScaling Group Mesos over AWS EC2 image for autoscaling from Mesos main worker AMI contains all 3 Docker images Main worker has Node.JS app and Varnish Script to sync amount of Marathon apps with workers number Zequi V´azquez Drupal Extreme Scaling
  17. 17. The Deployments And automatization for all . . . Lazy DevOps is best DevOps Ansible let us manage AWS in a simple (and powerful!) way Makefile + Dockerfile = Over 9000! Create and destroy environments with a single command Zequi V´azquez Drupal Extreme Scaling
  18. 18. Other stuff Devil is on details AWS do backups, but do not use default settings! Security groups for EC2 → external and internal firewall Remember to use protection → Http Auth for all Rest APIs Log centralization is a must → All hail Mesos! All of this does not matter without a recovery plan Zequi V´azquez Drupal Extreme Scaling
  19. 19. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  20. 20. The Database(s) So you think 30k sites are too much 30k sites on a Drupal multisite means 30k databases MySQL → 1 folder per database, 1 file per table MongoDB preallocates files when a database is created Conclusion? Unmanageable Zequi V´azquez Drupal Extreme Scaling
  21. 21. The Database(s) Divide and conquer! Identify each site using a unique hash Use that hash as prefix for tables on MySQL and MongoDB Group 500 sites per database, both MongoDB and MySQL MongoDB maximum database size is 3.952GB MySQL number of tables per database is 62k aprox. Zequi V´azquez Drupal Extreme Scaling
  22. 22. The Way Of The Request Never seen a settings.php file with steroids? Connect to DynamoDB Identify domain from the request (both drush and http) Calculate domain unique hash Ask DynamoDB for the database where the site lives Make sure hash is used as prefix Zequi V´azquez Drupal Extreme Scaling
  23. 23. The Site Creation Timeout In soviet Russia, Nginx configures you Happened when Node.JS app launched a site creation Strange timeout error made us configure Nginx deeply Fire and forget. When site was created, app is notified Further investigation → timeout produced on Haproxy Zequi V´azquez Drupal Extreme Scaling
  24. 24. Other problems found Another brick in the wall Unstability on autoscaling group MongoDB MMS instances out of space PHP-fpm unstability → slowlog Thousand S3 buckets? God bless S3fs Remote & massive Drush Migration: 30k sites on few days AWS RDS speed: the bigger, the better Zequi V´azquez Drupal Extreme Scaling
  25. 25. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  26. 26. Please, do not pull your arms out of the window Demo time! Zequi V´azquez Drupal Extreme Scaling
  27. 27. Contents 1 Introduction 2 The Project 3 Problems and Solutions 4 Demo 5 Conclusions Zequi V´azquez Drupal Extreme Scaling
  28. 28. Conclusions Spoiler alert! Project went live on April 2015. Absolute success! Learned a lot about new technologies Cloud + Containers = Profit Drupal flexibility is amazing Zequi V´azquez Drupal Extreme Scaling
  29. 29. Be sure to practice first, Frodo Zequi V´azquez Drupal Extreme Scaling
  30. 30. That’s all, folks! Thank you! @RabbitLair ezequielvazq[at]gmail[dot]com Zequi V´azquez Drupal Extreme Scaling

×