Top Banner
Improving Site Response Time Part 2: Global Varnish Cluster with GeoDNS 1 18.2.2012 Kim Stefan Lindholm
28

Global Varnish Cluster with GeoDNS

Jul 08, 2015

Download

Technology

Improving Site Response Time, Part 2
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Global Varnish Cluster with GeoDNS

Improving Site Response TimePart 2: Global Varnish Cluster with GeoDNS

1 18.2.2012Kim Stefan Lindholm

Page 2: Global Varnish Cluster with GeoDNS

SETUP

Same components as before with following additions/modifications:

• Varnish Server: Amazon EC2 Micro Instance (613 MB)

• Varnish Monitoring: New Relic, Munin, RevealCloud

• Edge Locations: Tokyo, California, Ireland

• GeoDNS: EdgeDirector

DNS and newly added Google Analytics + New Relic code may slightly affect load times

2

Page 3: Global Varnish Cluster with GeoDNS

Front-end optimization can speed up a website but doesn’t tackle network

latency. Content must be brought closer to visitors.

3

Page 4: Global Varnish Cluster with GeoDNS

LOAD TIME, BEFORE

4

5 s

9 s

14 s

18 s

Los Angeles São Paulo Stockholm Shanghai Sydney

✘ ✘✘ ✘ ✘

Target Speed(1.5 Mbps connection)

Average: <3.5sWorst Case: <5s

AverageWorst Case

Page 5: Global Varnish Cluster with GeoDNS

Solution: Set up remote Varnish caches and direct visitors to the nearest one

with GeoDNS

5

Page 6: Global Varnish Cluster with GeoDNS

6

Varnish

Varnish

Incapsula

Website

Varnish

Varnish serves files that it has previously cached (in its assigned geographic area)

Incapsula fetches uncached content from origin server(s)If edge server is unresponsive, DNS failover redirects to Incapsula or another Varnish

Varnish fetches uncached or expired content through Incapsula, never directly from website

Page 7: Global Varnish Cluster with GeoDNS

7

LOCAL VS. REMOTE VARNISH

• Why would we place a Varnish box in the same region as the website?

• Several cloud application platforms (CloudControl, Heroku, etc.) have Varnish running locally but only default configuration is supported

• Incapsula sets cookies but Varnish doesn't serve cached results to sessions with cookies ➔ limited benefits with default settings

• We’d like to see cache hit rates of up to 99.9 % so by manually configuring Varnish we ensure that it actually does its job

Page 8: Global Varnish Cluster with GeoDNS

LOAD TIME, AFTER

8

5 s

9 s

14 s

18 s

Los Angeles São Paulo Stockholm Shanghai Sydney

✔ ✔✔ ✔ ✔

AverageWorst Case

Dotted line denotes load time before

Target Speed(1.5 Mbps connection)

Average: <3.5sWorst Case: <5s

Page 9: Global Varnish Cluster with GeoDNS

9

http://royal.pingdom.com/2010/11/12/real-connection-speeds-for-internet-users-across-the-world/

“The average connection speed for Internet users worldwide, not just among these 50 countries, but all countries, is an average of 1.8 Mbit/s”

We’ll use 1.5 Mbit/s and 5.0 Mbit/s connections in tests that follow

Page 10: Global Varnish Cluster with GeoDNS

TARGET SPEED, AVERAGE

10

1.5 Mbps <3.5s

<2.5s5.0 Mbps

Page 11: Global Varnish Cluster with GeoDNS

11

AVERAGE, BEFORE

DNS Provider: DNS Made Easy5 measurements, >20 min intervals

4.0 s

2.5 s

2.7 s

4.9 s

5.8 s

4.4 s

3.5 s

2.9 s

3.5 s

3.8 s

3.7 s

4.9 s6.0 s

<3.5s <3.5s <3.5s

1.5 Mbps

CloudFront

Page 12: Global Varnish Cluster with GeoDNS

12

AVERAGE, BEFORE

DNS Provider: DNS Made Easy5 measurements, >20 min intervals

1.5 Mbps

Akamai

3.6 s

2.1 s

2.7 s

4.0 s

4.8 s

5.0 s

3.7 s

3.1 s

3.3 s

4.5 s

4.9 s

4.8 s

<3.5s<3.5s<3.5s

6.2 s

Page 13: Global Varnish Cluster with GeoDNS

13

CDN COMPARISON

DNS Provider: DNS Made Easy5 measurements, >20 min intervals

1.5 Mbps

Akamai

CloudFront

We’ll be using CloudFront for subsequent tests

- 0.4 s

- 0.4 s

0.0 s

- 0.9 s

- 1.0 s

- 0.6 s

- 0.2 s

- 0.2 s

- 0.2 s

- 0.7 s

- 1.2 s

- 0.1 s- 0.2 s

Page 14: Global Varnish Cluster with GeoDNS

14

AVERAGE, AFTER

DNS Provider: EdgeDirector5 measurements, >20 min intervals

1.8 s

1.9 s

1.8 s

2.8 s

2.5 s

3.0 s

2.1 s

2.3 s

3.4 s

1.5 s

2.6 s

3.1 s2.8 s

<3.5s <3.5s <3.5s

1.5 Mbps

CloudFront

Page 15: Global Varnish Cluster with GeoDNS

15

