real world tales of repair (alexander dejanovski, the last pickle) | cassandra summit 2016

93
Real world tales of repair

Upload: datastax

Post on 16-Apr-2017

371 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Real world tales of repair

Page 2: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

CASSANDRA SUMMIT - SEPTEMBER 2016

Alexander Dejanovski@alexanderdeja

Consultantwww.thelastpickle.com

Datastax MVP for Apache Cassandra

Licensed under a Creative Commons Attribution-NonCommercial 3.0 New Zealand License

Page 3: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

About The Last Pickle

We help people deliver and improve Apache Cassandra based solutions.

With staff in 5 countries and over 50 years combined experience in Apache Cassandra.

Page 4: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016
Page 5: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016
Page 6: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What and why ?Full repair

Incremental repairHow to make it workAutomated repairs

www.thelastpickle.com

Page 7: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What is repair ?

A maintenance operation that (briefly) restores strong consistency throughout the cluster

www.thelastpickle.com

Page 8: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Why do we need repair ?

- Eventual consistency- Downtime / failure recovery- Safe deletes

www.thelastpickle.com

Page 9: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Tombstones need repair too

Missing tombstones can lead to zombie data(repair within gc_grace_seconds)

www.thelastpickle.com

Page 10: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What and why ?Full repair

Incremental repairHow to make it workAutomated repairs

www.thelastpickle.com

Page 11: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does anti-entropy repair works ?

Reads all data

www.thelastpickle.com

Page 12: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does anti-entropy repair works ?

Reads all dataCalculates hashes

www.thelastpickle.com

Page 13: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does anti-entropy repair works ?

Reads all dataCalculates hashesCompares hashes

www.thelastpickle.com

Page 14: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does anti-entropy repair works ?

Reads all dataCalculates hashesCompares hashes

Streams mismatching partitions

www.thelastpickle.com

Page 15: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does anti-entropy repair works ?

www.thelastpickle.com

Page 16: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Merkle tree is requested to all replicas

www.thelastpickle.com

Page 17: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Validation compaction

www.thelastpickle.com

Page 18: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Merkle tree comparison

www.thelastpickle.com

Page 19: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Streaming

www.thelastpickle.com

Page 20: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How do we run repair ?

nodetool repair

www.thelastpickle.com

Page 21: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

www.thelastpickle.com

Page 22: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

www.thelastpickle.com

Page 23: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

www.thelastpickle.com

Page 24: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

repairing each range once is enough

www.thelastpickle.com

Page 25: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

nodetool repair -pr

www.thelastpickle.com

Page 26: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Improving repair

nodetool repair -pr

not suitable for node recovery

www.thelastpickle.com

Page 27: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair too slow ?

Sequential repair is the default

since C* 2.0

www.thelastpickle.com

Page 28: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair too slow ?

nodetool repair -par

www.thelastpickle.com

Page 29: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The problem with dense nodes

Overstreaming

Leaves of the Merkle tree contain several partitions.

www.thelastpickle.com

Page 30: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The solutions with dense nodes

cassandra_range_repair(Matt Stump & Brian Gallew)

Breaks the repair sessions in n steps

www.thelastpickle.com

Page 31: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The solutions with dense nodes

vnodes : one repair session per vnode

Drawback : if you have many vnodes, repair takes longer

www.thelastpickle.com

Page 32: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair in…

www.thelastpickle.com

Page 33: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The early days of your cluster

Node density is low,repair works just finehowever you run it.

www.thelastpickle.com

Page 34: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The early days of your cluster

So maybe like I did,you run « nodetool repair »on all nodes… at the sametime

www.thelastpickle.com

Page 35: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The (not so) early days of your cluster

As nodes gets higher in density, repair takes longer… and longer…

www.thelastpickle.com

Page 36: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The (not so) early days of your cluster

… and latencies riseas repair is a CPU and I/O intensive operation

www.thelastpickle.com

Page 37: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Your cluster is a grown up now

… until it breaks your cluster

www.thelastpickle.com

Page 38: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How can it break ?

Load gets too high

www.thelastpickle.com

Page 39: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How can it break ?

Load gets too highYou don’t meet your latency SLA anymore

www.thelastpickle.com

Page 40: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How can it break ?

Load gets too high

www.thelastpickle.com

Page 41: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How can it break ?

Load gets too highStreams get stuck

www.thelastpickle.com

Page 42: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How can it break ?

Load gets too highStreams get stuck

and out of nowhere, all nodes start to eat all your CPU doing nothing

www.thelastpickle.com

Page 43: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The fun part ?

You need to run repairto recover from the repair outage !

www.thelastpickle.com

Page 44: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The cluster keeps growing And you realize orchestration is neededto stop blowing up your cluster

www.thelastpickle.com

Page 45: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Orchestrating repair

Repair must not run on all nodesat the same time

www.thelastpickle.com

Page 46: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Tools to orchestrate repairs

OpsCenter repair service (DSE users)

Spotify reaper

www.thelastpickle.com

Page 47: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

https://github.com/spotify/cassandra-reaper

www.thelastpickle.com

Page 48: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

Performs subrange repair

www.thelastpickle.com

Page 49: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

Performs subrange repairLimits repair pressure

