Health checks for Route53
- HTTP Health Checks는 퍼블릭 리소스에 대해서만 사용 가능하다.
- Health checks를 이용해 자동화된 DNS 장애 복구(failover)가 가능하다.
- Health checks는 아래 세 가지 기능을 할 수 있다.
1. endpoint를 모니터링 할 수 있다.
- application, server, 다른 AWS 리소스 중 어느 하나를 모니터링 할 수 있다.
2. 또 다른 Health checks를 모니터링 할 수 있다.
- 이를 계산된 Health checks라 한다.
- 여러 개의 Health checkers로부터 받은 결과를 하나의 Health checks로 합쳐주는 역할을 한다.
3. Cloudwatch 알람을 모니터링 할 수 있다.
- DynamoDB의 throttles
- RDS 알람
- 사용자가 지정한 metrics 등등
- Health checks는 CloudWatch metrics와 통합 되어 있다.
Health checks 기능
Endpoint 모니터링
- 약 15개 정도의 전세계의 heath checkers가 endpoint의 health를 확인한다.
- Healthy/Unhealthy의 경계선은 3이 default이다.
- 이는 장애로 간주되기 전 몇 번의 장애가 일어나야 하는 지를 의미한다.
- 30초 주기로 확인하며 10초로 짧게 설정하는 것도 가능하지만 돈이 더 든다.
- 지원하는 프로토콜: HTTP, HTTPS, TCP
- 만약 Health checkers의 18% 이상이 특정 엔드 포인트가 healthy하다고 판단하면 Route 53은 해당 엔드 포인트가 healthy하다고 여긴다.
- 그렇지 않으면 Unhealthy이다.
- 이 기능을 이용해서 어떤 지역을 Route 53이 쓸 수 있을 지를 결정할 수 있다.
- Status code가 2xx, 3xx일 때만 Health checks을 통과할 수 있다.
- Health checks는 해당 엔드 포인트가 반환하는 응답이 text인 경우 받은 첫 5120bytes의 텍스트가 맞는 지를 확인하는 방법을 이용해 pass / fail을 결정할 수 있다.
- 이 기능을 이용하기 위해서는 사용하는 리소스가 Health checkers로부터 요청을 받아야 하므로 Health checkers에 대한 방화벽을 열어 두어야 한다.
Calculated Health Checks
- 여러 개의 Health Checks의 결과를 하나의 Health check로 합치는 역할을 한다.
- 결과를 합칠 때는 OR/AND/NOT 중 하나를 사용할 수 있다.
- 이를 이용해 몇 개 이상의 Health checks가 통과해야 parent가 통과로 여길 지를 결정할 수 있다.
- Parent Health check는 최대 256개까지의 child Health checks를 가질 수 있다.
- 사용 예시
- 모든 health checks가 fail이 될 수도 있는데 웹 사이트의 유지 보수를 위해서는 몇 개는 pass AND 몇 개는 fail 등의 기준을 정해서 모든 checks가 fail이 되는 것은 막는 것이 좋을 수 있다.
Cloudwatch 알람을 모니터링
- 만약 endpoint가 Private Hosted Zones에 있는 경우 CloudWatch 알람을 대신 이용해 Health check를 할 수 있다.
- 즉, private VPC에 있는 경우 Health checkers는 public에 있기 때문에 해당 endpoint에 접근할 수 없는 경우가 생길 수 있다.
- 또는 on-premise 리소스의 경우에도 Health checker가 접근할 수 없다.
- 이럴 때는 CloudWatch Metric을 이용해 알람을 생성해서 Health Checkers가 해당 알람을 확인하도록 하면 된다.
- 만약 경보 상태가 되면 Health checks가 통과하지 못하도록 하면 된다.
Health Checks 생성 실습
Route53의 왼쪽 상단에서 Create를 클릭해 생성할 수 있다.
만약 사용하는 EC2 instance가 리전 별로 존재한다면 각 리전 별 Health checkers를 만드는 것이 좋다.
Health Checks의 Path는 아래와 같이 /health로 하는 것이 일반적이다.