* stickiness 기본 개념
location constraint를 사용하여 특정 노드에 점수를 주어서 리소스 시작시 해당 노드에 리소스를 올리는 기능은 많은 엔터프라이즈 환경에서 사용하는 구성이다.
다만 이 방법의 문제는 해당 노드에 문제가 발생 시, 리소스가 다른 노드로 이동하고 이후 문제가 발생한 노드가 정상화 되었을 때 자동으로 해당 노드로 리소스들이 다시 원복되는 점에 있다. 실제 서비스 운영에서는 일시적인 다운타임이 고객사에 아주 무서운 영향을 줄 수 있어, 이러한 리소스 이동은 최대한 줄여야 한다.
이를 위해 stickiness 기능이 있다. 이는 리소스 재배치를 피하기 위한 기능이다. stickiness 는 간단하게 이야기하면, 장애 발생시 리소스를 받는 노드에게 주는 "점수" 이다.
* stickiness 관련 명령
stickiness 점수 설정 (stickiness 점수로서 100점을 준다)
pcs resource defaults update resource-stickiness=100
stickiness 점수 해제 (= 뒤에 아무것도 입력하지 않는다)
pcs resource defaults update resource-stickiness=
* stickiness 예시
다음과 같은 클러스터 구성이 있다.
그리고 아래와 같이 location constraint 가 구성되어 있다.
- node1.hb = 선호도 100
- node2.hb = 선호도 50
- node3.hb = 선호도 10
이상태에서 node1.hb 가 fence를 당하면, 아래와 같이 node2.hb 로 리소스가 이동한다.
그리고 fence 된 노드가 다시 정상화되면, 다시 node1.hb로 원복된다.
즉, 한번의 장애로 두번의 리소스 이동이 발생하였다. 영 좋지 않다.
이제 여기서 stickiness 설정을 준다. 설정은 아래와 같다.
- node1.hb = 선호도 100
- node2.hb = 선호도 50
- node3.hb = 선호도 10
- stickiness = 150
다시 node1.hb를 fence 하였고, 아래와 같이 node2.hb 로 리소스가 이동했다.
이후 node1.hb가 원복되어도 node2.hb에 리소스가 그대로 유지되는것을 알 수 있다.
이 절차는 아래와 같이 설명할 수 있다.
1. node1.hb가 3개의 노드 중 가장 점수가 높으므로 (100점) 클러스터 시작시 node1.hb 에 리소스가 올라간다.
2. node1.hb에 문제가 발생하여 fence 되었고, 그 다음 순위인 node2.hb (50점) 에 올라간다.
3. 그리고 node2.hb는 stickiness 점수인 150점이 추가되어 200점이 된다.
4. node1.hb 가 정상화되어 클러스터에 다시 조인했을 때, node1.hb는 100점, node2.hb는 200점으로 node2.hb가 점수가 더 높기 때문에 리소스 위치는 변경되지 않고 유지된다.
location constraint의 점수와 stickiness는 사실 리소스의 개수나 여러 복잡한 점수 계산이 있는데, 자세한 부분은 다루지 않는다. 상세한 부분은 다음 링크를 참고할 것
2024.02.13 - [High Availability] - High Availability 주요 명령어 정리
'High Availability' 카테고리의 다른 글
[QEMU-KVM] RHEL8 에서 브릿지 네트워크 (bridge network) 만들기 (1) | 2024.04.20 |
---|---|
High Availability 주요 명령어 정리 (1) | 2024.02.13 |