# Node drain

> Taking a server out of rotation on purpose: stop sending it new work, let the requests and jobs it already holds finish, then shut it down or upgrade it. A load balancer's connection draining and Kubernetes' `kubectl drain` both work this way. Killing a busy server instead drops whatever it was doing.

Reliability

## In Quorum

Health checks research adds a Drain button to a Node's card. The Node takes no new traffic at once, and its share goes to the other Nodes on the path. It finishes what it holds: a Queue hands its backlog to its Workers. Ten sim seconds later, empty, it rejoins the rotation. Draining the Node an Incident is hitting cuts that Incident to the 10 s drain window. A Node with no other copy to take the load strands every request sent to it.

## Design

[Incident mitigation toolbox](https://wiki.playquorum.dev/design/11-incidents.md#mitigation-toolbox)

## Read next

[Health check](https://wiki.playquorum.dev/glossary/health-check.md), [Load balancer](https://wiki.playquorum.dev/glossary/load-balancer.md), [MTTR](https://wiki.playquorum.dev/glossary/mttr.md), [Blast radius](https://wiki.playquorum.dev/glossary/blast-radius.md)

## Learn more

- [Kubernetes docs: Safely drain a node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/)
- [NGINX docs: Reverse proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/)
- [AWS docs: Target group deregistration delay](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html)

## See also

- [Glossary](https://wiki.playquorum.dev/glossary.md)

Source: https://wiki.playquorum.dev/glossary/node-drain
