Redis High availability and fault tolerance in a multitenant environment

66
REDIS IN A MULTI-TENANT ENVIRONMENT Iccha Sethi, Software Developer Twitter: @IcchaSethi

Transcript of Redis High availability and fault tolerance in a multitenant environment

Page 1: Redis High availability and fault tolerance in a multitenant environment

REDIS IN A MULTI-TENANT ENVIRONMENT Iccha Sethi, Software Developer

Twitter: @IcchaSethi

Page 2: Redis High availability and fault tolerance in a multitenant environment

2

IcchaSethi.__dict__

{ “Name”: “Iccha Sethi”, “Occupation”: “Software Developer”, “Team”: “Redis”, “Company”: “Object Rocket, Rackspace”, “Fun Fact”: “loading….” }

Page 3: Redis High availability and fault tolerance in a multitenant environment

Why does High Availability matter for Redis?

3

Page 4: Redis High availability and fault tolerance in a multitenant environment

Why does High Availability matter for Redis?

4

Page 5: Redis High availability and fault tolerance in a multitenant environment

Outline

• Architecture • Security and Isolation • Know thy environment

5

Page 6: Redis High availability and fault tolerance in a multitenant environment

Outline

• Architecture • Security and Isolation • Know thy environment

6

Page 7: Redis High availability and fault tolerance in a multitenant environment

7

Architecture

Page 8: Redis High availability and fault tolerance in a multitenant environment

Outline

8

Redis Master

Access HA Redis: Dns: read/write port 6379 password

Page 9: Redis High availability and fault tolerance in a multitenant environment

Outline

9

Redis Master

Redis Slave

Access HA Redis: DNS: read/write port 6379 password

Page 10: Redis High availability and fault tolerance in a multitenant environment

Outline

10

VIP

LB1 (Master) HAProxy

Redis Master

Redis Slave

Access HA Redis: DNS: read/write port 6379 password

Page 11: Redis High availability and fault tolerance in a multitenant environment

Outline

11

VIP

LB1 (Master) HAProxy

LB2 (Backup) HAProxy

keepalived

Redis Master

Redis Slave

Access HA Redis: DNS: read/write port 6379 password

Page 12: Redis High availability and fault tolerance in a multitenant environment

12

Sentinels

Page 13: Redis High availability and fault tolerance in a multitenant environment

13

Highly Available REDIS

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Slave

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

HA Create

Page 14: Redis High availability and fault tolerance in a multitenant environment

14

Architecture - Opportunities

Page 15: Redis High availability and fault tolerance in a multitenant environment

Opportunities

• Failover is easy • Easy to introduce changes • Reusable architecture

15

Page 16: Redis High availability and fault tolerance in a multitenant environment

Opportunities

• Failover is easy • Easy to introduce changes • Reusable architecture

16

Page 17: Redis High availability and fault tolerance in a multitenant environment

17

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Slave

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 18: Redis High availability and fault tolerance in a multitenant environment

18

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Slave

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 19: Redis High availability and fault tolerance in a multitenant environment

19

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Master

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 20: Redis High availability and fault tolerance in a multitenant environment

20

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Master

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 21: Redis High availability and fault tolerance in a multitenant environment

21

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Master

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 22: Redis High availability and fault tolerance in a multitenant environment

22

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Master

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 23: Redis High availability and fault tolerance in a multitenant environment

23

Fail Over – Redis Nodes

STASH NOVA

Proxy API

Sentinels

Host 0

Host 1

Host 2

Host 3

Redis Master

Redis Master

KeepAliveD HA Proxy

KeepAliveD HA Proxy

Proxy Agent

Proxy Agent

Agent

Agent

Customer :6379

Page 24: Redis High availability and fault tolerance in a multitenant environment

Opportunities

• Failover is easy • Easy to introduce changes • Reusable architecture

24

Page 25: Redis High availability and fault tolerance in a multitenant environment

25

Redis Resize – Vertical Scaling

STASH

Sentinels

Redis Master

Redis Slave

HA Proxy

HA Proxy

Customer :6379

Page 26: Redis High availability and fault tolerance in a multitenant environment

26

Redis Resize – Vertical Scaling

STASH

Sentinels

Redis Master

Redis Slave

HA Proxy

HA Proxy

Customer :6379

New Redis Master

New Redis Slave

Page 27: Redis High availability and fault tolerance in a multitenant environment

27

Redis Resize – Vertical Scaling

STASH

Sentinels

Redis Master

Redis Slave

HA Proxy

HA Proxy

Customer :6379

New Redis Master

New Redis Slave

Page 28: Redis High availability and fault tolerance in a multitenant environment

28

Redis Resize – Vertical Scaling

STASH

Sentinels

HA Proxy

HA Proxy

Customer :6379

New Redis Master

New Redis Slave

Page 29: Redis High availability and fault tolerance in a multitenant environment

Opportunities

• Failover is easy • Easy to introduce changes • Reusable architecture

29