www.thelastpickle.com

Page 50: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

Performs subrange repairLimits repair pressureRetries failed sessions

www.thelastpickle.com

Page 51: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

Performs subrange repairLimits repair pressureRetries failed sessions

Schedules cyclic repairs

www.thelastpickle.com

Page 52: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper

Performs subrange repairLimits repair pressureRetries failed sessions

Schedules cyclic repairsOptimizes cluster load

www.thelastpickle.com

Page 53: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Spotify reaper - with UI (thx Stefan Podkowinski)

GUI screenshots

www.thelastpickle.com

Page 54: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What and why ?Full repair

Incremental repairHow to make it workAutomated repairs

www.thelastpickle.com

Page 55: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What if we stopped repairing repaired data ?

www.thelastpickle.com

Page 56: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Here comes the savior !

C* 2.1 introduces incremental repairDefault repair mode since C* 2.2

www.thelastpickle.com

Page 57: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

How does incremental repair work ?

www.thelastpickle.com

Page 58: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Anticompaction

www.thelastpickle.com

Page 59: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Anticompaction (repair on all ranges on local node)

www.thelastpickle.com

Page 60: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair looks awesome… …but has flaws and drawbacks

www.thelastpickle.com

Page 61: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Carefully prepare your switch to incremental repair

www.thelastpickle.com

Page 62: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Carefully prepare your switch to incremental repair

i.e. do not run « nodetool repair -inc »straight away…

www.thelastpickle.com

Page 63: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

It doesn’t handle missing/corrupted datathat was already repaired

www.thelastpickle.com

Page 64: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

It splits SSTables in 2 setsthat cannot be compacted together

(think tombstone purge)

www.thelastpickle.com

Page 65: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

It is incompatible with subrange repair(anticompaction)

www.thelastpickle.com

Page 66: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

It doesn’t like concurrency very mucheven in C* 3.x

www.thelastpickle.com

Page 67: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Validator.java:261 - Failed creating a merkle tree for [repair #e4c782d0-11fc-11e6-b616-51a3849870bb on table_v2/table_attributes, [(8835460833482333317,8838777311566358575],(-7300486781514672850,-7298192396576668423], (-959298474675167225,-959177964106074209]]], /10.10.10.33 (see log for details)

www.thelastpickle.com

Page 68: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

CompactionManager.java:1320 - Cannot start multiple repair sessions over the same sstables

www.thelastpickle.com

Page 69: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

CASSANDRA-8316

A running anticompation prevents validation compaction

www.thelastpickle.com

Page 70: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Do not use -pr with incremental repair

www.thelastpickle.com

Page 71: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Do not use -pr with incremental repair

Useless : data is repaired once only

www.thelastpickle.com

Page 72: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair caveats

Do not use -pr with incremental repair

Useless : data is repaired once onlyExpensive : anticompaction overhead

www.thelastpickle.com

Page 73: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair will not…

Fix a poor repair strategy

www.thelastpickle.com

Page 74: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Incremental repair will not…

Prevent you from having to run full repair

www.thelastpickle.com

Page 75: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Reaper does not support incremental repair

But this fork does : https://github.com/adejanovski/cassandra-

reaper/tree/inc-repair-that-works

www.thelastpickle.com

Page 76: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Reaper does not support incremental repair

And this one embeds the modded UI : https://github.com/adejanovski/cassandra-

reaper/tree/inc-repair-support-with-ui

www.thelastpickle.com

Page 77: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Reaper does not support incremental repair

Not enough time to write those urls ?

github.com/adejanovski

www.thelastpickle.com

Page 78: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Reaper inc repair fork

No subrange repair

www.thelastpickle.com

Page 79: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Reaper inc repair fork

No subrange repairSingle repair thread => no concurrency

www.thelastpickle.com

Page 80: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What and why ?Full repair

Incremental repairHow to make it work

Automated repairs

www.thelastpickle.com

Page 81: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Put your repair strategy in place on day 1

www.thelastpickle.com

Page 82: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Use appropriate tooling or build your own

www.thelastpickle.com

Page 83: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Spread repair over a gc_grace_seconds cycle

www.thelastpickle.com

Page 84: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Adjust repair pressure on your cluster(Reaper does that)

www.thelastpickle.com

Page 85: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Don’t repair everything !

Pick tables with deletes and those with critical data

www.thelastpickle.com

Page 86: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

If every data is critical, then none is ;)

www.thelastpickle.com

Page 87: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Be tight on your schedule with inc repair

Tombstones and anticompaction

www.thelastpickle.com

Page 88: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Repair best practices

Avoid concurrency with inc repairOne node at a time

www.thelastpickle.com

Page 89: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

What and why ?Full repair

Incremental repairHow to make it workAutomated repairs

www.thelastpickle.com

Page 90: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

The bright future ?

Not having to think about cyclic maintenance repairs

www.thelastpickle.com

Page 91: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

CASSANDRA-10070

Automatic repair scheduling

www.thelastpickle.com

Page 92: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

CASSANDRA-8911

Mutation-based Repairs

www.thelastpickle.com

Page 93: Real World Tales of Repair (Alexander Dejanovski, The Last Pickle) | Cassandra Summit 2016

Thanks!@alexanderdeja