AVERAGE, AFTER

DNS Provider: EdgeDirector5 measurements, >20 min intervals

1.2 s

1.5 s

1.1 s

2.1 s

2.0 s

2.4 s

1.7 s

1.8 s

2.9 s

2.0 s

1.9 s

2.6 s2.2 s

<2.5s <2.5s <2.5s

5.0 Mbps

CloudFront

Page 16: Global Varnish Cluster with GeoDNS

16

TARGET SPEED, WORST CASE

1.5 Mbps <5.0s

<4.0s5.0 Mbps

Page 17: Global Varnish Cluster with GeoDNS

17

WORST CASE, BEFORE

DNS Provider: DNS Made Easy5 measurements, >20 min intervals

1.5 Mbps

CloudFront

4.4 s

3.2 s

3.2 s

10.4 s

9.8 s

6.5 s

4.3 s

3.1 s

4.2 s

6.0 s

4.5 s

5.3 s

<5.0s <5.0s <5.0s

8.0 s

Page 18: Global Varnish Cluster with GeoDNS

18

WORST CASE, AFTER

DNS Provider: EdgeDirector5 measurements, >20 min intervals

1.9 s

2.2 s

2.1 s

3.9 s

2.8 s

4.6 s

2.7 s

2.3 s

4.0 s

1.6 s

3.2 s

3.6 s3.6 s

<5.0s <5.0s <5.0s

1.5 Mbps

CloudFront

Page 19: Global Varnish Cluster with GeoDNS

19

WORST CASE, AFTER

DNS Provider: EdgeDirector5 measurements, >20 min intervals

1.4 s

1.7 s

1.2 s

2.2 s

2.2 s

3.2 s

2.2 s

1.9 s

3.0 s

3.9 s

2.2 s

2.9 s2.8 s

<4.0s <4.0s <4.0s

5.0 Mbps

CloudFront

Page 20: Global Varnish Cluster with GeoDNS

CDN doesn’t guarantee optimal delivery locations. Where were assets

actually served from?

20

Page 21: Global Varnish Cluster with GeoDNS

21

AKAMAI LOCATIONS

CloudFront seems to load all files from Seattle which is just a simple geo-IP lookup issue

Files were loaded from 2 continents

Page 22: Global Varnish Cluster with GeoDNS

How much does a minimal Varnish cluster cost?

22

Page 23: Global Varnish Cluster with GeoDNS

SERVERS

23

VPS / Cloud Server Locations RAM Storage Price/month

Linode 512 US, UK, Japan 512 MB 20 GB $19.95

Hetzner VQ 7 Germany 512 MB 20 GB €7.90

Zerigo Linux Denver, CO 512 MB 24 GB $19

Amazon EC2 micro US, EU, Asia, Brazil 613 MB 20 GB (EBS) $16.7 / $20.7

NB 1: Varnish should run on a 64-bit serverNB 2: Amazon prices are for California and Tokyo, reserved, heavy utilization, 30 GB traffic

Page 24: Global Varnish Cluster with GeoDNS

GEODNS

24

Zerigo DNSPro 4

DNS Made EasyBusiness + GTD

DNS.comBasic / Pro

EdgeDirector+ Monitoring

Monthly Queries 4 million 10 million 5 / 15 million Unlimited

Monthly Price $20 $60 $34.95 $1.5 / monitor + $15 / M queries

+ DNS Failover X Included (3) X Included (1)

+ DNSSEC X X Included X

+ Vanity Name Servers

Included Included $44.95 X

NB: For a small website, EdgeDirector can cost less than $3/month

Page 25: Global Varnish Cluster with GeoDNS

Without DNS Failover2 x Linode server + Zerigo DNS (1 M queries)= 720 USD (~550 EUR) per year

With DNS Failover2 x Linode server + EdgeDirector (1 M queries)= 690 USD (~530 EUR) per year

25 Rates in February 2012

Page 26: Global Varnish Cluster with GeoDNS

26

LEARNINGS

• Varnish made a real improvement in response time (up to 7 sec) and as it now handles more than 99 % of requests, a website with few DB write operations performs fine even on shared cloud hosting

• Varnish boxes don’t scale up automatically but as DNS failover bypasses failed edge servers, this doesn’t seem like a problem

• GeoDNS isn’t always necessary for accelerating a website: even one Varnish serving all requests globally will significantly improve performance

Page 27: Global Varnish Cluster with GeoDNS

27

LEARNINGS

• Amazon micro instance isn’t suitable for production use due to high CPU steal

• Setting up Varnish is pretty straightforward, see Part 3 for an example configuration on Amazon EC2

Page 28: Global Varnish Cluster with GeoDNS

RESOURCES• Cloud & Virtual Private Servers (VPS)

• Linode, http://www.linode.com/

• Hetzner, http://www.hetzner.de/hosting/produktmatrix_vserver/vserver-produktmatrix

• Zerigo, http://www.zerigo.com/vps-servers

• Amazon EC2, http://aws.amazon.com/ec2/

• GeoDNS / Global Server Load Balancing (GSLB)

• http://www.zerigo.com/docs/managed-dns/setting_up_geodns

• http://help.dnsmadeeasy.com/gtd/configure-gtd-with-dns-failover/

• http://dns.com/Help/#configure

• http://edgedirector.com/how/both.htm

28