생존 상태와 준비 상태
서비스가 실행 중이라는 사실과 요청을 처리할 준비가 되었다는 사실은 다릅니다. Apollo는 Kubernetes의 상태 점검을 통해 관리되는 환경의 생존 상태(Liveness)와 준비 상태(Readiness)를 수집하고 허브에 표시합니다.
생존 상태
생존 상태 점검(liveness probe)은 컨테이너와 같은 서비스 인스턴스가 동작 가능한 상태인지 확인합니다. 일반적으로 HTTP나 gRPC 요청 등으로 서비스 인스턴스를 주기적으로 점검합니다.
생존 상태 점검의 실패는 해당 인스턴스가 사용할 수 없는 상태에 도달하여 다시 시작해야 할 수 있음을 나타냅니다. 점검 방법은 서비스가 실제로 동작할 수 있는지를 판단할 수 있도록 구성해야 합니다.
프로세스가 존재한다는 사실만으로 업무 요청을 계속 처리할 수 있다고 판단하기 어려운 경우가 있습니다. 서비스의 동작 여부를 확인하는 점검은 이러한 상태를 식별하는 데 사용합니다.
준비 상태
준비 상태 점검(readiness probe)은 서비스가 네트워크 트래픽을 받을 준비가 되었는지 알려 줍니다.
예를 들어 서비스 프로세스가 시작된 뒤 데이터베이스 연결 초기화 같은 작업을 수행해야 한다고 가정하겠습니다. 이 초기화가 끝나기 전에는 실행 중이어도 요청을 처리할 준비가 되지 않았을 수 있습니다. 준비 상태는 이러한 차이를 표현합니다.
| 구분 | 확인하는 질문 |
|---|---|
| 생존 상태 | 인스턴스가 동작 가능한 상태인가? |
| 준비 상태 | 지금 요청을 받아 처리할 준비가 되었는가? |
준비 상태가 아니라고 해서 생존 상태도 반드시 실패한 것은 아닙니다. 두 상태를 따로 보아야 초기화 중인 서비스와 재시작이 필요할 수 있는 서비스를 구분할 수 있습니다.
Kubernetes와 Apollo의 역할
Kubernetes 환경에서는 워크로드에 생존 상태 점검과 준비 상태 점검을 구성합니다. Apollo는 관리되는 배포 개체의 관련 정보를 Kubernetes에서 자동으로 수집하여 허브에서 볼 수 있게 합니다.
점검을 어떤 조건으로 통과시키는지는 서비스와 Kubernetes의 구성에 달려 있습니다.
화면에서는 대상별 Live, Ready 상태와 전체 집계 등을 확인할 수 있습니다.
운영에서 상태를 읽는 방법
- 서비스가 막 시작되었다면 필요한 초기화가 끝났는지와 준비 상태 점검이 그 과정을 반영하는지 확인합니다.
- 생존 상태 점검이 실패했다면 인스턴스가 사용할 수 없는 상태인지와 재시작이 필요한 원인을 조사합니다.
- 화면의 상태가 기대와 다르면 서비스의 점검 구성, Kubernetes에서 관측한 상태, 에이전트의 보고 경로를 구분하여 확인합니다.
제품 버전과 설정, 업무 기능의 정확성을 확인하려면 생존 상태 및 준비 상태와 함께 다른 관측 정보도 조사해야 합니다.