Designing enterprise drupal
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

Designing Enterprise Drupal PowerPoint PPT Presentation


  • 36 Views
  • Uploaded on
  • Presentation posted in: General

Designing Enterprise Drupal. Environments. How to scale Drupal server infrastructure. Jason Burnett ( [email protected] ) NeoSpire Director of Network Services Ben Chavet ( [email protected] ) NeoSpire Senior Engineer Brian Skowron ( [email protected] )

Download Presentation

Designing Enterprise Drupal

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Designing enterprise drupal

Designing Enterprise Drupal

Environments

How to scale Drupal server infrastructure


Introductions

Jason Burnett ([email protected])

NeoSpire Director of Network Services

Ben Chavet ([email protected])

NeoSpire Senior Engineer

Brian Skowron ([email protected])

NeoSpire Account Executive

Introductions


So first thing s first

So…first thing’s first

  • Prerequisites that you’ll need (or at least want).

    • A good, reliable network with plenty of capacity

    • At least one expertSystems Administrator

  • You don’t necessarily need this:


But you don t want this

But you don’t want this:

(hopefully this isn’t you)


After you ve fired that guy

After you’ve fired that guy,

let’s talk stacks

Default Stack

Performance Stack


First don t use drupal well sorta

First, don’t use Drupal (well, sorta)

  • Drop-in replacement for Drupal 6.x

  • Support for database replication

  • Support for reverse proxy caching

  • Optimization for MySQL

  • Optimization for PHP 5

  • Available at: http://fourkitchens.com/pressflow-makes-drupal-scale


After pressflow it s all about cache

After Pressflow, it’s all about Cache

  • Varnish is a reverse proxy cache

  • Caches content based on HTTP headers

  • Uses kernel-based virtual memory

  • Watch out for cookies, authenticated users

  • Available at

  • http://varnish-cache.org/


Http pipeline

HTTP Pipeline

Apache Configuration

Varnish Configuration

NameVirtualHost *:8080

Listen 8080

<VirtualHost *:8080>

[…]

</VirtualHost>

backend default {

.host = "127.0.0.1";

.port = "8080";

}


Http logging

HTTP Logging

VarnishNCSA daemon handles logging

Default Apache logs will always show 127.0.0.1

Define a new log format to use X-Forwarded-For

LogFormat"%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy

CustomLog/var/log/apache2/access.log combined_proxy


Caching with cookies

Caching with Cookies

sub vcl_recv {

// Remove has_js and Google Analytics __* cookies.

set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|has_js)=[^;]*", "");

// Remove a ";" prefix, if present.

set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");

// Remove empty cookies.

if (req.http.Cookie ~ "^\s*$") {

unset req.http.Cookie;

}

}

sub vcl_hash {

// Include cookie in cache hash

if (req.http.Cookie) {

set req.hash += req.http.Cookie;

}

}


Basic security

Basic Security

// Define the internal network subnets

acl internal {

"127.0.0.0"/8;

"10.0.0.0"/8;

}

sub vcl_recv {

[…]

// Do not allow outside access to cron.php

if (req.url ~ "^/cron\.php(\?.*)?$" && !client.ip ~ internal) {

set req.url = "/404-cron.php";

}

}


Varnish is super fast

Varnish is super-fast

/etc/security/limits.conf

Able to handle many more connections than Apache

Needs a large number of file handles

* soft nofile 131072

* hard nofile 131072


Apache optimizations

Apache Optimizations

  • Tune apache to match your hardware

  • Setting MaxClients too high is asking for trouble

  • Every application is different

  • A good starting point is total amount of memory allocated to Apache divided by 40MB

  • One of the areas that will need to be monitored and updated on an ongoing basis


Still all about cache

Still all about Cache

  • APC Opcode Cache

  • APC is an Opcode cache

  • Officially supported by PHP

  • Prevents unnecessary PHP parsing and compiling

  • Reduces load on Memory and CPU


Allocate enough memory

allocate enough memory

FOR APC

extension=apc.so

apc.shm_size=120

apc.ttl=300

Php.ini

Sysctl.conf

kernel.shmmax=134217728


  • Login