Page 30: Redis High availability and fault tolerance in a multitenant environment

Highly Available MySQL

30

Page 31: Redis High availability and fault tolerance in a multitenant environment

31

Architecture - Challenges

Page 32: Redis High availability and fault tolerance in a multitenant environment

Challenges

• Global sentinels • Redis drivers

32

Page 33: Redis High availability and fault tolerance in a multitenant environment

Global Sentinels

33

Page 34: Redis High availability and fault tolerance in a multitenant environment

34

Sentinels

Page 35: Redis High availability and fault tolerance in a multitenant environment

Redis Drivers/Clients

35

Page 36: Redis High availability and fault tolerance in a multitenant environment

36

Architecture - Case Study

Page 37: Redis High availability and fault tolerance in a multitenant environment

Tale of ‘Resize Why you no work?’

37

Page 38: Redis High availability and fault tolerance in a multitenant environment

38

Redis Resize – Vertical Scaling

STASH

Sentinels

Redis Master

Redis Slave

HA Proxy

HA Proxy

Customer :6379

New Redis Master

New Redis Slave

Page 39: Redis High availability and fault tolerance in a multitenant environment

Outline

• Architecture • Security and Isolation • Know your environment

39

Page 40: Redis High availability and fault tolerance in a multitenant environment

40

Security and Isolation

Page 41: Redis High availability and fault tolerance in a multitenant environment

ACLs

41

Page 42: Redis High availability and fault tolerance in a multitenant environment

42

VIP

LB1 (Master) HAProxy

ACLS

LB2 (Backup) HAProxy

ACLs

keepalived

Redis Master

Redis Slave

Access HA Redis: VIP: read/write port 6379

ACLs

Page 43: Redis High availability and fault tolerance in a multitenant environment

SSL

43

Page 44: Redis High availability and fault tolerance in a multitenant environment

44

VIP

LB1 (Master) HAProxy

ACLs SSL certs

LB2 (Backup) HAProxy

ACLs SSL certs

keepalived

Redis Master

Redis Slave

Access HA Redis: VIP: read/write port 6379 SSL port 6380

SSL

Page 45: Redis High availability and fault tolerance in a multitenant environment

Containers

45

Page 46: Redis High availability and fault tolerance in a multitenant environment

46

VIP

LB1 (Master) HAProxy

LB2 (Backup) HAProxy

keepalived

Redis Master

Redis Slave

Access HA Redis: VIP: read/write port 6379

Containers

Page 47: Redis High availability and fault tolerance in a multitenant environment

47

Security and Isolation – Case Study

Page 48: Redis High availability and fault tolerance in a multitenant environment

48

VIP

LB1 (Master) HAProxy

LB2 (Backup) HAProxy

keepalived

Redis Master

Redis Slave

Access HA Redis: VIP: read/write port 6379

Tale of the Customer with 120K connections

Page 49: Redis High availability and fault tolerance in a multitenant environment

Outline

• Architecture • Security and Isolation • Know thy environment

49

Page 50: Redis High availability and fault tolerance in a multitenant environment

50

Page 51: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitor? • How often is it monitored? • Who does the monitoring? • What action is taken?

51

Page 52: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitor? –  Front door check –  Connection limit –  Memory usage –  Failover –  Failed failover –  Redis process down –  No valid slaves

• How often is it monitored? • Who does the monitoring? • What action is taken?

52

Page 53: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitor? • How often is it monitored?

–  Front door check –  Memory usage –  Failover –  Failed failover –  Redis process down –  No valid slaves

• Who does the monitoring? • What action is taken?

53

Page 54: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitor? • How often is it monitored? • Who does the monitoring? • What action is taken?

54

Page 55: Redis High availability and fault tolerance in a multitenant environment

55

Page 56: Redis High availability and fault tolerance in a multitenant environment

56

Page 57: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitoring? • How often is it monitored? • Who does the monitoring? • What action is taken?

57

Page 58: Redis High availability and fault tolerance in a multitenant environment

58

Page 59: Redis High availability and fault tolerance in a multitenant environment

Monitoring, Monitoring, Monitoring

• What do you monitoring? • How often is it monitored? • Who does the monitoring? • What action is taken?

–  Front door check –  Memory usage –  Failover –  Failed failover –  Redis process down –  No valid slaves

59

Page 60: Redis High availability and fault tolerance in a multitenant environment

60

Know Thy Environment - Challenges

Page 61: Redis High availability and fault tolerance in a multitenant environment

61

Page 62: Redis High availability and fault tolerance in a multitenant environment

62

Know Thy Environment – Case Studies

Page 63: Redis High availability and fault tolerance in a multitenant environment

Tale of the customer saved by Zendesk

63

Page 64: Redis High availability and fault tolerance in a multitenant environment

Outline

• Architecture • Security and Isolation • Know thy environment

64

Page 65: Redis High availability and fault tolerance in a multitenant environment

65

Page 66: Redis High availability and fault tolerance in a multitenant environment

66