16장. 규칙을 사용하여 리소스 위치 확인

더 복잡한 위치 제약 조건은 Pacemaker 규칙을 사용하여 리소스의 위치를 확인할 수 있습니다.

16.1. Pacemaker 규칙

Pacemaker 규칙을 사용하여 구성을 보다 동적으로 만들 수 있습니다. 규칙 사용 중 하나는 시간을 기반으로 다양한 처리 그룹(노드 특성 사용)에 머신을 할당한 다음 위치 제약 조건을 생성할 때 해당 특성을 사용하는 것입니다.

각 규칙에는 여러 표현식, date-expression 및 기타 규칙이 포함될 수 있습니다. 표현식의 결과는 규칙의 부울-op 필드를 기반으로 결합하여 규칙이 최종적으로 true 또는 false 로 평가되는지 확인합니다. 다음은 규칙이 사용되는 컨텍스트에 따라 달라집니다.

표 16.1. 규칙의 속성

필드설명

role

리소스가 해당 역할에 있을 때만 적용할 규칙을 제한합니다. 허용되는 값: 시작,Unpromoted 및 Promoted. 알림: role="Promoted" 인 규칙은 복제 인스턴스의 초기 위치를 확인할 수 없습니다. 승격할 활성 인스턴스에만 영향을 미칩니다.

점수

규칙이 true 로 평가되는 경우 적용할 점수입니다. 위치 제약 조건의 일부인 규칙에서 사용하도록 제한됩니다.

score-attribute

규칙이 true 로 평가되면 조회하고 점수로 사용할 노드 속성입니다. 위치 제약 조건의 일부인 규칙에서 사용하도록 제한됩니다.

boolean-op

여러 표현식 오브젝트의 결과를 결합하는 방법 허용되는 값: 또는. 기본값은 입니다.

16.1.1. 노드 특성 표현식

노드 특성 표현식은 노드 또는 노드에서 정의한 특성을 기반으로 리소스를 제어하는 데 사용됩니다.

표 16.2. Expression의 속성

필드설명

attribute

테스트할 노드 속성입니다.

type

값을 테스트해야 하는 방법을 결정합니다. 허용되는 값은 string,integer,number,version 입니다. 기본값은 문자열 입니다.

operation

수행할 비교입니다. 허용되는 값:

* lt - 노드 특성의 값이 값보다 작으면 True

* gt - 노드 특성 값이값보다 큰 경우 True

* Long - 노드 특성의 값이 value보다 작거나 같은 경우 True

* GT E - 노드 특성의 값이 value보다 크거나 같은 경우 True

* EQ - 노드 특성의 값이 값과 같은 경우 True

* NE - 노드 속성의 값이 값과 같지 않으면 True

* 정의된 - 노드에 이름이 지정된 속성이 있는 경우 True

* not_defined - 노드에 named 속성이 없는 경우 True

value

비교를 위해 사용자가 제공한 값 (작업이 정의 되거나 not _defined이 아닌 경우 필수)

관리자가 추가한 속성 외에도 클러스터는 다음 표에 설명된 대로 사용할 수 있는 각 노드의 특수 기본 제공 노드 속성을 정의합니다.

표 16.3. 기본 제공 노드 속성

이름설명

#uname

노드 이름

#id

노드 ID

#kind

노드 유형. 가능한 값은 cluster,remote, container 입니다. kind 값은 ocf:pacemaker:remote 리소스 및 Pacemaker 원격 게스트 노드 및 번들 노드에 대한 컨테이너로 생성된 Pacemaker 원격 노드에 대해 원격입니다.

#is_dc

true 이 노드가 Designated Controller (DC)인 경우 true이고, 그렇지 않으면 false

#cluster_name

설정된 경우 cluster-name 클러스터 속성의 값

#site_name

설정된 경우 site-name 노드 속성의 값(예: #cluster-name)

#role

관련 승격 가능한 복제본이 이 노드에 있는 역할입니다. 승격 가능한 복제에 대한 위치 제약 조건에 대한 규칙 내에서만 유효합니다.

16.1.2. 시간/시간 기반 표현식

날짜 표현식은 현재 날짜/시간에 따라 리소스 또는 클러스터 옵션을 제어하는 데 사용됩니다. 선택적 날짜 사양을 포함할 수 있습니다.

표 16.4. 날짜 표현식의 속성

필드설명

start

ISO8601 사양을 준수하는 날짜/시간입니다.

end

ISO8601 사양을 준수하는 날짜/시간입니다.

operation

상황에 따라 시작 또는 종료 날짜 또는 시작 날짜 및 종료 날짜와 현재 날짜를 비교합니다.Compares the current date/time with the start or the end date or both the start and end date, depending on the context. 허용되는 값:

* gt - 현재 날짜/시간이 시작된후인 경우 True

* lt - 현재 날짜/시간이 종료되기 전인 경우 True

* in_range - 현재 날짜/시간이 시작 후와 종료전인 경우 True

* date-spec - 현재 날짜/시간에 대한 cron과 유사한 비교 수행

16.1.3. 날짜 사양

날짜 사양은 시간과 관련된 cron 유사 표현식을 생성하는 데 사용됩니다. 각 필드에는 단일 숫자 또는 단일 범위가 포함될 수 있습니다. 기본값을 0으로 설정하는 대신 입력되지 않은 필드는 무시됩니다.

예를 들어, monthdays="1" 은 매달 첫 날과 일치하며 hours="09-17" 은 오전 9시부터 오후 5시(포함) 사이의 시간과 일치합니다. 그러나 여러 범위가 포함되어 있으므로 weekdays="1,2" 또는 weekdays="1-2,5-6" 을 지정할 수 없습니다.

표 16.5. 날짜 사양의 속성

필드설명

id

날짜의 고유 이름입니다.

시간

허용되는 값: 0-23

월days

허용되는 값: 0-31 (월과 연도에 따라)

weekdays

허용되는 값: 1-7 (1=Monday, 7=Sunday)

yeardays

허용되는 값: 1-366 (올해에 따라 다름)

months

허용되는 값: 1-12

weeks

허용되는 값: 1-53 ( 주간에 따라 다름)

years

Gregorian calendar에 따른 년

weekyears

예를 들어, 2005-001Ornal은 2005 -01-01 Gregorian 또한 2004-W53-6 Weekly와 다를 수 있습니다.

허용되는 값: 0-7 (0은 새로운, 4는 전체 달)입니다.