SAP HANA 시스템 복제 수직 확장 - 성능 최적화 시나리오 #
SAP 응용 프로그램용 SUSE® Linux Enterprise Server는 SAP* 응용 프로그램에 맞게 다양한 방법으로 최적화됩니다. 본 가이드는 성능 최적화 시나리오에서 SAP HANA 시스템 복제를 위한 SUSE Linux Enterprise Server for SAP Applications의 설치 및 사용자 정의에 대한 자세한 정보를 제공합니다. 그리고 이미 설치되어 작동 중인 SAP HANA를 시스템 복제와 통합하는 단계를 집중적으로 설명합니다.
1 이 가이드 정보 #
1.1 소개 #
SAP 응용 프로그램용 SUSE® Linux Enterprise Server는 SAP* 응용 프로그램에 맞게 다양한 방법으로 최적화됩니다. 본 가이드는 성능 최적화 시나리오에서 SAP HANA 시스템 복제를 위한 SUSE Linux Enterprise Server for SAP Applications의 설치 및 사용자 정의에 대한 자세한 정보를 제공합니다.
“SAP HANA에 대한 SAP 고객의 투자”는 최근 실시된 Pierre Audoin Consultants(PAC)의 시장 연구에서 확인할 수 있습니다. 독일의 경우 기업 중 절반은 SAP 환경에서 SAP HANA가 지배적인 데이터베이스 플랫폼이 될 것으로 예상합니다. “SAP HANA*가 제공하는 SAP Business Suite*” 시나리오는 이미 구체적으로 자주 논의되고 있습니다.
또한, SUSE는 SAP HANA를 위한 권장 및 지원 운영 체제로 SUSE Linux Enterprise Server for SAP Applications를 제공하여 이러한 발전에 동참하고 있습니다. SAP 및 하드웨어 파트너와의 협력을 통해 SUSE는 고가용성 SAP HANA 시스템 복제를 고객이 사용할 수 있도록 해주는 2개의 리소스 에이전트를 제공합니다.
1.1.1 요약 #
본 가이드에서는 고가용성 솔루션 시나리오인 "SAP HANA 수직 확장 시스템 복제 성능 최적화"에 기반한 SUSE Linux Enterprise Server for SAP Applications의 계획, 설정 및 기본 테스트를 설명합니다.
응용 프로그램의 관점에서 다루는 내용은 다음과 같습니다.
일반 시스템 복제
보조 사이트 읽기를 지원하는 시스템 복제
다중 계층 (체인) 시스템 복제
다중 대상 시스템 복제
위의 모든 시스템을 위한 다중 테넌트 데이터베이스 컨테이너
인프라의 관점에서 다루는 내용은 다음과 같습니다.
디스크 기반 SBD를 사용한 2 노드 클러스터
디스크리스 SBD를 사용한 3 노드 클러스터
1.1.2 수직 확장 대 수평 확장 #
첫 번째 시나리오 세트에는 수직 확장 솔루션의 아키텍처 및 개발이 포함됩니다.
이러한 시나리오를 위해 SUSE는 수직 확장 리소스 에이전트 패키지인 SAPHanaSR
을 개발했습니다. 시스템 복제는 한 컴퓨터에서 다른 컴퓨터로 데이터베이스 데이터를 복제하여 데이터베이스 장애를 보상합니다(단일 상자 복제).
두 번째 시나리오 세트에는 수평 확장 솔루션의 아키텍처 및 개발이 포함됩니다(다중 상자 복제). 이러한 시나리오를 위해 SUSE는 수평 확장 리소스 에이전트 패키지인 SAPHanaSR-ScaleOut
을 개발했습니다.
이 작동 모드에서는 내부 SAP HANA 고가용성(HA) 메커니즘 및 리소스 에이전트가 함께 작동하거나 서로 조율되어야 합니다. 수평 확장을 위한 SAP HANA 시스템 복제 자동화에 대한 설명은 문서 웹 페이지(https://documentation.suse.com/sbp/all/)에서 확인할 수 있습니다. 수평 확장 관련 문서의 이름은 “SAP HANA 시스템 복제 수평 확장 - 성능 최적화 시나리오”입니다.
1.1.3 수직 확장 시나리오 및 리소스 에이전트 #
SUSE는 SAPHana
리소스 에이전트(RA)를 사용한 수직 확장 시나리오를 구현했으며, 이는 SAP HANA 데이터베이스 인스턴스에 대한 실제적인 확인을 수행합니다. 이 RA는 마스터/슬레이브 리소스로 구성됩니다. 수직 확장 시나리오에서는 마스터가 기본 모드에서 실행되는 SAP HANA 데이터베이스를 관리합니다. 슬레이브는 동기화(보조) 상태에서 작동하는 인스턴스를 관리합니다.
클러스터를 최대한 단순하게 구성하기 위해 SUSE는 SAPHanaTopology
리소스 에이전트도 개발했습니다. 이 RA는 SUSE Linux Enterprise Server for SAP Applications 클러스터의 모든 노드에서 실행되며 SAP HANA 시스템 복제의 상태 및 구성에 대한 정보를 수집합니다. 그리고 일반(상태 비저장) 클론으로 설계됩니다.
수직 확장을 위한 SAP HANA 시스템 복제는 다음 시나리오 또는 사용 사례에서 지원됩니다.
성능 최적화(A ⇒ B). 이 시나리오 및 설정은 이 문서에서 설명합니다.
그림 3: 클러스터에서 SAP HANA 시스템 복제 수직 확장 - 성능 최적화 #성능 최적화 시나리오에서 SAP HANA RDBMS 사이트 A는 두 번째 노드의 SAP HANA RDBMS 사이트 B와 동기화됩니다. 두 번째 노드에서 HANA RDBMS는 테이블을 사전에 로드하도록 구성되므로 일반적으로 인수 시간이 매우 짧습니다.
SAP HANA 성능 최적화 시나리오의 한 가지 주요 이점은 보조 데이터베이스 사이트에서 읽기 액세스가 가능하다는 점입니다. 이러한 읽기 지원 시나리오를 지원하기 위해, 두 번째 가상 IP 주소가 클러스터에 추가되어 시스템 복제의 보조 역할에 바인딩됩니다.
비용 최적화(A ⇒ B, Q). 이 시나리오 및 설정에 대한 설명은 문서 웹 사이트(https://documentation.suse.com/sbp/all/)의 다른 문서에서 확인할 수 있습니다. 비용 최적화 관련 문서의 이름은 “SAP HANA SR 비용 최적화 인프라 설정”입니다.
그림 4: 클러스터에서 SAP HANA 시스템 복제 수직 확장 - 비용 최적화 #비용 최적화 시나리오에서는 두 번째 노드가 비생산적 SAP HANA RDBMS 시스템(예: QAS 또는 TST)에서도 사용됩니다. 인수가 필요한 경우에는 비생산적 시스템이 먼저 중지되어야 합니다. 이 노드의 생산적 보조 시스템은 시스템 리소스 사용이 제한되어야 하므로 테이블 사전 로드 기능은 꺼진 상태여야 합니다. 성능 최적화 사용 사례에서보다 인수하는 시간이 더 오래 걸릴 수 있습니다.
비용 최적화 시나리오에서 보조는 메모리 사용 감소 구성으로 실행되어야 합니다. 이러한 이유로 이 시나리오에서는 읽기 지원을 사용하지 않아야 합니다.
다중 계층(A ⇒ B → C) 및 다중 대상(B ⇐ A ⇒ C).
그림 5: 클러스터에서 SAP HANA 시스템 복제 수직 확장 - 성능 최적화 체인 #다중 계층 시스템 복제에는 추가 대상이 있습니다. 이전에는 이 세 번째 측면이 보조에 연결되어야 했습니다(체인 토폴로지). 현재 SAP HANA 버전에서는 SAP에서 다중 대상 토폴로지도 허용합니다.
그림 6: 클러스터에서 SAP HANA 시스템 복제 수직 확장 - 성능 최적화 다중 대상 #다중 계층 및 다중 대상 시스템은 이 문서에서 설명한 대로 구현됩니다. 첫 번째 복제 쌍(A 및 B)만 클러스터 자체에 의해 처리됩니다. 일반 성능 최적화 시나리오와의 주요 차이점은 자동 등록을 꺼야 한다는 점입니다.
다중 테넌트 또는 MDC.
다중 테넌트는 위의 모든 시나리오 및 사용 사례에서 지원됩니다. 이 시나리오는 SAP HANA SPS09 이후부터 지원됩니다. 클러스터의 관점에서 설정 및 구성은 다중 테넌트 및 단일 컨테이너에서와 동일합니다. 그러므로 이 두 유형의 시나리오 모두에 위의 문서를 사용할 수 있습니다.
1.1.4 성능 최적화 시나리오의 개념 #
노드 1(노드 또는 데이터베이스 인스턴스)의 기본 SAP HANA에서 장애가 발생하는 경우 클러스터는 인수 프로세스를 먼저 시작합니다. 이를 통해 보조 사이트에서 이미 로드된 데이터를 사용할 수 있습니다. 일반적으로 인수는 로컬 재시작보다 속도가 훨씬 빠릅니다.
이 리소스 처리 프로세스를 자동화하려면 SAPHanaSR에 포함된 SAP HANA 리소스 에이전트를 사용해야 합니다. 생산적 데이터베이스의 시스템 복제는 SAPHana 및 SAPHanaTopology를 사용하여 자동화됩니다.
기본 사이트의 서비스가 손실된 시점까지 SAP HANA 시스템 복제가 동기화된 경우 클러스터는 보조 사이트로의 인수만을 허용합니다. 이를 통해 기본 사이트에서 처리된 마지막 커밋을 보조 사이트에서 사용할 수 있습니다.
SAP는 SAP HANA와 외부 소프트웨어(예: 클러스터 프레임워크) 사이의 인터페이스를 향상했습니다. 이러한 향상에는 서비스 또는 시스템 복제 채널에 대한 상태 변경과 같은 특수 이벤트 발생 시 SAP HANA 호출 구현이 포함됩니다. 이러한 호출을 HA/DR 제공자라고도 부릅니다. 이 인터페이스는 python으로 SAP HANA 후크를 구현하여 사용할 수 있습니다. SUSE는 SAP HANA 후크를 포함하는 등 SAPHanaSR 패키지를 향상하여 클러스터 인터페이스를 최적화했습니다. 이 문서에서 설명하는 SAP HANA 후크를 사용하면 SAP HANA 시스템 복제가 중단되는 경우 즉시 클러스터에 통지할 수 있습니다. 클러스터는 SAP HANA 후크 상태뿐만 아니라 시스템 복제 상태를 정기적으로 폴링합니다.
자동화 수준은 AUTOMATED_REGISTER
파라미터를 설정하여 설정할 수 있습니다. 자동화 등록이 활성화된 경우, 클러스터는 이전에 실패한 기본 사이트를 자동으로 등록하여 새 보조 사이트를 가져옵니다.
솔루션은 HAWK 또는 기타 클러스터 클라이언트 명령을 사용하여 수동으로 기본 또는 보조 인스턴스를 '마이그레이션'하도록 설계되지 않았습니다. 이 문서의 관리 섹션에서는 SAP 및 클러스터 명령을 사용하여 기본 사이트에서 보조 사이트로 ‘마이그레이션’하는 방법에 대한 설명이 제공됩니다.
1.1.5 고객에게 제공되는 전체 패키지 #
고객은 SAPHana 및 SAPHanaTopology 리소스 에이전트를 사용하여 SAP HANA 시스템 복제를 클러스터에 통합할 수 있습니다. 이러한 방법은 회사가 필요한 예산을 대폭 절감하는 동시에 중단이 발생하지 않고 비즈니스에 중요한 SAP 시스템뿐만 아니라 SAP HANA 데이터베이스를 사용할 수 있는 장점이 있습니다. SUSE는 모범 사례 문서와 함께 확장 솔루션을 제공합니다.
SAP HANA 고가용성 솔루션을 보유하고 있지 않은 하드웨어 파트너 및 SAP도 SUSE가 제공하는 이러한 개발로부터 혜택을 볼 수 있습니다.
1.2 추가 문서 및 리소스 #
본 추가 문서의 각 장에는 시스템 또는 인터넷에서 사용할 수 있는 추가 문서 리소스로 연결되는 링크가 수록되어 있습니다.
최신 문서 업데이트는 http://documentation.suse.com/에서 확인할 수 있습니다.
또한, SUSE Linux Enterprise Server for SAP Applications 모범 사례 웹 사이트(https://documentation.suse.com/sbp/all/)에서는 다양한 백서, 모범 사례, 설정 가이드 및 기타 리소스를 확인할 수 있습니다.
SUSE는 SAP 및 고가용성에 대한 글도 블로그에 게시하고 있습니다. #TowardsZeroDowntime 해시태그를 사용하면 살펴볼 수 있습니다. https://www.suse.com/c/tag/TowardsZeroDowntime/ 링크에서 확인해 보십시오.
1.3 오류 정정 #
소규모 긴급 수정 및 중요 정보를 제 때 제공하기 위해 이 설정 가이드에 대한 기술 정보 문서(TID)는 더 자주 업데이트, 관리 및 게시됩니다.
SAP HANA SR 성능 최적화 시나리오 - 설정 가이드 - 오류 정정(https://www.suse.com/support/kb/doc/?id=7023882)
클러스터 모니터링 도구에 SOK 상태 표시 문제 해결(https://www.suse.com/support/kb/doc/?id=7023526 - https://www.suse.com/c/lets-flip-the-flags-is-my-sap-hana-database-in-sync-or-not/에서 블로그 글도 확인)
이 가이드와 함께 기타 솔루션에 대한 SUSE SAP 모범 사례 가이드 오류 정정(https://www.suse.com/support/kb/doc/?id=7023713)도 확인하십시오.
1.4 피드백 #
여러 피드백 채널을 사용할 수 있습니다.
- 버그 및 기능 향상 요청
제품과 관련하여 사용 가능한 서비스 및 지원 옵션에 대해서는 http://www.suse.com/support/를 참조하십시오.
제품 구성 요소의 버그를 신고하려면 https://scc.suse.com/support/requests 로 이동하여 로그인한 후 새 SR(Service Request: 서비스 요청) 제출을 선택하십시오.
- 메일
본 제품 문서에 대한 피드백이 있는 경우 doc-team@suse.com으로 메일을 보내 주십시오. 문서의 문서 제목, 제품 버전 및 게시 날짜를 포함해야 합니다. 오류를 보고하거나 개선사항을 제안하려면 문제점에 대한 간략한 설명을 제공하고 해당 섹션 번호 및 페이지(또는 URL)를 참조하십시오.
2 지원되는 시나리오 및 필수 구성 요소 #
SAPHanaSR
리소스 에이전트 소프트웨어 패키지에서는 수직 확장(단일 상자 대 단일 상자) 시스템 복제에 대한 지원이 다음 구성 및 파라미터로 제한됩니다.
2개 노드 클러스터가 표준입니다. 해당 세 번째 노드에도 리소스 에이전트를 설치하는 경우에는 3개 노드 클러스터를 사용할 수 있습니다. 그러나 SAP HANA 리소스가 해당 세 번째 노드에서는 절대로 실행되지 않도록 클러스터에 정의해야 합니다. 이러한 경우 클러스터가 분리되면 세 번째 노드가 추가 의사결정 노드가 됩니다.
클러스터에는 유효한 STONITH 메서드가 포함되어야 합니다.
SUSE Linux Enterprise 15 High Availability Extension(예: SDB, IPMI)에서 지원되는 모든 STONITH 메커니즘은 SAPHanaSR을 통해 지원됩니다.
본 가이드에서는 하드웨어 독립적인 SBD 펜싱 방법에 대해 중점적으로 설명합니다.
펜싱 메커니즘으로 디스크 기반 SBD를 사용하는 경우에는 1개 이상의 공유 드라이브가 필요합니다. 생산적 환경에서는 1개 이상의 SBD 장치를 사용하는 것이 좋습니다. 디스크 기반 SBD에 대한 자세한 정보는 SUSE Linux Enterprise High Availability Extension에 대한 제품 설명서와 설명서 페이지 sbd.8 및 stonith_sbd.8을 참조하십시오.
디스크리스 SBD에서는 3개 이상의 클러스터 노드가 필요합니다. 디스크리스 SBD 메커니즘의 경우 펜싱을 위한 공유 드라이브를 사용하지 않아도 되는 이점이 있습니다.
두 노드 모두 동일한 네트워크 세그먼트(레이어 2)에 위치합니다. 오버레이 IP 주소 및 로드 밸런서 기능 등 클라우드 환경에서 제공되는 동일한 방법도 괜찮습니다. 클라우드별 가이드를 따라 SUSE Linux Enterprise Server for SAP Applications 클러스터를 설정하십시오.
<sid>adm과 같은 기술 사용자 및 그룹은 Linux 시스템에 로컬로 정의됩니다.
클러스터 노드의 이름 확인 및 가상 IP 주소는 모든 클러스터 노드에서 로컬로 수행되어야 합니다.
NTP 등 클러스터 노드 간 시간 동기화.
두 SAP HANA 인스턴스(기본 및 보조) 모두 동일한 SAP 식별자(SID) 및 인스턴스 번호를 갖습니다.
클러스터 노드가 다른 데이터 센터 또는 데이터 센터 영역에 설치된 경우에는 환경이 SUSE Linux Enterprise High Availability Extension 클러스터 제품의 요구 사항과 일치해야 합니다. 노드 사이의 네트워크 지연 및 권장 최대 거리에 특히 유의해야 합니다. 이와 관련한 권장 사항에 대해서는 SUSE Linux Enterprise High Availability Extension의 제품 설명서를 참조하십시오.
인수 후 장애가 발생한 기본 인스턴스의 자동 등록.
프로젝트를 시작하기 위한 좋은 구성으로, 장애 발생 기본 인스턴스의 자동 등록을 끄는 것이 좋습니다.
AUTOMATED_REGISTER="false"
설정이 기본값입니다. 이러한 경우에는 인수 후에 장애가 발생한 인스턴스를 수동으로 등록해야 합니다. SAP HANA Cockpit 또는 hdbnsutil 등의 SAP 도구를 사용하십시오.최적의 자동화를 위해서는
AUTOMATED_REGISTER="true"
를 사용하는 것이 좋습니다.
시스템 재부팅 동안 SAP HANA 인스턴스 자동 시작을 꺼야 합니다.
다중 테넌트(MDC) 데이터베이스가 지원됩니다.
다중 테넌트 데이터베이스는 기타 설정(성능 기반, 비용 최정화 및 다중 계층)과 조합하여 사용할 수 있습니다.
MDC 구성에서 SAP HANA RDBMS는 모든 데이터베이스 컨테이너가 포함된 단일 시스템으로 취급됩니다. 그러므로 클러스터 인수는 개별 데이터베이스 컨테이너의 상태와 관계없이 전체 RDBMS 상태에 따라 결정됩니다.
SAP HANA 1.0의 경우, 프로덕션 중 테넌트를 중지하고 클러스터가 인수를 수행할 수 있도록 하려면 SPS10 rev3, SPS11 이상 버전이 필요합니다. 기존 SAP HANA 버전에서는 테넌트가 중지되면 시스템 복제를 실패로 표시합니다.
다중 테넌트 데이터베이스에서 테스트를 수행하면 테넌트가 강하게 분리된 경우 다양한 테스트 절차가 수행됩니다. 예를 들어, HDB kill을 사용한 전체 SAP HANA 인스턴스 종료가 작동하지 않습니다. 왜냐하면 테넌트가 다른 Linux 사용자 UID로 실행되기 때문입니다. <sidadm>을 사용하여 기타 테넌트 사용자 프로세스를 종료할 수 없습니다.
최소한으로 SAPHanaSR 버전 0.153이 있어야 하며 최상으로는 SUSE Linux Enterprise Server for SAP Applications 15 SP1 이상이 필요합니다. 설명된 모든 설정에서는 SPS09(095) 이후부터 SAP HANA 1.0이 지원됩니다. 알려진 모든 SPS 버전에서는 SAP HANA 2.0이 지원됩니다.
유효한 STONITH 메서드가 없는 경우에는 전체 클러스터가 지원되지 않고 올바르게 작동하지 않습니다.
다양한 시나리오를 구현해야 하는 경우에는 SUSE를 사용한 PoC를 정의하는 것이 매우 좋습니다. 이 PoC는 시나리오에서 기존 솔루션의 테스트를 집중적으로 다룹니다. 위에서 언급된 대부분의 제한은 세밀한 테스트가 필요하기 때문입니다.
SAP HANA뿐만 아니라 SAP 호스트 에이전트를 시스템에 설치해야 합니다.
3 본 문서의 범위 #
본 문서에서는 시스템 복제 시나리오에서 SAP HANA를 제어하는 클러스터 설정 방법에 대한 설명이 제공됩니다. 그리고 이미 설치되어 작동 중인 SAP HANA를 시스템 복제와 통합하는 단계를 집중적으로 설명합니다.
설명된 예시 설정에서는 SAP 15 SP1 시스템용 2개의 SLES에 설치된 2개의 Walldorf(WDF) 및 Rot(ROT) 데이터 센터에 SAP HANA HA 클러스터를 구축합니다.
YaST 마법사를 사용하여 수동으로 또는 사용자의 자체 자동화를 사용하여 클러스터를 설정할 수 있습니다.
YaST 마법사를 사용하는 경우에는 yast sap_ha 바로 가기를 사용하여 모듈을 시작할 수 있습니다. YaST를 사용한 SAPHanaSR 설정 절차는 SUSE Linux Enterprise Server for SAP Applications 제품 설명서의 SAP HANA 클러스터 설정(https://documentation.suse.com/sles-sap/15-SP1/single-html/SLES4SAP-guide/#cha-s4s-cluster) 섹션에서 설명합니다.
본 가이드는 클러스터의 수동 설정을 중심으로 세부 정보를 설명하고 사용자가 자체 자동화를 구축할 수 있는 기회를 제공합니다.
7개의 기본 설정 단계는 다음과 같습니다.
계획 수립(4절 “설치 계획 수립” 참조)
OS 설치(5절 “운영 체제 설정” 참조)
데이터베이스 설치(6절 “두 클러스터 노드 모두에 SAP HANA 데이터베이스 설치” 참조)
SAP HANA 시스템 복제 설정(7절 “SAP HANA 시스템 복제 설정” 참조
SAP HANA HA/DR 공급자 후크(8절 “SAP HANA HA/DR 제공자 설정” 참조)
클러스터 구성(9절 “클러스터 구성” 참조)
테스트(10절 “클러스터 테스트” 참조)
4 설치 계획 수립 #
설치 계획 수립은 성공적인 SAP HANA 클러스터 설정을 위해 필수적입니다.
시작하기 전 필요한 사항:
SUSE 제공 소프트웨어: SUSE Linux Enterprise Server for SAP Applications 설치 미디어, 유효한 구독 및 업데이트 채널에 대한 액세스
SAP 제공 소프트웨어: SAP HANA 설치 미디어
디스크 포함 물리적 또는 가상 시스템
작성된 파라미터 시트(아래 4.2절 “파라미터 시트” 참조)
4.1 최소 랩 요구 사항 및 필수 구성 요소 #
여기에서 설명하는 최소 랩 요구 사항은 SAP 크기 조정 정보가 아닙니다. 이러한 데이터는 설명되는 클러스터를 테스트 목적으로 랩에 재구축하기 위한 목적으로만 제공됩니다. 이러한 테스트의 경우에도 테스트 시나리오에 따라 요구 사항이 증가할 수 있습니다. 생산적 시스템의 경우 하드웨어 벤더에게 요청하거나 공식 SAP 크기 조정 도구 및 서비스를 사용하십시오.
허용되는 저장소 구성 및 파일 시스템과 관련해서는 SAP HANA TDI 설명서를 참조하십시오.
사이트당 1개의 SAP 인스턴스 요구 사항(1:1) - 대부분 제조사 제외(2 노드 클러스터):
각각 32GB RAM, 50GB 시스템 디스크 여유 공간이 있는 VM 2개
10MB의 디스크 여유 공간이 있는 SBD용 공유 디스크 1개
각각 96GB의 SAP HANA용 용량이 있는 데이터 디스크 2개(사이트당 1개)
인수를 위한 추가 IP 주소 1개
읽기 지원 설정을 위한 IP 주소 1개(선택 사항)
HAWK Administration GUI를 위한 IP 주소 1개(선택 사항)
사이트당 1개의 SAP 인스턴스 요구 사항(1:1) - 대부분 제조사 포함(3 노드 클러스터):
각각 32GB RAM, 50GB 시스템 디스크 여유 공간이 있는 VM 2개
2GB RAM, 50GB 시스템 디스크 여유 공간이 있는 VM 1개
각각 96GB의 SAP HANA용 용량이 있는 데이터 디스크 2개(사이트당 1개)
인수를 위한 추가 IP 주소 1개
읽기 지원 설정을 위한 IP 주소 1개(선택 사항)
HAWK Administration GUI를 위한 IP 주소 1개(선택 사항)
4.2 파라미터 시트 #
SAP HANA 사이트 2개로 구성되는 클러스터를 설정하는 것은 매우 단순하지만 설치 계획은 올바르게 수행되어야 합니다. 그리고 SID, IP 주소 등 필요한 모든 파라미터가 사용되어야 합니다. 우선 파라미터 시트를 작성한 후 설치를 시작하는 것이 좋습니다.
파라미터 | 값 | 역할 |
---|---|---|
노드 1 | 클러스터 노드 이름 및 IP 주소. | |
노드 2 | 클러스터 노드 이름 및 IP 주소. | |
SID | SAP 시스템 식별자 | |
인스턴스 번호 | SAP HANA 데이터베이스 번호. 시스템 복제를 위해서는 인스턴스 번호+1도 차단됩니다. | |
네트워크 마스크 | ||
vIP 기본 | 기본 SAP HANA 사이트에 지정될 가상 IP 주소 | |
vIP 보조 | 읽기 지원 보조 SAP HANA 사이트에 지정될 가상 IP 주소(선택 사항) | |
저장소 | HDB 데이터 및 로그 파일용 저장소는 "로컬"로 연결됩니다(공유 방식이 아닌 노드당). | |
SBD | STONITH 장치(프로덕션용 2개) | |
HAWK 포트 |
| |
NTP 서버 | 시간 서버의 주소 또는 이름 |
파라미터 | 값 | 역할 |
---|---|---|
노드 1 |
| 클러스터 노드 이름 및 IP 주소. |
노드 2 |
| 클러스터 노드 이름 및 IP 주소. |
SID |
| SAP 시스템 식별자 |
인스턴스 번호 |
| SAP HANA 데이터베이스 번호. 시스템 복제를 위해서는 인스턴스 번호+1도 차단됩니다. |
네트워크 마스크 |
| |
vIP 기본 |
| |
vIP 보조 |
| (선택) |
저장소 | HDB 데이터 및 로그 파일용 저장소는 "로컬"로 연결됩니다(공유 방식이 아닌 노드당). | |
SBD |
| STONITH 장치(프로덕션용 2개) |
HAWK 포트 |
| |
NTP 서버 | pool pool.ntp.org | 시간 서버의 주소 또는 이름 |
5 운영 체제 설정 #
본 섹션에서는 운영 체제 설치 중에 고려해야 하는 정보를 설명합니다.
본 문서의 범위를 위해, 먼저 SUSE Linux Enterprise Server for SAP Applications가 설치 및 구성됩니다. 그리고 시스템 복제가 포함된 SAP HANA 데이터베이스가 설정됩니다. 마지막으로 클러스터 포함 자동화가 설정 및 구성됩니다.
5.1 SUSE Linux Enterprise Server for SAP Applications 설치 #
특정 방법으로 서버를 설정하기 위한 다양한 이유로 다중 설치 가이드가 이미 제공되고 있습니다. 이 정보를 찾을 수 있는 위치는 아래에서 제공됩니다. 또한, 시스템의 올바른 작동을 위해 고려해야 하는 중요한 세부 정보도 확인할 수 있습니다.
5.1.1 기본 운영 체제 설치 #
사용되는 인프라 및 하드웨어에 따라 설치를 조정해야 합니다. 지원되는 모든 설치 방법 및 최소 요구 사항에 대한 설명은 배포 가이드(https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-sle-deployment.html)에서 제공됩니다. 자동 설치의 경우에는 AutoYaST 가이드(https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-autoyast.html)에서 자세한 정보를 살펴볼 수 있습니다. SAP HANA의 모든 요구 사항을 충족하는 SUSE Linux Enterprise Server for SAP Applications에 대한 기본 설치 가이드는 다음 SAP 노트에서 확인할 수 있습니다.
2578899 SUSE LINUX Enterprise Server 15: 설치 노트 및
2684254 SAP HANA DB: SLES 15 / SLES for SAP Applications 15용 권장 OS 설정
5.1.2 추가 소프트웨어 설치 #
SUSE는 SAP HANA를 위한 SUSE Linux Enterprise Server for SAP Applications 리소스 에이전트를 제공합니다. sap-hana 패턴과 함께 SAP HANA용 리소스 에이전트인 scale-up이 설치됩니다. scale-out 시나리오의 경우에는 특수 리소스 에이전트가 필요합니다. SAP 노트 1984787에 따라 시스템을 설치한 경우에는 각 노드에서 아래 지침을 따르십시오. High Availability 패턴은 주요 제조사를 포함한 모든 노드에 설치하도록 권장되는 모든 도구를 요약하여 제공합니다.
모든 노드에
High Availability
패턴 설치suse01:~> zypper in --type pattern ha_sles
모든 노드에
SAPHanaSR
리소스 에이전트 설치suse01:~> zypper in SAPHanaSR SAPHanaSR-doc
자세한 정보는 SUSE Linux Enterprise High Availability Extension, 설치 및 기본 설정을 참조하십시오.
6 두 클러스터 노드 모두에 SAP HANA 데이터베이스 설치 #
이 문서는 설치된 SAP HANA와 pacemaker 클러스터에 이미 설정된 시스템 복제의 통합을 중점적으로 다루지만 이 장에서는 테스트 환경을 요약 설명합니다. 항상 SAP의 공식 문서를 사용하여 SAP HANA를 설치하고 시스템 복제를 설정하십시오.
6.1 두 클러스터 노드 모두에 SAP HANA 데이터베이스 설치 #
SAP Marketplace에서 제공되는 SAP 설치 및 설정 설명서를 정독합니다.
SAP Marketplace에서 SAP HANA 소프트웨어를 다운로드합니다.
SAP HANA Server 설치 가이드에 설명된 대로 SAP HANA 데이터베이스를 설치합니다.
SAP 호스트 에이전트가 모든 클러스터 노드에 설치되었는지 확인합니다. SAP 서비스가 설치되지 않은 경우 지금 설치합니다.
데이터베이스 2개 모두가 작동 중이고 이러한 데이터베이스의 모든 프로세스가 올바르게 실행 중인지 확인합니다.
Linux 사용자 <sid>adm로 명령줄 도구 HDB를 사용하여 실행 중인 HANA 프로세스에 대한 개요를 살펴볼 수 있습니다. HDB
info
의 출력은 아래 출력과 유사해야 합니다.
suse02:ha1adm> HDB info USER PID PPID ... COMMAND ha1adm 13017 ... -sh ha1adm 13072 ... \_ /bin/sh /usr/sap/HA1/HDB10/HDB info ha1adm 13103 ... \_ ps fx -U ha1adm -o user:8,pid:8,ppid:8,pcpu:5,vsz:10,rss:10,args ha1adm 9268 ... hdbrsutil --start --port 31003 --volume 2 --volumesuffix mnt00001/hdb00002.00003 --identifier 1580897137 ha1adm 8911 ... hdbrsutil --start --port 31001 --volume 1 --volumesuffix mnt00001/hdb00001 --identifier 1580897100 ha1adm 8729 ... sapstart pf=/hana/shared/HA1/profile/HA1_HDB10_suse02 ha1adm 8738 ... \_ /usr/sap/HA1/HDB10/suse02/trace/hdb.sapHA1_HDB10 -d -nw -f /usr/sap/HA1/HDB10/suse02/daemon.ini pf=/usr/sap/HA1/SYS/profile/HA1_HDB10_suse02 ha1adm 8756 ... \_ hdbnameserver ha1adm 9031 ... \_ hdbcompileserver ha1adm 9034 ... \_ hdbpreprocessor ha1adm 9081 ... \_ hdbindexserver -port 31003 ha1adm 9084 ... \_ hdbxsengine -port 31007 ha1adm 9531 ... \_ hdbwebdispatcher ha1adm 8574 ... /usr/sap/HA1/HDB10/exe/sapstartsrv pf=/hana/shared/HA1/profile/HA1_HDB10_suse02 -D -u ha1adm
7 SAP HANA 시스템 복제 설정 #
자세한 정보는 SAP HANA 관리 가이드의 시스템 복제 설정 섹션에서 확인할 수 있습니다.
절차
기본 데이터베이스 백업
기본 데이터베이스 활성화
보조 데이터베이스 등록
시스템 복제 확인
7.1 기본 데이터베이스 백업 #
SAP HANA 관리 가이드의 SAP HANA 데이터베이스 백업 및 복구 섹션의 설명을 따라 기본 데이터베이스를 백업합니다. SQL 명령이 포함된 예시가 제공됩니다. 사용자는 사용하는 백업 인프라에 맞게 이러한 백업 명령을 조정해야 합니다.
<sidadm> 사용자로 다음 명령 입력 시:
hdbsql -u SYSTEM -d SYSTEMDB \ "BACKUP DATA FOR FULL SYSTEM USING FILE ('backup')"
다음과 같은 출력(또는 유사 출력)이 제공됨:
0 rows affected (overall time 15.352069 sec; server time 15.347745 sec)
<sidadm> 사용자로 다음 명령 입력:
hdbsql -i <instanceNumber> -u <dbuser> \ "BACKUP DATA USING FILE ('backup')"
올바르게 백업하지 않으면 SAP HANA를 시스템 복제 구성으로 가져올 수 없습니다.
7.2 기본 노드 활성화 #
Linux 사용자 <sid>adm으로 기본 노드에서 시스템 복제를 활성화합니다. 사이트 이름(예: WDF)을 정의해야 합니다. 이 사이트 이름은 시스템 복제를 통해 연결된 모든 SAP HANA 데이터베이스에서 고유해야 합니다. 즉, 보조 사이트는 이름이 달라야 합니다.
"primary" 및 "secondary"와 같은 문자열을 사이트 이름으로 사용하지 마십시오.
-sr_enable 옵션을 사용하여 기본 사이트를 활성화합니다.
suse01:~> hdbnsutil -sr_enable --name=WDF checking local nameserver: checking for active nameserver ... nameserver is running, proceeding ... configuring ini files ... successfully enabled system as primary site ... done.
hdbnsutil -sr_stateConfiguration
명령을 사용하여 기본 사이트를 확인합니다.
suse01:~> hdbnsutil -sr_stateConfiguration --sapcontrol=1 SAPCONTROL-OK: <begin> mode=primary site id=1 site name=WDF SAPCONTROL-OK: <end> done.
모드가 "none"에서 "primary"로 변경되며 이제 사이트가 사이트 이름 및 사이트 ID를 갖습니다.
7.3 보조 노드 등록 #
보조 사이트에서 SAP HANA 데이터베이스 인스턴스를 중지한 후 인스턴스를 시스템 복제를 위해 등록할 수 있습니다. 원하는 방법을 사용하여 인스턴스(예: HDB
또는 sapcontrol
)를 중지합니다. 데이터베이스 인스턴스가 중지되면 hdbnsutil
을 사용하여 인스턴스를 등록할 수 있습니다. 다시 한 번, Linux 사용자 <sid>adm:을 사용합니다.
보조 사이트를 중지하려면 HDB 명령줄 도구를 사용할 수 있습니다.
suse02:~> HDB stop
SAP HANA 2.0부터 시스템 복제는 암호화되어 실행됩니다. 그러므로 키 파일을 기본 사이트에서 보조 사이트로 복사해야 합니다.
cd /usr/sap/<SID>/SYS/global/security/rsecssfs rsync -va {,<node1-siteB>:}$PWD/data/SSFS_<SID>.DAT rsync -va {,<node1-siteB>:}$PWD/key/SSFS_<SID>.KEY
보조 사이트는 hdbnsutil -sr_register …를 호출하여 등록할 수 있습니다.
... suse02:~> hdbnsutil -sr_register --name=ROT \ --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay adding site ... checking for inactive nameserver ... nameserver suse02:30001 not responding. collecting information ... updating local ini files ... done.
이 사례에서는 remoteHost가 기본 노드이며 remoteInstance는 데이터베이스 인스턴스 번호(여기서는 10)입니다.
이제 데이터베이스 인스턴스를 다시 시작하고 시스템 복제 상태를 확인합니다. 보조 노드에서 모드는 "SYNC" 또는 "SYNCMEM” 중 하나여야 합니다. "ASYNC”도 가능한 복제 모드이지만, 자동화된 클러스터 인수에서는 지원되지 않습니다. 모드는 보조 사이트 등록 중에 정의한 sync 옵션에 따라 다릅니다.
새 보조 사이트를 시작하려면 HDB 명령줄 도구를 사용할 수 있습니다. 그리고 hdbnsutil -sr_stateConfiguration
을 사용하여 SR 구성을 확인합니다.
suse02:~> HDB start ... suse02:~> hdbnsutil -sr_stateConfiguration --sapcontrol=1 SAPCONTROL-OK: <begin> mode=sync site id=2 site name=ROT active primary site=1 primary masters=suse01 SAPCONTROL-OK: <end> done.
전체 SAP HANA 클러스터의 복제 상태를 확인하려면 기본 노드에서 <sid>adm 사용자로 다음 명령을 사용합니다.
python 스크립트 systemReplicationStatus.py는 현재 시스템 복제에 대한 세부 정보를 제공합니다.
suse01:~> HDBSettings.sh systemReplicationStatus.py --sapcontrol=1 ... site/2/SITE_NAME=ROT1 site/2/SOURCE_SITE_ID=1 site/2/REPLICATION_MODE=SYNC site/2/REPLICATION_STATUS=ACTIVE site/1/REPLICATION_MODE=PRIMARY site/1/SITE_NAME=WDF1 local_site_id=1 ...
7.4 SAP HANA SR 인수의 수동 테스트 #
SAP HANA 시스템 복제를 클러스터로 통합하기 전에는 수동 인수를 수행해야 합니다. 클러스터를 제외하고 테스트를 수행하여 기본 작동(인수 및 등록)이 올바르게 수행되는지 확인합니다.
노드 1에서 SAP HANA 중지
SAP HANA를 노드 2로 인수
노드 1을 보조로 등록
노드 1에서 SAP HANA 시작
동기화 상태가 활성화될 때까지 대기
7.5 선택 사항: SAP HANA SR을 원래 상태로 수동으로 다시 수립 #
시스템을 원래 상태로 되돌리기:
노드 2에서 SAP HANA 중지
SAP HANA를 노드 1로 인수
노드 2를 보조로 등록
노드 2에서 SAP HANA 시작
동기화 상태가 활성화될 때까지 대기
8 SAP HANA HA/DR 제공자 설정 #
이 단계는 보조가 동기화되지 않은 경우 클러스터에 즉시 통지하기 위한 필수 단계입니다. 보조가 동기화되지 않는 시점에 HA/DR 제공자 인터페이스를 사용하여 SAP HANA가 후크를 호출합니다. 이는 일반적으로 대기 중인 첫 번째 커밋이 릴리스되는 경우입니다. 시스템 복제가 다시 수행되면 SAP HANA가 후크를 다시 호출합니다.
절차
python 후크 SAPHanaSR 구현
시스템 복제 작동 모드 구성
<sidadm>이 클러스터에 액세스하도록 허용
SAP HANA 시작
후크 통합 테스트
8.1 python 후크 SAPHanaSR 구현 #
이 단계는 두 사이트 모두에서 수행되어야 합니다. SAP HANA를 중지한 후 global.ini를 변경하고 시작하는 동안에 SAP HANA를 HA/DR 후크 스크립트에 통합해야 합니다.
HA/DR 후크 스크립트를 읽기/쓰기 가능 디렉토리에 설치
후크를 global.ini에 통합(오프라인에서 수행할 수 있도록 SAP HANA를 중지해야 함)
시작하는 동안 후크 통합 확인
SAPHanaSR 패키지에서 제공되는 후크를 사용합니다(0.153 버전부터 사용 가능). 선택 사항으로 원하는 디렉토리(예: /hana/share/myHooks)에 복사합니다. 후크는 모든 SAP HANA 클러스터 노드에서 사용할 수 있어야 합니다.
HDB 또는 sapcontrol을 사용하여 SAP HANA를 중지합니다.
sapcontrol -nr <instanceNumber> -function StopSystem
[ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /usr/share/SAPHanaSR execution_order = 1 [trace] ha_dr_saphanasr = info
8.2 시스템 복제 작동 모드 구성 #
시스템이 SAPHanaSR 대상으로 연결된 경우에는 global.ini에서 작동 모드를 정의하는 항목을 찾을 수 있습니다. 현재 사용할 수 있는 모드는 다음과 같습니다.
delta_datashipping
logreplay
logreplay_readaccess
반대 방향으로 인수 및 재등록될 때까지는 기본 사이트에 작업 모드에 대한 항목이 없습니다. 사용할 수 있는 첫 번째 작동 모드는 delta_datashipping였습니다. 현재 HA용으로 선호되는 모드는 logreplay 또는 logreplay_readaccess입니다. logreplay 작동 모드를 사용하여 SAP HANA 시스템 복제에서 보조 사이트를 상시 대기 시스템으로 설정합니다. 모든 작동 모드에 대한 자세한 내용은 "SAP HNA를 위한 시스템 복제 수행 방법"과 같은 SAP 문서에서 확인할 수 있습니다.
양쪽 global.ini 파일 모두를 확인하고 필요한 경우 작동 모드를 추가합니다.
- 섹션
[ system_replication ]
- 항목
operation_mode = logreplay
global.ini 경로: /hana/shared/<SID>/global/hdb/custom/config/
[system_replication] operation_mode = logreplay
8.3 <sidadm>이 클러스터에 액세스하도록 허용 #
현재 SAPHanaSR python 후크 버전에서는 sudo
명령을 사용하여 <sidadm> 사용자가 클러스터 특성에 액세스하도록 허용할 수 있습니다. Linux에서는 visudo
를 사용하여 /etc/sudoers 구성 파일을 vi 편집기에서 시작할 수 있습니다.
<sidadm> 사용자는 hana_<sid>_site_srHook_* 클러스터 특성을 설정할 수 있어야 합니다. SAP HANA 시스템 복제 후크는 암호를 사용하지 않고 액세스할 수 있어야 합니다. 다음 예시는 sudo 액세스를 필요한 특성으로만 설정하도록 제한합니다.
소문자 SAP 시스템 ID(예: ha1
)로 <sid>를 바꿉니다.
<sidadm> 사용자가 srHook를 사용할 수 있도록 해주는 기본 sudoers 항목.
# SAPHanaSR-ScaleUp entries for writing srHook cluster attribute <sidadm> ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_*
고수준의 보안을 충족하는 보다 구체적인 sudoers 항목. 모든 Cmnd_Alias 항목은 단일 라인 항목으로 각각 정의되어야 합니다. 다음 예시에서 라인에는 문서 서식에 따라 강제로 줄 바꿈이 포함될 수 있습니다. 예시에는 Cmnd_Alias 항목, <sidadm> 사용자를 위한 라인 1개 및 주석을 위한 1개 이상의 라인이 포함된 4개의 별도 라인이 있습니다.
# SAPHanaSR-ScaleUp entries for writing srHook cluster attribute Cmnd_Alias SOK_SITEA = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteA> -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEA = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteA> -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias SOK_SITEB = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteB> -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEB = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteB> -v SFAIL -t crm_config -s SAPHanaSR <sidadm> ALL=(ALL) NOPASSWD: SOK_SITEA, SFAIL_SITEA, SOK_SITEB, SFAIL_SITEB
9 클러스터 구성 #
이 장에서는 SUSE Linux Enterprise High Availability Extension 클러스터 소프트웨어의 구성에 대해 설명하고, 이는 SUSE Linux Enterprise Server for SAP Applications 및 SAP HANA 데이터베이스 통합의 일부입니다.
기본 클러스터 구성
클러스터 속성 및 리소스 구성
9.1 기본 클러스터 구성 #
첫 번째 단계는 기본 클러스터 프레임워크를 설정하는 것입니다. 편의를 위해 ha-cluster-init 스크립트에서 YaST2를 사용하십시오. 두 번째 corosync 링을 추가하고 UCAST 통신으로 변경한 후 시간 제한 값을 환경에 따라 조정하는 것이 매우 좋습니다.
9.1.1 "저장소 기반 펜싱”을 위한 Watchdog 설정 #
SBD 펜싱 메커니즘(디스크리스 또는 디스크 기반)을 사용하는 경우에는 watchdog도 구성해야 합니다. 시스템이 더 이상 SBD(디스크리스 또는 디스크 기반)에 액세스할 수 없는 경우 노드를 재설정하려면 watchdog이 필요합니다. Linux 시스템은 watchdog 드라이버를 로드하도록 구성되어야 합니다. hpwdt 또는 iTCO_wdt 등 하드웨어 # 지원(대부분의 최신 시스템에서 사용 가능)과 함께 watchdog을 사용하는 것이 매우 좋습니다. softdog 모듈을 대안으로 사용할 수 있습니다.
Watchdog 타이머에 액세스: 다른 소프트웨어는 watchdog 타이머에 액세스하지 않아야 하며 한 번에 1개의 프로세스만 액세스해야 합니다. 일부 하드웨어 벤더는 시스템 재설정용으로 watchdog을 사용하는 시스템 관리 소프트웨어를 제공합니다(예: HP ASR 데몬). 그러한 소프트웨어는 SBD에서 watchdog을 사용하는 경우 비활성화되어야 합니다.
올바른 watchdog 모듈을 결정합니다. 아니면, 터널 버전에 설치된 드라이버 목록을 살펴볼 수도 있습니다.
ls -l /lib/modules/$(uname -r)/kernel/drivers/watchdog
기존에 로드된 watchdog 모듈이 있는지 확인합니다.
lsmod | egrep "(wd|dog|i6|iT|ibm)"
결과가 제공되면 시스템이 이미 로드된 watchdog이 있는 것입니다. watchdog이 watchdog 장치와 일치하지 않으면 모듈의 로드를 해제해야 합니다.
모듈을 안전하게 언로드하려면 응용 프로그램에서 watchdog 장치가 사용 중인지의 여부를 우선 확인하십시오.
lsof /dev/watchdog rmmod <wrong_module>
watchdog 모듈을 활성화하고 영구로 설정합니다. 아래 예시에서는 일부 제약이 있는 softdog이 사용되며 우선 옵션으로 사용되지 않아야 합니다.
echo softdog > /etc/modules-load.d/watchdog.conf systemctl restart systemd-modules-load
watchdog 모듈이 올바르게 로드되었는지 확인합니다.
lsmod | grep dog ls -l /dev/watchdog
간단한 작업으로 watchdog 테스트를 수행할 수 있습니다. watchdog으로 인해 시스템에서 불완전한 재설정/종료가 수행되므로 우선 SAP HANA를 전환해야 합니다.
하드웨어 watchdog을 사용하는 경우에는 watchdog 시간 제한이 도달한 후 원하는 동작이 사전 정의됩니다. watchdog 모듈이 로드되고 다른 응용 프로그램에 의해 제어되지 않는 경우에는 다음을 수행하십시오.
계속해서 업데이트하지 않고 watchdog을 트리거하면 watchdog이 시스템을 재설정/종료합니다. 이는 의도된 방식입니다. 다음 명령은 시스템을 강제로 재설정/종료합니다.
touch /dev/watchdog
softdog 모듈이 사용되는 경우에는 다음 동작을 수행할 수 있습니다.
echo 1> /dev/watchdog
테스트가 완료된 후에는 모든 클러스터 멤버에 watchdog을 구현해야 합니다.
9.1.2 ha-cluster-init
을 사용한 초기 클러스터 설정 #
자세한 정보는 SUSE Linux Enterprise High Availability Extension의 자동 클러스터 설정을 참조하십시오.
ha-cluster-init
명령을 사용하여 초기 설정을 생성한 후 대화 상자를 따릅니다. 첫 번째 클러스터 노드에서 이 작업을 수행해야 합니다.
suse01:~> ha-cluster-init -u -s <sbddevice>
이 명령을 수행하면 다음이 포함된 기본 클러스터 프레임워크가 구성됩니다.
SSH 키
구성 파일을 전송하기 위한 csync2
SBD(장치 1개 이상)
corosync(링 1개 이상)
HAWK 웹 인터페이스
ha-cluster-init
의 요청에 따라 hacluster 사용자의 암호를 변경합니다.
9.1.3 Corosync 및 SBD 구성 조정 #
두 번째 corosync 링을 추가하는 것이 좋습니다. -u 옵션을 사용하여 ha-cluster-init을 시작하지 않은 경우에는 UCAST 통신을 사용하도록 corosync를 변경해야 합니다. UCAST를 중지하려면 systemctl stop pacemaker
를 사용하여 기존에 실행 중인 클러스터를 중지합니다. corosync 구성 및 SBD 파라미터를 설정한 후 클러스터를 다시 시작합니다.
9.1.3.1 Corosync 구성 #
/Etc/corosync/corosync.conf 파일에서 다음 블록을 확인하십시오. 또한, 이 문서의 마지막 부분에서 제공되는 예시도 참조하십시오.
totem { ... interface { ringnumber: 0 mcastport: 5405 ttl: 1 } #Transport protocol transport: udpu } nodelist { node { #ring0 address ring0_addr: 192.168.1.11 nodeid: 1 } }
9.1.3.2 SBD 구성 조정 #
SBD 장치가 없는 경우에는 이 섹션을 건너뛰어도 되지만, 지원되는 다른 펜싱 메커니즘을 구현해야 합니다.
자세한 내용은 sbd.8 및 stonith_sbd.7 기본 페이지를 참조하십시오.
파라미터 | 설명 |
---|---|
SBD_WATCHDOG_DEV | watchdog 장치를 정의합니다. watchdog 사용은 필수입니다. watchdog이 없는 경우 SBD가 올바르게 작동하지 않습니다. watchdog 설정과 관련해서는 SLES 설명서 및 SUSE TIDs 7016880를 참조하십시오. |
SBD_WATCHDOG_TIMEOUT | 시간 제한(초)을 정의합니다. watchdog은 사용자가 없어 노드에서 경고가 발생할 때까지 대기합니다. 이 파라미터는 사용자의 저장소 환경과 일치해야 합니다. 저장소가 30초 동안 중단될 수 있는 경우에는 이 파라미터를 더 높은 값으로 설정해야 합니다. 일반적인 설정 값인 5초는 프로덕션 환경에서는 너무 적극적일 수 있습니다. pacameker 클러스터 속성 stonith-watchdog-timeout에 따라서도 파라미터를 조정해야 합니다. stonith-watchdog-timeout 속성은 SBD_WATCHDOG_TIMEOUT의 값보다 크거나 같게 설정해야 합니다. SUSE Linux Enterprise High Availability Extension 15부터는 |
SBD_STARTMODE | 모드를 시작합니다. |
SBD_PACEMAKER | Pacemaker 쿼럼 및 노드 상태를 확인합니다. |
다음에서 /dev/disk/by-id/SBDA 및 /dev/disk/by-id/SBDB를 실제 SBD 장치 이름으로 바꿉니다. 예를 들면, SBD_WATCHDOG_TIMEOUT
를 15초로 설정하여 일반적인 5초보다 덜 적극적으로 설정합니다.
# /etc/sysconfig/sbd SBD_DEVICE="/dev/disk/by-id/SBDA;/dev/disk/by-id/SBDB" SBD_WATCHDOG_DEV="/dev/watchdog" SBD_WATCHDOG_TIMEOUT=15 SBD_PACEMAKER="yes" SBD_STARTMODE="clean" SBD_OPTS=""
시간 제한 계산 방법에 대한 자세한 내용은 SUSE 제품 문서(https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#sec-ha-storage-protect-watchdog-timings)도 참조하십시오.
9.1.3.3 SBD 장치 확인 #
SBD 장치가 없는 경우에는 이 섹션을 건너뛰어도 되지만, 지원되는 펜싱 메커니즘을 구현해야 합니다.
두 노드 모두에서 SBD 장치에 액세스할 수 있고 SBD 장치에 유효한 레코드가 있는지를 확인하는 것이 좋습니다. /etc/sysconfig/sbd에서 구성된 모든 장치에 대하여 이를 확인합니다.
suse01:~ # sbd -d /dev/disk/by-id/SBDA dump ==Dumping header on disk /dev/disk/by-id/SBDA Header version : 2.1 UUID : 0f4ea13e-fab8-4147-b9b2-3cdcfff07f86 Number of slots : 255 Sector size : 512 Timeout (watchdog) : 20 Timeout (allocate) : 2 Timeout (loop) : 1 Timeout (msgwait) : 40 ==Header on disk /dev/disk/by-id/SBDA is dumped
예시의 시간 제한 값은 시작 값에 불과하며, 환경에 따라 조정해야 합니다.
여러 클러스터 노드에 대한 현재 SBD 항목을 확인하려면 sbd list
를 사용할 수 있습니다. 모든 항목이 clear
인 경우에는 SBD 장치에 펜싱 작업이 표시되지 않습니다.
suse01:~ # sbd -d /dev/disk/by-id/SBDA list 0 suse01 clear
SBD 구성 파라미터에 대한 자세한 내용은 SUSE Linux Enterprise High Availability Extension의 저장소 기반 펜싱 섹션 및 TID 7016880과 7008216을 참조하십시오.
이제 첫 번째 노드에서 클러스터를 다시 시작합니다(systemctl start pacemaker
).
9.1.4 두 번째 노드의 클러스터 구성 #
2개 노드 클러스터의 두 번째 노드는 ha-cluster-join
명령을 사용하여 통합할 수 있습니다. 이 명령은 첫 번째 클러스터 노드의 IP 주소 또는 이름을 요청합니다. 그러면 필요한 모든 구성 파일이 복사됩니다. 그 결과 두 노드 모두에서 클러스터가 시작됩니다.
# ha-cluster-join -c <host1>
9.1.5 처음으로 클러스터 확인 #
이제 두 노드에서 처음으로 클러스터를 확인하고 선택 사항으로 클러스터를 시작합니다.
suse01:~ # systemctl status pacemaker suse01:~ # systemctl status sbd suse02:~ # systemctl status pacemaker suse01:~ # systemctl start pacemaker suse02:~ # systemctl status sbd suse02:~ # systemctl start pacemaker
crm_mon을 사용하여 클러스터 상태를 확인합니다. "-r” 옵션을 사용하면 구성되었지만 중지되지 않은 리소스를 살펴볼 수도 있습니다.
# crm_mon -r
이 명령은 “비어 있는” 클러스터를 보여주며 다음 화면 출력과 같은 출력을 제공합니다. 현재 가장 관심이 있는 정보는 “온라인” 상태의 노드가 있다는 것과 “partition with quorum” 메시지입니다.
Stack: corosync Current DC: suse01 (version 2.0.1+20190417.13d370ca9-3.6.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Wed Feb 5 15:06:35 2020 Last change: Wed Feb 5 15:04:42 2020 by hacluster via crmd on suse02 2 nodes configured 1 resource configured Online: [ suse01 suse02 ] Full list of resources: stonith-sbd (stonith:external/sbd): Started suse01
9.2 클러스터 속성 및 리소스 구성 #
이 섹션에서는 SUSE Linux Enterprise High Availability Extension 설명서의 클러스터 리소스 구성 및 관리(명령줄) 섹션의 설명과 같이 crm configure
셸을 사용하여 제약, 리소스, 부트스트랩 및 STONITH를 구성하는 방법을 설명합니다.
crm
명령을 사용하여 CRM에 객체를 추가합니다. 다음 예시를 로컬 파일에 복사하고 파일을 편집한 후 구성을 CIB로 로드합니다.
suse01:~ # vi crm-fileXX suse01:~ # crm configure load update crm-fileXX
9.2.1 클러스터 부트스트랩 등 #
첫 번째 예시는 클러스터 부트스트랩 옵션, 리소스 및 작동 기본값을 정의합니다. stonith-timeout은 SBD msgwait 시간 제한보다 1.2배 커야 합니다.
suse01:~ # vi crm-bs.txt # enter the following to crm-bs.txt property $id="cib-bootstrap-options" \ stonith-enabled="true" \ stonith-action="reboot" \ stonith-timeout="150s" rsc_defaults $id="rsc-options" \ resource-stickiness="1000" \ migration-threshold="5000" op_defaults $id="op-options" \ timeout="600"
이제 클러스터에 구성을 추가합니다.
suse01:~ # crm configure load update crm-bs.txt
9.2.2 STONITH 장치 #
디스크리스 SBD를 사용하는 경우에는 이 섹션을 건너뛰십시오.
다음 구성은 SBD 디스크 STONITH 리소스를 정의합니다.
# vi crm-sbd.txt # enter the following to crm-sbd.txt primitive stonith-sbd stonith:external/sbd \ params pcmk_delay_max="15"
다시 한 번 구성을 클러스터에 추가합니다.
suse01:~ # crm configure load update crm-sbd.txt
IPMI/ILO을 사용한 펜싱과 관련해서는 9.2.3절 “IPMI를 펜싱 메커니즘으로 사용” 섹션을 참조하십시오.
9.2.3 IPMI를 펜싱 메커니즘으로 사용 #
IPMI/ILO 펜싱에 대한 자세한 내용은 클러스터 제품 설명서(https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/)를 참조하십시오. IPMI STONITH 리소스에 대한 예시는 이 문서의 13.4절 “IPMI STONITH 메서드 예시” 섹션에서 확인할 수 있습니다.
IPMI를 사용하려면 원격 관리 보드가 IPMI 표준과 호환되어야 합니다.
IPMI 기반 펜싱을 위해서는 클러스터 노드마다 기본을 구성해야 합니다. 각 리소스는 1개의 클러스터 노드만 펜싱합니다. 원격 관리 보드의 IP 주소 및 로그인 사용자/암호를 STONITH 리소스 에이전트에 맞게 조정해야 합니다. 관리 보드에 대한 루트 액세스를 제공하는 대신 특별 STONITH 사용자를 생성하는 것이 좋습니다. 위치 규칙에서는 호스트가 자체 STONITH 리소스에서 절대로 실행되지 않도록 해야 합니다.
9.2.4 기타 펜싱 메커니즘 사용 #
SBD(최상의 방법) 또는 IPMI(두 번째 방법)를 STONITH 메커니즘으로 사용하는 것이 좋습니다. SUSE Linux Enterprise High Availability 제품은 여기에서 다루지 않는 다른 펜싱 메커니즘도 지원합니다.
펜싱과 관련한 자세한 내용은 SUSE Linux Enterprise High Availability 가이드를 참조하십시오.
9.2.5 SAPHanaTopology #
다음으로 필요한 리소스 그룹을 정의한 후 HANA 인스턴스를 시작할 수 있습니다. 예를 들어, crm-saphanatop.txt와 같이 변경 사항을 텍스트 파일로 준비한 후 다음 명령으로 로드합니다.
crm configure load update crm-saphanatop.txt
# vi crm-saphanatop.txt # enter the following to crm-saphanatop.txt primitive rsc_SAPHanaTopology_HA1_HDB10 ocf:suse:SAPHanaTopology \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="HA1" InstanceNumber="10" clone cln_SAPHanaTopology_HA1_HDB10 rsc_SAPHanaTopology_HA1_HDB10 \ meta clone-node-max="1" interleave="true"
모든 파라미터에 대한 자세한 정보는 다음 명령으로 확인 가능합니다.
man ocf_suse_SAPHanaTopology
다시 한 번 구성을 클러스터에 추가합니다.
suse01:~ # crm configure load update crm-saphanatop.txt
여기서 가장 중요한 파라미터는 SID 및 InstanceNumber이며, SAP 컨텍스트에서 설명이 제공됩니다. 이러한 파라미터외에도 시간 제한 값 또는 작동(시작, 모니터링, 중지)은 일반적으로 조정이 가능합니다.
9.2.6 SAPHana #
다음으로 필요한 리소스 그룹을 정의한 후 HANA 인스턴스를 시작할 수 있습니다. 예를 들어, crm-saphana.txt와 같이 변경 사항을 텍스트 파일로 편집한 후 다음 명령으로 로그합니다.
crm configure load update crm-saphana.txt
파라미터 | 성능 최적화 | 비용 최적화 | 다중 계층 |
---|---|---|---|
PREFER_SITE_TAKEOVER | 참 | 거짓 | 거짓 / 참 |
AUTOMATED_REGISTER | 거짓 / 참 | 거짓 / 참 | 거짓 |
DUPLICATE_PRIMARY_TIMEOUT | 7200 | 7200 | 7200 |
파라미터 | 설명 |
---|---|
PREFER_SITE_TAKEOVER | RA가 실패한 기본 인스턴스를 로컬로 다시 시작하는 대신 보조 인스턴스로 인수할 것인지의 여부를 정의합니다. |
AUTOMATED_REGISTER | 이전 기본 인스턴스가 새 기본 인스턴스의 보조로 자동 등록되는지의 여부를 정의합니다. 이 파라미터를 사용하면 시스템 복제 자동화 수준을 조정할 수 있습니다.
|
DUPLICATE_PRIMARY_TIMEOUT | 이중 기본 인스턴스 상황이 발생하는 경우 기본 인스턴스 타임스탬프 사이에 필요한 시간 차이입니다. 시간 차이가 시간 간격보다 작은 경우 클러스터는 1개 또는 2개 인스턴스를 "대기" 상태로 유지합니다. 이를 통해 관리자는 장애 조치에 대응할 수 있습니다. 이전 기본 사이트의 모든 노드에서 충돌이 발생한 경우, 시간 차이가 경과한 후 이전 기본 사이트가 등록됩니다. SAP HANA RDBMS에서만 충돌이 발생한 경우에는 이전 기본 사이트가 즉시 등록됩니다. 새 기본 사이트에 등록된 후에는 시스템 복제로 인해 모든 데이터가 덮어써집니다. |
모든 파라미터에 대한 자세한 정보는 다음 명령으로 확인할 수 있습니다.
man ocf_suse_SAPHana
# vi crm-saphana.txt # enter the following to crm-saphana.txt primitive rsc_SAPHana_HA1_HDB10 ocf:suse:SAPHana \ op start interval="0" timeout="3600" \ op stop interval="0" timeout="3600" \ op promote interval="0" timeout="3600" \ op monitor interval="60" role="Master" timeout="700" \ op monitor interval="61" role="Slave" timeout="700" \ params SID="HA1" InstanceNumber="10" PREFER_SITE_TAKEOVER="true" \ DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false" ms msl_SAPHana_HA1_HDB10 rsc_SAPHana_HA1_HDB10 \ meta clone-max="2" clone-node-max="1" interleave="true"
구성을 클러스터에 추가합니다.
suse01:~ # crm configure load update crm-saphana.txt
여기서 가장 중요한 파라미터는 SID 및 InstanceNumber입니다. 이러한 파라미터외에도 시간 제한 값 또는 작동(시작, 프로모션, 모니터링, 중지)은 일반적으로 조정이 가능합니다.
9.2.7 기본 사이트의 가상 IP 주소 #
클러스터에 추가해야 하는 마지막 리소스는 가상 IP 주소입니다.
# vi crm-vip.txt # enter the following to crm-vip.txt primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \ op monitor interval="10s" timeout="20s" \ params ip="192.168.1.20"
파일을 클러스터에 로드합니다.
suse01:~ # crm configure load update crm-vip.txt
대부분의 설치에서는 ip 파라미터만 클라이언트 시스템에 제공할 가상 IP 주소에 설정해야 합니다.
9.2.8 제약 사항 #
두 가지 제약 사항은 클라이언트 데이터베이스에 액세스하기 위한 가상 IP 주소를 올바르게 설정하고 두 가지 리소스 에이전트인 SAPHana와 SAPHanaTopology 사이의 시작 순서를 구성하는 것입니다.
# vi crm-cs.txt # enter the following to crm-cs.txt colocation col_saphana_ip_HA1_HDB10 2000: rsc_ip_HA1_HDB10:Started \ msl_SAPHana_HA1_HDB10:Master order ord_SAPHana_HA1_HDB10 Optional: cln_SAPHanaTopology_HA1_HDB10 \ msl_SAPHana_HA1_HDB10
파일을 클러스터에 로드합니다.
suse01:~ # crm configure load update crm-cs.txt
9.2.9 활성/활성 읽기 지원 시나리오 #
이 단계는 선택 사항입니다. 보조 사이트에서 읽기가 지원되는 활성/활성 SAP HANA 시스템 복제가 있는 경우에는 필요한 두 번째 가상 IP 주소를 클러스터로 통합할 수 있습니다. 이 작업은 두 번째 가상 IP 주소 리소스 및 주소 바인딩 위치 제약 조건을 보조 사이트에 추가하여 수행할 수 있습니다.
# vi crm-re.txt # enter the following to crm-re.txt primitive rsc_ip_HA1_HDB10_readenabled ocf:heartbeat:IPaddr2 \ op monitor interval="10s" timeout="20s" \ params ip="192.168.1.21" colocation col_saphana_ip_HA1_HDB10_readenabled 2000: \ rsc_ip_HA1_HDB10_readenabled:Started msl_SAPHana_HA1_HDB10:Slave
10 클러스터 테스트 #
테스트 목록은 이 문서의 다음 업데이트에서 개선될 예정입니다.
모든 클러스터 테스트는 매우 중요합니다. 고객이 예상하여 작성한 모든 테스트 사례를 구현하여 모두 통과하는지 확인합니다. 그렇지 않으면 프로덕션 중에 프로젝트가 실패할 수 있습니다.
별도로 설명되는 경우를 제외하고, 테스트 필수 구성 요소가 부팅되고 클러스터의 일반 멤버 및 HANA RDBMS가 실행 중이어야 합니다. 시스템 복제가 동기화 중(SOK)입니다.
10.1 반자동화를 위한 테스트 사례 #
다음 테스트 설명에서는 PREFER_SITE_TAKEOVER="true"
및 AUTOMATED_REGISTER="false"
가 가정됩니다.
다음 테스트는 순차적으로 실행되도록 설계되었으며 진행 중인 테스트의 종료 상태에 따라 다릅니다.
10.1.1 테스트: 사이트 A에서 기본 데이터베이스 중지(노드 1) #
기본 데이터베이스
기본 HANA 데이터베이스는 정상 클러스터 작업 중에 중지됩니다.
<sid>adm으로서 기본 HANA 데이터베이스를 정상적으로 중지합니다.
suse01# HDB stop
기존 기본 사이트(노드 1)를 <sid>adm으로 인수 후 새 기본 사이트(노드 2)와 함께 수동으로 등록합니다.
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
노드 1에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
클러스터가 중지된 기본 HANA 데이터베이스(노드 1)를 감지하고 리소스를 실패로 표시합니다.
클러스터는 보조 HANA 데이터베이스(노드 2)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 2)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 1)의 sync_state가 SFAIL로 표시됩니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.2 테스트: 사이트 B에서 기본 데이터베이스 중지(노드 2) #
- 구성 요소:
기본 데이터베이스
- 설명:
기본 HANA 데이터베이스는 정상 클러스터 작업 중에 중지됩니다.
<sid>adm으로서 데이터베이스를 정상적으로 중지합니다.
suse02# HDB stop
기존 기본 사이트(노드 2)를 <sid>adm으로 인수 후 새 기본 사이트(노드 1)와 함께 수동으로 등록합니다.
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
노드 1에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 중지된 기본 HANA 데이터베이스(노드 2)를 감지하고 리소스를 실패로 표시합니다.
클러스터는 보조 HANA 데이터베이스(노드 1)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 1)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.3 테스트: 사이트 A에서 기본 데이터베이스 충돌(노드 1) #
- 구성 요소:
기본 데이터베이스
- 설명:
기본 데이터베이스 시스템의 모든 장애를 시뮬레이션합니다.
<sid>adm으로서 신호를 사용하여 기본 데이터베이스 시스템을 종료합니다.
suse01# HDB kill-9
기존 기본 사이트(노드 1)를 <sid>adm으로 인수 후 새 기본 사이트(노드 2)와 함께 수동으로 등록합니다.
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
노드 1에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
클러스터가 중지된 기본 HANA 데이터베이스(노드 1)를 감지하고 리소스를 실패로 표시합니다.
클러스터는 보조 HANA 데이터베이스(노드 2)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 2)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 1)의 sync_state가 SFAIL로 표시됩니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.4 테스트: 사이트 B에서 기본 데이터베이스 충돌(노드 2) #
- 구성 요소:
기본 데이터베이스
- 설명:
기본 데이터베이스 시스템의 모든 장애를 시뮬레이션합니다.
<sid>adm으로서 신호를 사용하여 기본 데이터베이스 시스템을 종료합니다.
suse02# HDB kill-9
기존 기본 사이트(노드 2)를 <sid>adm으로 인수 후 새 기본 사이트(노드 1)와 함께 수동으로 등록합니다.
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
노드 1에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 중지된 기본 HANA 데이터베이스(노드 2)를 감지하고 리소스를 실패로 표시합니다.
클러스터는 보조 HANA 데이터베이스(노드 1)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 1)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.5 테스트: 사이트 A에서 기본 노드 충돌(노드 1) #
- 구성 요소:
기본 사이트의 클러스터 노드
- 설명:
기본 HANA 데이터베이스가 실행되는 기본 사이트 노드의 충돌을 시뮬레이션합니다.
'fast-reboot’ 시스템 요청을 전송하여 기본 노드에서 충돌을 유발합니다.
suse01# echo 'b' > /proc/sysrq-trigger
SBD 펜싱을 사용하는 경우 펜싱된 후 pacemaker가 자동으로 다시 시작됩니다. 이 경우 모든 SBD 장치에서 펜싱 플래그를 삭제한 후 pacemaker를 시작합니다.
suse01# sbd -d /dev/disk/by-id/SBDA message suse01 clear suse01# sbd -d /dev/disk/by-id/SBDB message suse01 clear ...
클러스터 프레임워크 시작
suse01# systemctl start pacemaker
기존 기본 사이트(노드 1)를 <sid>adm으로 인수 후 새 기본 사이트(노드 2)와 함께 수동으로 등록합니다.
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
노드 1에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
클러스터가 장애가 발생한 노드(노드 1)를 감지하고 이를 UNCLEAN으로 선언한 후 보조 노드(노드 2)를 "partition WITHOUT quorum” 상태로 설정합니다.
클러스터가 장애 발생 노드(노드 1)를 펜싱합니다.
클러스터가 장애 발생 노드(노드 1)을 OFFLINE으로 선언합니다.
클러스터는 보조 HANA 데이터베이스(노드 2)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 2)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
SBD 펜싱을 사용하는 경우에는 수동 복구 절차를 사용하여 펜싱 플래그를 삭제하고 노드에서 pacemaker를 다시 시작합니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.6 테스트: 사이트 B에서 기본 노드 충돌(노드 2) #
- 구성 요소:
보조 사이트의 클러스터 노드
- 설명:
기본 HANA 데이터베이스가 실행되는 보조 사이트 노드의 충돌을 시뮬레이션합니다.
'fast-reboot’ 시스템 요청을 전송하여 보조 노드에서 충돌을 유발합니다.
suse02# echo 'b' > /proc/sysrq-trigger
SBD 펜싱을 사용하는 경우 펜싱된 후 pacemaker가 자동으로 다시 시작됩니다. 이 경우 모든 SBD 장치에서 펜싱 플래그를 삭제한 후 pacemaker를 시작합니다.
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
클러스터 프레임워크 시작
suse02# systemctl start pacemaker
기존 기본 사이트(노드 2)를 <sid>adm으로 인수 후 새 기본 사이트(노드 1)와 함께 수동으로 등록합니다.
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
노드 2에서 HANA 데이터베이스(현재 보조 사이트)를 루트로 다시 시작합니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 장애가 발생한 보조 노드(노드 2)를 감지하고 이를 UNCLEAN으로 선언한 후 기본 노드(노드 1)를 "partition WITHOUT quorum” 상태로 설정합니다.
클러스터가 장애 발생 보조 노드(노드 2)를 펜싱합니다.
클러스터가 장애 발생 보조 노드(노드 2)을 OFFLINE으로 선언합니다.
클러스터는 보조 HANA 데이터베이스(노드 1)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 1)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 보조 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
SBD 펜싱을 사용하는 경우에는 수동 복구 절차를 사용하여 펜싱 플래그를 삭제하고 노드에서 pacemaker를 다시 시작합니다.
AUTOMATED_REGISTER="false”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하지 않거나 새 기본 사이트로 등록합니다.
수동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.7 테스트: 사이트 B에서 보조 데이터베이스 중지(노드 2) #
- 구성 요소:
보조 HANA 데이터베이스
- 설명:
보조 HANA 데이터베이스는 정상 클러스터 작업 중에 중지됩니다.
<sid>adm으로서 보조 HANA 데이터베이스를 정상적으로 중지합니다.
suse02# HDB stop
루트로서 보조 HANA 데이터베이스(노드 2)의 장애가 발생한 리소스 상태를 새로 고칩니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 중지된 보조 데이터베이스(노드 2)를 감지하고 리소스를 실패로 표시합니다.
클러스터가 중단된 시스템 복제를 감지하고 이를 실패(SFAIL)로 표시합니다.
클러스터가 동일한 노드(노드 2)에서 보조 HANA 데이터베이스를 다시 시작합니다.
클러스터가 시스템 복제가 동기화 중임을 다시 감지하고 이를 ok(SOK)로 표시합니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.8 테스트: 사이트 B에서 보조 데이터베이스 충돌(노드 2) #
- 구성 요소:
보조 HANA 데이터베이스
- 설명:
보조 데이터베이스 시스템의 모든 장애를 시뮬레이션합니다.
<sid>adm으로서 신호를 사용하여 보조 데이터베이스 시스템을 종료합니다.
suse02# HDB kill-9
루트로서 보조 HANA 데이터베이스(노드 2)의 장애가 발생한 리소스 상태를 정리합니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 중지된 보조 데이터베이스(노드 2)를 감지하고 리소스를 실패로 표시합니다.
클러스터가 중단된 시스템 복제를 감지하고 이를 실패(SFAIL)로 표시합니다.
클러스터가 동일한 노드(노드 2)에서 보조 HANA 데이터베이스를 다시 시작합니다.
클러스터가 시스템 복제가 동기화 중임을 다시 감지하고 이를 ok(SOK)로 표시합니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.1.9 테스트: 사이트 B에서 보조 노드 충돌(노드 2) #
- 구성 요소:
보조 사이트의 클러스터 노드
- 설명:
보조 HANA 데이터베이스가 실행되는 보조 사이트 노드의 충돌을 시뮬레이션합니다.
'fast-reboot’ 시스템 요청을 전송하여 보조 노드에서 충돌을 유발합니다.
suse02# echo 'b' > /proc/sysrq-trigger
SBD 펜싱을 사용하는 경우 펜싱된 후 pacemaker가 자동으로 다시 시작됩니다. 이 경우 모든 SBD 장치에서 펜싱 플래그를 삭제한 후 pacemaker를 시작합니다.
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
클러스터 프레임워크를 시작합니다.
suse02# systemctl start pacemaker
클러스터가 장애가 발생한 보조 노드(노드 2)를 감지하고 이를 UNCLEAN으로 선언한 후 기본 노드(노드 1)를 "partition WITHOUT quorum” 상태로 설정합니다.
클러스터가 장애 발생 보조 노드(노드 2)를 펜싱합니다.
클러스터가 장애 발생 보조 노드(노드 2)을 OFFLINE으로 선언합니다.
잠시 후에 클러스터에 중지된 보조 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
SBD 펜싱을 사용하는 경우에는 수동 복구 절차를 사용하여 펜싱 플래그를 삭제하고 노드에서 pacemaker를 다시 시작합니다.
펜싱된 노드(노드 2)가 클러스터에 다시 합류하면 이전 보조 HANA 데이터베이스가 자동으로 시작됩니다.
클러스터가 시스템 복제가 동기화 중임을 다시 감지하고 이를 ok(SOK)로 표시합니다.
10.1.10 테스트: 복제 LAN의 장애 #
- 구성 요소:
복제 LAN
- 설명:
기본 및 보조 노드 간 복제 LAN 연결 끊김
복제 LAN의 클러스터 노드 간 연결을 끊습니다.
복제 LAN의 클러스터 노드 간 연결을 다시 설정합니다.
잠시 후에 클러스터에 보조 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
기본 HANA 데이터베이스(노드 1) "HDBSettings.sh systemReplicationStatus.py"에 "CONNECTION TIMEOUT"이 표시되고 보조 HANA 데이터베이스(노드 2)가 기본 데이터베이스(노드 1)에 연결할 수 없습니다.
기본 HANA 데이터베이스는 계속해서 "정상"으로 작동하지만, 시스템 복제가 수행되지 않으므로 더 이상 유효한 인수 대상이 아닙니다.
LAN 연결이 다시 수립되면 HDB가 HANA 데이터베이스 사이의 연결을 자동으로 감지한 후 시스템 복제 프로세스를 다시 시작합니다.
클러스터가 시스템 복제가 동기화 중임을 다시 감지하고 이를 ok(SOK)로 표시합니다.
10.2 완전 자동화를 위한 테스트 사례 #
다음 테스트 설명에서는 PREFER_SITE_TAKEOVER="true" 및 AUTOMATED_REGISTER=”true"가 가정됩니다.
다음 테스트는 순차적으로 실행되도록 설계되었으며 진행 중인 테스트의 종료 상태에 따라 다릅니다.
10.2.1 테스트: 사이트 A에서 기본 데이터베이스 중지 #
기본 데이터베이스
기본 HANA 데이터베이스는 정상 클러스터 작업 중에 중지됩니다.
<sid>adm으로서 기본 HANA 데이터베이스를 정상적으로 중지합니다.
suse01# HDB stop
필요하지 않은 경우 모든 사항이 자동화됩니다.
루트로서 노드 1에서 클러스터 리소스를 새로 고칩니다.
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
클러스터가 중지된 기본 HANA 데이터베이스(노드 1)를 감지하고 리소스를 실패로 표시합니다.
클러스터는 보조 HANA 데이터베이스(노드 2)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 2)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 기본 사이트(노드 1)의 sync_state가 SFAIL로 표시됩니다.
AUTOMATED_REGISTER="true”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하고 새 기본 사이트로 등록합니다.
자동 등록 및 리소스 새로 고침 후 시스템 복제 쌍이 동기화 중(SOK)으로 표시됩니다.
"실패한 작업” 클러스터는 다음 복구 절차 후에 정리됩니다.
10.2.2 테스트: 사이트 B에서 기본 노드 충돌(노드 2) #
B 사이트의 클러스터 노드
기본 HANA 데이터베이스가 실행되는 사이트 B의 충돌을 시뮬레이션합니다.
'fast-reboot’ 시스템 요청을 전송하여 보조 노드에서 충돌을 유발합니다.
suse02# echo 'b' > /proc/sysrq-trigger
SBD 펜싱을 사용하는 경우 펜싱된 후 pacemaker가 자동으로 다시 시작됩니다. 이 경우 모든 SBD 장치에서 펜싱 플래그를 삭제한 후 pacemaker를 시작합니다.
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
클러스터 프레임워크를 시작합니다.
suse02# systemctl start pacemaker
루트인 노드 2에서 클러스터 리소스를 새로 고칩니다.
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
클러스터가 장애가 발생한 기본 노드(노드 2)를 감지하고 이를 UNCLEAN으로 선언한 후 기본 노드(노드 2)를 "partition WITHOUT quorum” 상태로 설정합니다.
클러스터가 장애 발생 기본 노드(노드 2)를 펜싱합니다.
클러스터가 장애 발생 기본 노드(노드 2)을 OFFLINE으로 선언합니다.
클러스터는 보조 HANA 데이터베이스(노드 1)를 승격하여 기본 사이트로 인수합니다.
클러스터는 IP 주소를 새 기본 사이트(노드 1)로 마이그레이션합니다.
잠시 후에 클러스터에 중지된 보조 사이트(노드 2)의 sync_state가 SFAIL로 표시됩니다.
SBD 펜싱을 사용하는 경우에는 수동 복구 절차를 사용하여 펜싱 플래그를 삭제하고 노드에서 pacemaker를 다시 시작합니다.
펜싱된 노드(노드 2)가 클러스터에 다시 합류하면 이전 기본 노드가 보조가 됩니다.
AUTOMATED_REGISTER="true”이므로 클러스터는 실패한 HANA 데이터베이스를 다시 시작하고 새 기본 사이트로 등록합니다.
클러스터가 시스템 복제가 동기화 중임을 다시 감지하고 이를 ok(SOK)로 표시합니다.
11 관리 #
11.1 권장 작업 및 금지 작업 #
프로젝트에서 수행해야 할 사항은 다음과 같습니다.
STONITH를 정의한 후 기타 리소스를 클러스터에 추가합니다.
테스트를 집중적으로 수행합니다.
SAPHana 및 SAPHanaTopology 작업의 시간 제한을 조정합니다.
PREFER_SITE_TAKEOVER=”true”, AUTOMATED_REGISTER=”false” 및 DUPLICATE_PRIMARY_TIMEOUT=”7200”으로 시작합니다.
프로젝트에서 다음과 같은 작업은 하지 않는 것이 좋습니다.
노드를 대기로 설정한 후 다시 온라인으로 전환하거나 마스터/슬레이트 리소스 중지/시작 같이 클러스터 구성을 빠르게 변경/다시 변경
호스트, 사용자 및 그룹에 적절한 시간 동기화 또는 불안정한 이름을 사용하지 않고 클러스터 생성
클론, 마스터/슬레이브 또는 IP 리소스에 대한 위치 규칙 추가. 이 설정 가이드에서 설명되는 위치 규칙만 허용됩니다.
crm-shell, HAWK 또는 기타 도구에서의 리소스 “마이그레이션” 또는 “이동”은 클라이언트 선호 위치 규칙이 추가되므로 이 작업은 완전히 금지됩니다.
11.2 모니터링 및 도구 #
클러스터 상태 요청을 위해 High Availability Web Console(HAWK), SAP HANA Studio 및 다른 명령줄 도구를 사용할 수 있습니다.
11.2.1 HAWK – 클러스터 상태 등 #
인터넷 브라우저를 사용하여 클러스터 상태를 확인할 수 있습니다.
위의 설명과 같이 ha-cluster-init을 사용하여 클러스터를 설정하고 모든 패키지를 설치하면 시스템은 매우 유용한 웹 인터페이스를 제공합니다. 이 그래픽 웹 인터페이스를 사용하면 전체 클러스터 상태의 개요를 살펴보거나 관리 작업을 수행하거나 리소스 및 클러스터 부트스트랩 파라미터를 구성할 수 있습니다. 이러한 강력한 사용자 인터페이스의 전체 문서는 제품 설명서를 참조하십시오.
11.2.2 SAP HANA Studio #
데이터베이스별 관리 및 확인은 SAP HANA 스튜디오를 통해 수행할 수 있습니다.
11.2.3 클러스터 명령줄 도구 #
간략한 개요는 crm_mon
을 호출하여 확인할 수 있습니다. -r
옵션을 사용해도 중지되었지만 이미 구성된 리소스가 표시됩니다. -1
옵션은 crm_mon
이 주기적이 아닌 한 번 상태를 출력하도록 명령합니다.
Stack: corosync Current DC: suse01 (version 2.0.1+20190417.13d370ca9-3.6.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Thu Feb 6 12:20:03 2020 Last change: Thu Feb 6 12:19:43 2020 by root via crm_attribute on suse01 2 nodes configured 6 resources configured Online: [ suse01 suse02 ] Full list of resources: stonith-sbd (stonith:external/sbd): Started suse01 Clone Set: cln_SAPHanaTopology_HA1_HDB10 [rsc_SAPHanaTopology_HA1_HDB10] Started: [ suse01 suse02 ] Clone Set: msl_SAPHana_HA1_HDB10 [rsc_SAPHana_HA1_HDB10] (promotable) Masters: [ suse01 ] Slaves: [ suse02 ] rsc_ip_HA1_HDB10 (ocf::heartbeat:IPaddr2): Started suse01
자세한 내용은 설명서 페이지 crm_mon(8)을 참조하십시오.
11.2.4 SAPHanaSR 명령줄 도구 #
일부 SAPHana 또는 SAPHanaTopology 리소스 에이전트 내부 값을 표시하려면, SAPHanaSR-showAttr
프로그램을 호출할 수 있습니다. 내부 값, 저장소 위치 및 파라미터 이름은 다음 버전에서 변경할 수 있습니다. SAPHanaSR-showAttr
명령은 항상 올바른 저장소 위치에서 값을 가져옵니다.
crm_attribute
와 같은 클러스터 명령을 사용하여 클러스터에서 직접 값을 가져오지 마십시오. 그러한 명령을 사용하면, 속성을 다른 저장소 또는 클러스터 외부로 이동해야 할 때 메서드가 중단됩니다. 우선 SAPHanaSR-showAttr은 테스트 프로그램이며 자동 시스템 모니터링에서 사용되지 않아야 합니다.
suse01:~ # SAPHanaSR-showAttr Host \ Attr clone_state remoteHost roles ... site srmode sync_state ... --------------------------------------------------------------------------------- suse01 PROMOTED suse02 4:P:master1:... WDF sync PRIM ... suse02 DEMOTED suse01 4:S:master1:... ROT sync SOK ...
SAPHanaSR-showAttr
는 script와 같은 기타 출력 형식도 지원합니다. 스크립트 형식의 목적은 실행 중인 파일을 허용하는 것입니다. 0.153 버전부터 SAPHanaSR 패키지는 SAPHanaSR-filter
필터 엔진도 제공합니다. SAPHanaSR-showAttr
과 함께 출력 형식 스크립트 및 SAPHanaSR-filter
를 사용하면 다음과 같은 효과적인 쿼리를 정의할 수 있습니다.
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='remote' Thu Feb 6 12:28:10 2020; Hosts/suse01/remoteHost=suse02 Thu Feb 6 12:28:10 2020; Hosts/suse02/remoteHost=suse01
SAPHanaSR-replay-archive
는 hb_report
(crm_report
) 아카이브에서 SAPHanaSR 속성 값을 분석할 수 있습니다. 이를 통해 세밀한 분석을 수행할 수 있습니다.
예시에서, 관리자는 HDB kill-9
명령을 사용하여 기본 SAP HANA 인스턴스를 종료했습니다. 이 작업은 오후 9:10 경에 수행되었습니다.
suse01:~ # hb_report -f 19:00 INFO: suse01# The report is saved in ./hb_report-1-11-11-2019.tar.bz2 INFO: suse01# Report timespan: 11/11/19 19:00:00 - 11/11/19 21:05:33 INFO: suse01# Thank you for taking time to create this report. suse01:~ # SAPHanaSR-replay-archive --format=script \ ./hb_report-1-11-11-2019.tar.bz2 | \ SAPHanaSR-filter --search='roles' --filterDouble Mon Nov 11 20:38:01 2019; Hosts/suse01/roles=4:P:master1:master:worker:master Mon Nov 11 20:38:01 2019; Hosts/suse02/roles=4:S:master1:master:worker:master Mon Nov 11 21:11:37 2019; Hosts/suse01/roles=1:P:master1::worker: Mon Nov 11 21:12:43 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
위의 예시에서 속성에 따르면 처음에 suse01이 기본 (4:P)를 실행하고 suse02는 보조 (4:S)가 실행되었습니다.
21:11(CET)에는 suse01에서 기본이 갑자기 종료되어 1:P로 감소했습니다.
클러스터가 참가하여 인수가 시작되었습니다. 21:12(CET)에는 이전 보조가 새로 실행 중인 마스터로 감지(4:S에서 4:P로 변경)되었습니다.
11.2.5 SAP HANA LandscapeHostConfiguration #
SAPHana 데이터베이스의 상태를 확인하고 클러스터 응답하는지의 여부를 살펴보려면 Linux 사용자 <sid>adm으로 호출할 수 있는 landscapeHostConfiguration 스크립트를 사용할 수 있습니다.
suse01:~> HDBSettings.sh landscapeHostConfiguration.py | Host | Host | ... NameServer | NameServer | IndexServer | IndexServer | | | Active | ... Config Role | Actual Role | Config Role | Actual Role | | ------ | ------ | ... ------------ | ----------- | ----------- | ----------- | | suse01 | yes | ... master 1 | master | worker | master | overall host status: ok
SAP HA 지침에 따라 SAPHana 리소스 에이전트를 반환 코드를 다음과 같이 해석합니다.
반환 코드 | 해석 |
---|---|
4 | SAP HANA 데이터베이스가 정상적으로 실행됩니다. 클러스터는 이를 올바르게 실행 중인 데이터베이스로 해석합니다. |
3 | SAP HANA 데이터베이스가 정보 상태로 실행됩니다. 클러스터는 이를 올바르게 실행 중인 데이터베이스로 해석합니다. |
2 | SAP HANA 데이터베이스가 경고 상태로 실행됩니다. 클러스터는 이를 올바르게 실행 중인 데이터베이스로 해석합니다. |
1 | SAP HANA 데이터베이스가 작동하지 않습니다. 데이터베이스가 작동 중이어야 하고 의도적으로 작동을 중지하지 않는 경우 인수가 트리거될 수 있습니다. |
0 | 내부 스크립트 오류 - 무시 예정. |
11.3 유지 관리 #
운영 체제 또는 SUSE Linux Enterprise High Availability Extension의 업데이트를 받아보려면 로컬 SUSE 관리자 또는 SMT에 또는 SUSE Customer Center를 통해 원격으로 시스템을 등록하는 것이 좋습니다.
11.3.1 OS 및 클러스터 업데이트 #
클러스터 소프트웨어를 포함한 SUSE Linux Enterprise Server for SAP Applications 패키지를 업데이트하려면 SUSE Linux Enterprise High Availability Extension 클러스터 업그레이드 및 소프트웨어 패키지 업데이트 고가용성 관리 가이드의 제품 설명서에 정의된 롤링 업데이트 절차를 따르십시오.
11.3.2 SAP HANA 업데이트 - 원활한 SAP HANA 유지 관리 #
시스템 복제에서 SAP HNA 데이터베이스 시스템을 업데이트하려면 정의된 SAP 절차를 따라야 합니다. 이 섹션에서는 시스템 복제를 다시 자동화하기 위한 업데이트 절차 전 및 후에 수행되어야 하는 단계를 설명합니다.
SUSE는 클러스터에서 SAP HANA 유지 관리 프로세스를 최적화했습니다. 향상되는 절차는 마스터-슬레이브-리소스만을 유지 관리로 설정하고 나머지 클러스터(SAPHanaTopology 클론 및 IPaddr2 vIP 리소스)는 활성으로 유지합니다. 업데이트된 절차를 사용하면 가상 IP 주소가 실행 중인 기본을 자동으로 따르므로 클러스터에서 SAP HANA를 원활하게 유지 관리할 수 있습니다.
SAP HANA 데이터베이스 시스템에서 수행되는 유지 관리 작업에 클러스터가 응답하지 않도록 준비합니다. 마스터/슬레이브 리소스를 관리되지 않도록 설정하고 클러스터 노드를 유지 관리 모드로 설정합니다.
- 업데이트 전 작업
마스터-슬레이브-리소스의 경우 유지 관리 모드 설정:
crm resource maintenance <master-slave-resource>
가이드에서 <master-slave-resource>는
msl_SAPHana_HA1_HDB10
입니다.- 업데이트
두 SAP HANA 데이터베이스 시스템에 대한 SAP 업데이트를 처리합니다. 이 절차에 대한 설명은 SAP가 제공합니다.
- 업데이트 후 작업
유지 관리 후에는 기본/보조 역할이 서로 바뀝니다. 그러므로 클러스터가 이러한 상태를 저장하지 않도록 설정하고 업데이트된 SAP HANA 데이터베이스 시스템을 다시 프로브합니다.
crm resource refresh <master-slave-resource>
SAP HANA 업데이트가 두 사이트에서 완료되면 클러스터에 유지 관리 프로세스가 종료되었음을 통지합니다. 이를 통해 클러스터가 SAP를 다시 제어 및 모니터링할 수 있습니다.
crm resource maintenance <master-slave-resource> off
11.3.3 SAP HANA 기본 마이그레이션 #
다음 절차에서는 기본이 node1에서 그리고 보조가 node2에서 실행되는 것으로 가정합니다. 목표는 노드의 역할을 "교환"하여 기본이 node2에서 실행되고 보조가 node1에서 실행되도록 하는 것입니다.
역할을 교환하기 위해서는 다른 메서드가 사용됩니다. 다음 절차는 네이티브 HANA 명령을 통해 클러스터에 역할 교환을 "수락"하도록 통지하는 방법을 보여줍니다.
- 이동 전
마스터-슬레이브-리소스를 유지 관리로 설정합니다. 이는 모든 클러스터 노드에서 수행할 수 있습니다.
crm resource maintenance <master-slave-resource-name>
- 수동 인수 프로세스
기본 SAP HANA 데이터베이스 시스템을 중지합니다. <sid>adm 사용자로서 node1에서 예시의 명령을 입력합니다.
HDB stop
보조 SAP HANA 데이터베이스 시스템에서 인수 프로세스를 시작합니다. <sid>adm 사용자로서 node2에서 예시의 명령을 입력합니다.
hdbnsutil -sr_takeover
이전 기본을 새 보조로 등록합니다. <sid>adm 사용자로서 node1에서 예시의 명령을 입력합니다.
hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --name=WDF \ --operationMode=logreplay
새 보조 SAP HANA 데이터베이스 시스템을 시작합니다. <sid>adm 사용자로서 node1에서 예시의 명령을 입력합니다.
HDB start
- 마이그레이션 후
SAPHanaSR-showAttr에 SAP HANA 시스템 2개가 모두 다시 작동됨으로 표시될 때까지 잠시 기다립니다(필드 역할이 숫자 4로 시작해야 함). 새 보조의 역할은 "S"(보조의 경우)여야 합니다.
클러스터에 이전 마스터-슬레이브 역할을 삭제하고 실패한 마스터를 다시 모니터링하도록 명령합니다. 명령은 root 사용자로 모든 클러스터 노드에서 제출할 수 있습니다
crm resource refresh master-slave-resource-name
마스터/슬레이브 리소스를 관리됨 상태로 다시 설정합니다. 명령은 root 사용자로 모든 클러스터 노드에서 제출할 수 있습니다
crm resource maintenance <master-slave-resource-name> off
이제 클러스터에서 마이그레이션의 부분 자동화를 사용하는 방법에 대해 설명하겠습니다. SAPHanaSR-showAttr 및 SAPHanaSR-filter를 사용하는 속성의 경우 패키지 버전이 0.153 이상인 SAPHanaSR이 필요합니다.
force 옵션을 사용하여 이 노드 규칙에서 “이동”을 생성합니다.
crm resource move <master-slave-resource-name> force
“이동”(force) 규칙으로 인해 클러스터가 현재 기본을 중지합니다. 다음으로 시스템 복제가 이전에 동기화 중인 경우 보조 사이트에서 promote을 실행합니다. 시스템 복제의 상태가 동기화 중이 아닌(SFAIL) 경우에는 기본을 마이그레이션하지 않아야 합니다.
중요force 옵션을 사용하지 않고 마이그레이션하면 이전 기본이 중지되지 않고 인수가 수행되게 됩니다. force 옵션을 사용하여 마이그레이션하십시오.
참고crm 리소스 명령 move의 이전 이름은 migrate였습니다. migrate 명령은 아직 유효하지만 사용되지 않을 것임이 발표되었습니다.
보조가 새 기본 역할로 완전히 인수될 때까지 기다립니다. SAPHanaSR-showAttr 명령줄 도구를 사용하여 이를 확인하고 새 기본의 “역할” 속성을 살펴봅니다. "4:P"로 시작해야 합니다.
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='roles' Mon Nov 11 20:38:50 2019; Hosts/suse01/roles=1:P:master1::worker: Mon Nov 11 20:38:50 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
AUTOMATED_REGISTER="true”
로 설정한 경우에는 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 지금 기존 기본을 등록해야 합니다. <sid>adm 사용자로서 node1에서 예시의 명령을 입력합니다.hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
리소스의 금지 명령을 제거하여 클러스터가 새 보조를 시작하도록 허용합니다.
crm resource clear <master-slave-resource-name>
참고crm 리소스 명령 clear의 이전 이름은 unmigrate였습니다. unmigrate 명령은 아직 유효하지만 사용되지 않을 것임이 발표되었습니다.
새 보조가 시작될 때까지 기다립니다. SAPHanaSR-showAttr 명령줄 도구를 사용하여 이를 확인하고 새 기본의 “역할” 속성을 살펴봅니다. "4: S”로 시작해야 합니다.
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='roles' Mon Nov 11 20:38:50 2019; Hosts/suse01/roles=4:S:master1::worker: Mon Nov 11 20:38:50 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
12 유용한 링크, 설명서 및 SAP 노트 #
12.1 SUSE 모범 사례 등 #
- 블로그 시리즈 #towardsZeroDowntime
- SUSE Linux Enterprise 기반 SAP를 위한 모범 사례
- 2014년 블로그 - SAP HANA®의 안전 작동: SUSE의 고가용성 솔루션 확장
12.2 SUSE 제품 문서 #
- SAP 제품 설명서 및 문서
- SAP용 SLES의 최신 온라인 문서
- SUSE Linux Enterprise High Availability Extension의 최신 온라인 문서
- SUSE Linux Enterprise Server 미세 조정 가이드
https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-sle-tuning.html
- SUSE Linux Enterprise Server 저장소 관리 가이드
https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-storage.html
- 릴리스 노트
- TID 올바른 다중 경로 시간 제한 예측
- TID 올바른 Watchdog 커널 모듈 로드 방법
- TID NUMA 머신에서 파일 시스템 성능 문제 해결
- TID SLES에서 메모리 오버커밋
- SLES 기술 정보
- XFS 파일 시스템
https://www.suse.com/communities/conversations/xfs-the-file-system-of-choice/
12.3 설명서 페이지 #
- crm
crm.8
- crm_simulate
crm_simulate.8
- cs_clusterstate
cs_clusterstate.8
- ocf_suse_SAPHana
ocf_suse_SAPHana.7
- ocf_suse_SAPHanaTopology
ocf_suse_SAPHanaTopology.7
- sbd
sbd.8
- stonith_sbd
stonith_sbd.7
- SAPHanaSR
SAPHanaSR.7
- SAPHanaSR-showAttr
SAPHanaSR-showAttr.8
- SAPHanaSR-replay-archive
SAPHanaSR-replay-archive.8
- SAPHanaSR_manitenance_examples
SAPHanaSR_manitenance_examples.8
12.4 SAP 제품 문서 #
- SAP HANA 설치 및 업데이트 가이드
http://help.sap.com/hana/SAP_HANA_Server_Installation_Guide_en.pdf
- SAP HANA 관리 가이드
http://help.sap.com/hana/SAP_HANA_Administration_Guide_en.pdf
12.5 SAP 노트 #
- 2578899 - SUSE Linux Enterprise Server 15: 설치 노트
- 2684254 - SAP HANA DB: SLES 15 / SLES for SAP Applications 15용 권장 OS 설정
- 1876398 - HANA SP6에서 시스템 복제를 위한 네트워크 구성
- 611361 - SAP 서버의 호스트 이름
- 1275776 - SAP 환경을 위한 SLES 준비
- 1514967 - SAP HANA: 센트럴 노트
- 1523337 - SAP In-Memory Database 1.0: 센트럴 노트
- 2380229 - SAP HANA Platform 2.0 - 센트럴 노트
- 1501701 - 단일 컴퓨팅 장치 성능 및 크기 조정
- 1944799 - SLES 운영 체제 설치를 위한 SAP HANA 가이드라인
- 1890444 - CPU 절전 모드로 인한 HANA 시스템 속도 저하
- 1888072 - SAP HANA DB: strcmp sse42에서 인덱스 서버 충돌
- 1846872 - HANA에서 보고된 “장치에 여유 공간 없음” 오류
13 예시 #
13.1 예시 ha-cluster-init
구성 #
suse01:~ # ha-cluster-init -u Generating SSH key Configuring csync2 Generating csync2 shared key (this may take a while)...done csync2 checking files...done Configure Corosync (unicast): This will configure the cluster messaging layer. You will need to specify a network address over which to communicate (default is eth0's network, but you can use the network address of any active interface). Address for ring0 [192.168.1.11] Port for ring0 [5405] Configure SBD: If you have shared storage, for example a SAN or iSCSI target, you can use it avoid split-brain scenarios by configuring SBD. This requires a 1 MB partition, accessible to all nodes in the cluster. The device path must be persistent and consistent across all nodes in the cluster, so /dev/disk/by-id/* devices are a good choice. Note that all data on the partition you specify here will be destroyed. Do you wish to use SBD (y/n)? y Path to storage device (e.g. /dev/disk/by-id/...), or "none" []/dev/disk/by-id/SBDA WARNING: All data on /dev/disk/by-id/SBDA will be destroyed! Are you sure you wish to use this device (y/n)? y Initializing SBD......done Hawk cluster interface is now running. To see cluster status, open: https://192.168.1.11:7630/ Log in with username 'hacluster', password 'linux' You should change the hacluster password to something more secure! Waiting for cluster........done Loading initial cluster configuration Configure Administration IP Address: Optionally configure an administration virtual IP address. The purpose of this IP address is to provide a single IP that can be used to interact with the cluster, rather than using the IP address of any specific cluster node. Do you wish to configure a virtual IP address (y/n)? n Done (log saved to /var/log/ha-cluster-bootstrap.log)
13.2 예시 클러스터 구성 #
다음 전체 crm 구성은 SID HA1 및 인스턴스 번호 10 포함 SAP HANA 데이터베이스 및 2 노드 클러스터(suse01, suse02)를 위한 구성입니다. 예시에서 가상 IP 주소는 192.168.1.20입니다.
node suse01 node suse02 primitive rsc_SAPHanaTopology_HA1_HDB10 ocf:suse:SAPHanaTopology \ op monitor interval=10 timeout=300 \ op start interval=0 timeout=300 \ op stop interval=0 timeout=300 \ params SID=HA1 InstanceNumber=10 primitive rsc_SAPHana_HA1_HDB10 ocf:suse:SAPHana \ op monitor interval=61 role=Slave timeout=700 \ op start interval=0 timeout=3600 \ op stop interval=0 timeout=3600 \ op promote interval=0 timeout=3600 \ op monitor interval=60 role=Master timeout=700 \ params SID=HA1 InstanceNumber=10 PREFER_SITE_TAKEOVER=true \ DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \ op monitor interval=10 timeout=20 \ params ip="192.168.1.20" primitive stonith-sbd stonith:external/sbd \ params pcmk_delay_max=15 ms msl_SAPHana_HA1_HDB10 rsc_SAPHana_HA1_HDB10 \ meta clone-max=2 clone-node-max=1 interleave=true clone cln_SAPHanaTopology_HA1_HDB10 rsc_SAPHanaTopology_HA1_HDB10 \ meta clone-node-max=1 interleave=true colocation col_saphana_ip_HA1_HDB10 2000: \ rsc_ip_HA1_HDB10:Started msl_SAPHana_HA1_HDB10:Master order ord_SAPHana_HA1_HDB10 2000: \ cln_SAPHanaTopology_HA1_HDB10 msl_SAPHana_HA1_HDB10 property cib-bootstrap-options: \ dc-version="1.1.19+20180928.0d2680780-1.8-1.1.19+20180928.0d2680780" \ cluster-infrastructure=corosync \ stonith-enabled=true \ stonith-action=reboot \ stonith-timeout=150s \ last-lrm-refresh=1398346620 rsc_defaults rsc-options: \ resource-stickiness=1000 \ migration-threshold=5000 op_defaults op-options \ timeout=600 \ record-pending=true
13.3 /etc/corosync/corosync.conf를 위한 예시 #
다음 파일은 링 1개가 포함된 일반적인 corosync 구성을 보여줍니다. 세부 정보 및 추가 링과 관련해서는 SUSE 제품 설명서를 참조하십시오.
# Read the corosync.conf.5 manual page totem { version: 2 secauth: on crypto_hash: sha1 crypto_cipher: aes256 cluster_name: suse-ha clear_node_high_bit: yes token: 5000 token_retransmits_before_loss_const: 10 join: 60 consensus: 6000 max_messages: 20 interface { ringnumber: 0 mcastport: 5405 ttl: 1 } transport: udpu } logging { fileline: off to_stderr: no to_logfile: no logfile: /var/log/cluster/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } nodelist { node { ring0_addr: 192.168.1.11 nodeid: 1 } node { ring0_addr: 192.168.1.12 nodeid: 2 } } quorum { # Enable and configure quorum subsystem (default: off) # see also corosync.conf.5 and votequorum.5 provider: corosync_votequorum expected_votes: 2 two_node: 1 }
13.4 IPMI STONITH 메서드 예시 #
primitive rsc_suse01_stonith stonith:external/ipmi \ params hostname="suse01" ipaddr="192.168.1.101" userid="stonith" \ passwd="k1llm3" interface="lanplus" \ op monitor interval="1800" timeout="30" ... primitive rsc_suse02_stonith stonith:external/ipmi \ params hostname="suse02" ipaddr="192.168.1.102" userid="stonith" \ passwd="k1llm3" interface="lanplus" \ op monitor interval="1800" timeout="30" ... location loc_suse01_stonith rsc_suse01_stonith -inf: suse01 location loc_suse02_stonith rsc_suse02_stonith -inf: suse02
14 참조 #
자세한 정보는 아래 문서에서 확인할 수 있습니다.
14.1 Pacemaker #
- Pacemaker 프로젝트 문서
15 사용권 고지사항 #
저작권 © 2006–2020 SUSE LLC 및 제공자. All rights reserved.
GNU 무료 설명서 라이선스, 버전 1.2 또는 (사용자 선택에 따라) 버전 1.3의 조항에 따라 본 문서를 복사, 배포 및/또는 수정하는 권한이 허가됩니다. 그리고 각 항목에는 본 저작권 통지 및 라이선스가 설명된 고정(Invariant) 섹션이 있습니다. 라이선스 버전 1.2의 복사본은 "GNU 무료 설명서 라이선스" 섹션에 포함되어 있습니다.
SUSE, SUSE 로고 및 YaST는 미국과 기타 국가에서 SUSE LLC의 등록 상표입니다. SUSE 상표는 https://www.suse.com/company/legal/을 참조하십시오.
Linux는 Linus Torvalds의 등록 상표입니다. 본 문서에 언급된 기타 모든 이름 또는 상표는 해당 소유주의 상표 또는 등록 상표일 수 있습니다.
본 문서는 "SUSE 모범 사례"라는 문서 시리즈 중 일부입니다. 시리즈의 각 문서는 SUSE 직원 및 제3자가 자발적으로 기여하여 작성되었습니다. 문서의 목적은 특정 작업을 수행하는 방법의 한 가지 예만을 제공하는 것입니다.
또한, SUSE는 문서에서 설명되는 작업이 해당 기능을 수행하는지 또는 의도하지 않은 결과가 제공되지 않는지를 확인할 수 없습니다.
본 문서의 모든 정보는 최대한 주의를 기울여 작성되었습니다. 그러나 이것이 문서의 정확성을 보장하지는 않습니다. 따라서 SUSE LLC, 그 계열사, 저자, 번역자 중 어느 누구도 있을 수 있는 오류나 그에 따른 결과에 책임을 지지 않는다고 명확히 진술할 필요가 있습니다. 아래에 명시된 내용은 문서를 게시할 때 준수해야 할 라이선스에 대한 주의를 환기하기 위한 것입니다.
16 GNU Free Documentation License #
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE #
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or non-commercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS #
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING #
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY #
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS #
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
State on the Title page the name of the publisher of the Modified Version, as the publisher.
Preserve all the copyright notices of the Document.
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
Include an unaltered copy of this License.
Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS #
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS #
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS #
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION #
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION #
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE #
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents #
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts". line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.