24장. 클러스터링
Pacemaker에서 systemd 응답을 올바르게 해석하고 systemd 서비스가 클러스터 종료 시 적절한 순서로 중지됨
이전에는 Pacemaker 클러스터가
systemd
리소스로 구성되고 클러스터가 중지되면 Pacemaker에서 실제로 중지되기 전에 systemd
서비스가 중지되었다고 가정할 수 있었습니다. 이로 인해 서비스가 순서대로 중지되어 오류가 발생할 수 있었습니다. 이번 업데이트를 통해 Pacemaker는 이제 systemd
응답을 올바르게 해석하고 systemd
서비스가 클러스터 종료 시 적절한 순서로 중지됩니다. (BZ#1286316)
Pacemaker에서 systemd 장치를 로드할 때 일시적인 실패와 치명적인 실패를 구분합니다.
이전에는 Pacemaker에서
systemd
장치를 로드하는 모든 오류를 치명적으로 처리했습니다. 결과적으로 Pacemaker는 CPU 로드와 같은 일시적인 조건으로 인해 로드가 실패한 경우에도 systemd
장치를 로드할 수 없는 노드에서 systemd
리소스를 시작하지 않습니다. 이번 업데이트를 통해 Pacemaker는 이제 systemd
장치를 로드할 때 일시적인 실패와 치명적인 오류를 구분합니다. 이제 로그 및 클러스터 상태가 더 적절한 메시지를 표시하고 일시적인 오류가 지워지면 노드에서 리소스를 시작할 수 있습니다. (BZ#1346726)
Pacemaker는 클러스터에서 제거된 노드를 삭제할 때 메모리에서 노드 속성을 제거합니다.
이전에는 Pacemaker의 노드 특성 관리자가 메모리에서 속성 값을 제거했지만 클러스터에서 제거된 노드를 삭제할 때 속성 자체는 제거되지 않았습니다. 결과적으로 나중에 동일한 노드 ID가 있는 클러스터에 새 노드를 추가한 경우 원래 노드에 존재하는 속성을 새 노드에 설정할 수 없었습니다. 이번 업데이트를 통해 이제 Pacemaker에서 노드를 제거할 때 속성 자체를 제거하고 동일한 ID가 있는 새 노드는 설정 속성에 문제가 발생하지 않습니다. (BZ#1338623)
Pacemaker에서 그룹 또는 복제본에 의존하는 리소스의 예상 결과를 올바르게 결정합니다.
이전 버전에서는 서비스를 다시 시작할 때 Pacemaker의 crm_resource 툴(및 pcs resource restart 명령)이 영향을 받는 리소스가 성공적으로 시작되었는지 확인할 수 없었습니다. 이로 인해 이 명령에서 그룹 멤버인 리소스를 다시 시작하지 못하거나, 재시작된 리소스가 다른 노드로 이동했던 복제 리소스에 의존하면 명령이 무기한 중단될 수 있었습니다. 이번 업데이트를 통해 이제 명령에서 그룹 또는 복제본에 의존하는 리소스에 대한 예상 결과를 올바르게 결정합니다. 원하는 서비스가 재시작되고 명령이 반환됩니다. (BZ#1337688)
클러스터 자체에서 사용하지 않는 경우에도 DLM이 필요할 때 펜싱이 수행됩니다.
이전에는 클러스터 자체에 펜싱이 필요하지 않은 경우에도 쿼럼 문제로 인해 펜싱이 필요할 수 있었지만 결과적으로 DLM 및 DLM 기반 서비스가 발생하지 않은 펜싱 대기를 중단할 수 있었습니다. 이번 수정을 통해
ocf:pacemaker:controld
리소스 에이전트에서 DLM이 이 상태에 있는지 확인하고 필요한 경우 펜싱을 요청합니다. 이 경우 펜싱이 수행되어 DLM을 복구할 수 있습니다. (BZ#1268313)
DLM에서 연결 문제를 감지하고 보고합니다.
이전 버전에서는 클러스터 통신에 DLM(Distributed Lock Manager)이 사용된 TCP/IP 패킷 전달이 예상되어 응답이 무기한 대기되었습니다. 그 결과 DLM 연결이 손실된 경우 문제에 대한 알림이 없었습니다. 이번 업데이트를 통해 DLM은 클러스터 통신이 손실될 때 이를 감지하고 보고합니다. 결과적으로 DLM 통신 문제를 식별할 수 있으며 문제가 해결되면 응답하지 않는 클러스터 노드를 다시 시작할 수 있습니다. (BZ#1267339)
컴퓨팅 인스턴스가 해제되면 관리자가 아닌 사용자가 생성한 고가용성 인스턴스가 비어 있습니다.
이전에는
fence_compute
에이전트에서 admin 사용자가 생성한 컴퓨팅 인스턴스만 검색했습니다. 이로 인해 컴퓨팅 인스턴스가 해제되면 관리자가 아닌 사용자가 생성한 인스턴스가 비어 있지 않았습니다. 이번 업데이트에서는 fence_compute
에서 모든 사용자로 실행되는 인스턴스를 검색하고 계산 인스턴스가 예상대로 새 계산 노드로 비워집니다. (BZ#1313561)
nfsserver
리소스 시작이 더 이상 실패하지 않음
var-lib-nfs-rpc_pipefs.mount
프로세스가 활성화되면 nfs-idmapd
서비스가 시작되지 않습니다. 프로세스는 기본적으로 활성화되어 있습니다. 결과적으로 nfsserver
리소스를 시작하지 못했습니다. 이번 업데이트를 통해 var-lib-nfs-rpc_pipefs.mount
가 이 상황에서 중지되고 nfs-idmapd
가 시작되지 않습니다. 결과적으로 nfsserver
가 예상대로 시작됩니다. (BZ#1325453)
LRMd
로그 오류와 더 이상 충돌하지 않음
이전에는 Pacemaker의 로컬 리소스 관리 데몬(lrmd)이 특정 드문
systemd
오류를 기록할 때 잘못된 형식 문자열을 사용했습니다. 그 결과 lrmd
는 세그먼트 결함이 발생하여 예기치 않게 종료될 수 있었습니다. 문자열 형식 수정에 패치가 적용되었습니다. 그 결과 lrmd
가 더 이상 충돌하지 않고 앞서 언급한 드문 오류 메시지를 의도한 대로 기록합니다. (BZ#1284069)
이제 stonithd
가 장치 제거와 속성 제거를 올바르게 구분합니다.
이번 업데이트 이전에는 사용자가 차단 장치에서 속성을 삭제한 경우 Pacemaker의
stonithd
서비스가 실수로 전체 장치를 삭제하는 경우가 있습니다. 이로 인해 클러스터에서 더 이상 fence 장치를 사용하지 않았습니다. 이 버그를 수정하도록 기본 소스 코드가 수정되었으며 이제 stonithd
에서 속성 제거를 장치 제거와 올바르게 구분합니다. 결과적으로 fence 장치 특성을 삭제해도 더 이상 장치 자체를 제거하지 않습니다. (BZ#1287315)
HealthCPU
가 CPU 사용량을 올바르게 측정
이전 버전에서는
ocf:pacemaker:HealthCPU
리소스가 Red Hat Enterprise Linux 7에서 top 명령의 출력을 잘못 구문 분석했습니다. 그 결과 HealthCPU
리소스가 작동하지 않았습니다. 이번 업데이트를 통해 리소스 에이전트가 이후 버전의 top 의 출력을 올바르게 구문 분석합니다. 결과적으로 HealthCPU
는 이제 CPU 사용량을 올바르게 측정합니다. (BZ#1287868)
Pacemaker에서 민감한 정보를 제거할 때 수집된 모든 파일을 확인
Pacemaker에는 Pacemaker의
crm_report
툴이 직접 또는 sosreport
를 통해 간접적으로 버그 보고서를 통해 시스템 정보를 제출할 때 지정된 패턴과 일치하는 중요한 정보를 제거할 수 있습니다. 그러나 Pacemaker에서는 로그 파일 추출이 아닌 수집된 특정 파일만 확인합니다. 이로 인해 중요한 정보는 로그 파일 추출에 남아 있을 수 있습니다. 이번 수정을 통해 Pacemaker에서 중요한 정보를 제거할 때 수집된 모든 파일을 확인하고 중요한 정보는 수집하지 않습니다. (BZ#1219188)
모든 노드 재연결에서 corosync
메모리 풋프린트가 더 이상 증가하지 않음
이전 버전에서는 사용자가 노드에 다시 참여할 때
corosync
의 일부 버퍼가 해제되지 않아 메모리 소비가 저하되었습니다. 이번 수정을 통해 메모리가 유출되지 않으며 모든 노드 재연결 시 메모리 공간이 더 이상 증가하지 않습니다. (BZ#1306349)
Corosync는 IPv4를 사용하도록 구성되고 DNS가 IPv4 및 IPv6 주소를 모두 반환하도록 설정된 경우 올바르게 시작됩니다.
이전 버전에서는 pcs-generated
corosync.conf
파일에서 IP 주소 및 인터넷 프로토콜 버전 4(IPv4) 대신 호스트 이름을 사용하고 DNS 서버가 IPV4와 IPV6 주소를 모두 반환하도록 설정된 경우 corosync
유틸리티가 시작되지 않았습니다. 이번 수정으로 Corosync가 IPv4를 사용하도록 구성된 경우 IPv4가 실제로 사용됩니다. 결과적으로 corosync
는 설명된 상황에서 예상대로 시작됩니다. (BZ#1289169)
corosync-cmapctl
유틸리티가 print_key()
함수의 오류를 올바르게 처리
이전에는
corosync-cmapctl
유틸리티에서 print_key()
함수의 corosync 오류를 올바르게 처리하지 않았습니다. 결과적으로 corosync-cmapctl
이 corosync
유틸리티를 종료한 경우 무한 루프를 입력할 수 있었습니다. 제공된 수정을 통해 Corosync가 종료될 때 모든 오류가 반환되는지 확인합니다. 결과적으로 corosync-cmapctl
은 반복문을 벗어나 이 시나리오에 관련 오류 메시지를 표시합니다. (BZ#1336462)