9 ACSLS 클러스터 작업

Solaris Cluster는 작업 제어를 한 서버 노드에서 다음 서버 노드로 이전하여 심각한 오류 시나리오에서도 자동으로 시스템 복구를 수행할 수 있도록 설계되었습니다. 하지만 Solaris 시스템에서 발생하는 대부분의 오류에서는 복구를 위해 전체 시스템에 대한 스위치 오버 작업이 필요하지 않습니다.

  • 네트워크 통신과 관련된 오류는 Solaris IPMP에서 신속하고 조용하게 처리됩니다.

  • 시스템 디스크 오류는 Solaris ZFS에서 조용히 자동으로 처리됩니다.

  • 연결된 스토리지 배열의 단일 디스크 드라이브와 관련된 오류는 스토리지 배열 펌웨어에 의해 자동으로 복구됩니다. 그리고 스토리지 배열에 디스크 오류 복구 기능이 부족할 경우에는 Solaris ZFS가 미러링된 구성의 대체 드라이브에 대한 무중단 디스크 I/O를 제공합니다.

  • 공유 배열에 대한 HBA 포트가 실패할 경우 Solaris는 대체 포트로 자동으로 전환합니다. 마찬가지로, 공유 배열의 컨트롤러 모듈이 실패하거나 상호 연결 케이블이 분리된 경우 Solaris는 즉시 디스크 리소스에 연결되는 대체 경로로 돌아갑니다.

  • 라이브러리 통신 경로에서 발생하는 오류는 ACSLS의 이중 TCP/IP 논리에 의해 자동으로 복구됩니다. 실패한 라이브러리 컨트롤러 카드의 작업은 라이브러리 RE(중복 전자 부품)와 연관된 ACSLS HA 논리에 의해 자동으로 복구됩니다.

  • ACSLS에서 실행 중인 여러 프로세스가 실패하면 ACSLS 데몬이 실패한 프로세스를 즉시 재부트합니다.

  • ACSLS 데몬 자체가 실패하거나 남은 ACSLS 서비스의 실행이 중지될 경우에는 Solaris SMF(서비스 관리 기능)를 사용해서 실패한 서비스를 즉시 다시 시작할 수 있습니다.

이러한 모든 시나리오는 Solaris Cluster의 개입 없이 자동으로 신속하게 처리됩니다. 하지만 다른 심각한 결함으로 인해 활성 서버 노드의 ACSLS 작업에 영향을 줄 경우, ACSLS HA는 Solaris Cluster가 대체 노드로 제어를 전환하도록 지시합니다.

ACSLS HA는 시작된 다음 1분마다 시스템을 프로브하여 다음과 같은 이벤트가 발생하는지 확인합니다.

  • 연결된 라이브러리에 대한 통신 손실

  • ACSLS 논리 호스트에 대한 네트워크 연결 손실

  • 클라이언트 호출에 대한 RPC 수신기 포트 연결 손실

  • ACSLS 파일 시스템에 대한 액세스 손실

  • acsls SMF 서비스의 복구 불가능한 유지 관리 상태

이러한 이벤트는 모두 클러스터 페일오버를 트리거합니다. Solaris Cluster는 또한 활성 서버 노드에서 치명적인 시스템 조건이 발생할 때 페일오버를 수행합니다.

ACSLS의 클러스터 제어 시작

클러스터 페일오버 제어를 활성화하려면 다음을 수행합니다.

# cd /opt/ACSLSHA/util
# ./acsAgt configure

유틸리티에서 논리 호스트 이름을 묻는 프롬프트를 표시합니다. 논리 호스트가 /etc/hosts 파일에 정의되어 있고 해당 IP 주소가 Solaris 시스템의 ACSLS HA 구성 장에서 정의된 ipmp 그룹으로 매핑되는지 확인합니다. acsAgt configure를 실행하기 전에 zpool list를 사용하여 acslspool이 현재 서버 노드에 마운트되었는지 확인합니다.

이 작업은 ACSLS의 클러스터 제어를 시작합니다. Solaris Cluster는 시스템을 모니터하면서 1분마다 프로브하여 특히 ACSLS의 상태와 일반적인 Solaris 시스템을 확인합니다. 치명적인 것으로 간주되는 모든 조건에서는 대체 노드에서 작업이 시작됩니다.

ACSLS 리소스 그룹의 클러스터 상태를 확인하려면 다음을 수행합니다.

# clrg status

화면에서 다음이 수행됩니다.

  • 각 노드의 상태를 표시합니다.

  • 어느 노드가 활성 노드인지 식별합니다.

  • 페일오버 작업이 일시 중지되었는지 여부를 확인합니다.

acsls-storage에 대한 페일오버 정책 설정

해당 노드 및 공유 RAID 디스크 장치 사이에서 통신이 끊어질 때마다 활성 노드를 재부트하도록 acsls-storage 리소스에 정책을 설정하는 것이 좋습니다. 이 작업으로 인해 활성 노드가 디스크에 연결할 수 없는 경우 활성 노드에서 제어를 포기하고 Solaris Cluster에서 대체 노드에 제어권을 전달하도록 합니다. Failover_mode를 SOFT에서 HARD로 설정하면 공유 스토리지 장치에 대한 통신이 끊길 때마다 활성 노드를 재부트합니다.

기존 Failover_mode를 확인하려면 다음 명령을 실행합니다.

#  clrs show -v acsls-storage | grep Failover

Failover_mode는 다음과 같이 HARD로 설정해야 합니다.

# clrs set -p Failover_mode=HARD  acsls-storage

클러스터 제어 시 ACSLS 작업 및 유지 관리

클러스터 제어가 활성화된 다음에는 일반적인 방식으로 ACSLS를 작동할 수 있습니다. 표준 acsss 제어 유틸리티를 사용해서 ACSLS를 시작 및 중지합니다. 클러스터 제어 시에는 독립형 ACSLS 서버에서 응용 프로그램을 시작 및 중지할 때와 마찬가지로 ACSLS 서비스를 시작 및 중지할 수 있습니다. 작업은 다음과 같은 표준 acsss 명령을 사용해서 관리됩니다.

acsss enable
acsss disable
acsss db

이러한 명령을 사용해서 acsss 서비스를 수동으로 시작하거나 중지하면 Solaris Cluster가 페일오버 작업에 영향을 주지 않습니다. Solaris SMF 명령(예: svcadm)을 사용해도 클러스터가 영향을 주지 않습니다. acsss 서비스가 중단될 때마다 기본적으로 이러한 서비스를 다시 시작해야 하는 주체는 클러스터가 아니라 SMF입니다.

Solaris Cluster는 다음과 같은 환경에서만 인접한 노드에서 제어를 복원하기 위해 작업에 영향을 줍니다.

  • ACSLS 파일 시스템과의 통신 손실

  • 모든 중복 공용 이더넷 포트와의 통신 손실

  • 지정된 라이브러리와의 통신 손실 및 복구할 수 없는 통신 상태

클러스터 제어 일시 중지

유지 관리 작업에서 원하지 않는 클러스터 페일오버 이벤트를 트리거할 것으로 의심되는 경우 acsls 리소스 그룹의 클러스터 제어를 일시 중지합니다.

클러스터 제어를 일시 중지하려면 다음을 수행합니다.

# clrg suspend acsls-rg

리소스 그룹이 일시 중지되면 이러한 작업을 트리거할 수 있는 조건에 관계없이 Solaris Cluster가 인접한 노드로 제어를 전환하려고 시도하지 않습니다.

따라서 라이브러리 운용이 완전히 작동 중인 상태라도 시스템 복구를 보다 적극적으로 수행할 수 있습니다.

일시 중지된 모드에서 활성 노드가 재부트될 경우에는 재부트 후에 acslspool을 마운트하지 않으며, ACSLS 작업이 중단됩니다. 이 상황을 해결하기 위해서는 클러스터 제어를 재개합니다.

클러스터 제어를 재개하려면 다음을 수행합니다.

# clrg resume acsls-rg

공유 디스크 리소스가 현재 노드에 마운트되었으면 정상 작업이 재개됩니다. 하지만 Solaris Cluster에서 활성화 시 zpool이 마운트되지 않은 것을 발견하면 제어를 인접한 노드로 즉시 전환합니다. 인접 노드에 액세스할 수 없는 경우 제어가 현재 노드로 다시 전환됩니다. 클러스터에서 acslspool을 마운트하고 이 노드에서 ACSLS 서비스를 시작하려고 합니다.

ACSLS HA 클러스터 전원 차단

다음 절차에서는 ACSLS HA 시스템 전원을 차단해야 할 경우 안전한 전원 차단 순서를 제공합니다.

  1. 클러스터에서 활성 노드를 확인합니다.

    # clrg status
    

    온라인 노드를 찾습니다.

  2. 활성 노드에 root로 로그인하고 ACSLS 리소스 그룹의 Solaris Cluster 제어를 중단합니다.

    # clrg suspend acsls-rg
    
  3. 사용자 acsss로 전환하고 acsss 서비스를 종료합니다.

    # su - acsss
    $ acsss shutdown
    
  4. acsss로 로그아웃하고 정상적으로 노드 전원을 차단합니다.

    $ exit
    # init 5
    
  5. 대체 노드에 로그인하고 init 5를 사용해서 전원을 차단합니다.

  6. 물리적 전원 스위치를 사용해서 공유 디스크 배열의 전원을 차단합니다.

일시 중지된 ACSLS 클러스터 시스템 전원 켜기

제어된 종료 이전에 활성 상태였던 노드에서 ACSLS 작업을 복원하려면 다음을 수행합니다.

  1. 물리적 전원 스위치를 사용해서 두 노드 전원을 로컬로 켜거나 Sun Integrated Lights Out Manager를 사용해서 원격으로 전원을 켭니다.

  2. 공유 디스크 배열 전원을 켭니다.

  3. root로 어느 한 노드에 로그인합니다.

  4. acsss로 로그인하려고 시도하거나 $ACS_HOME 디렉토리를 나열하려고 시도하면 공유 디스크 리소스가 어느 노드에도 마운트되지 않은 것을 확인할 수 있습니다. 클러스터 모니터링을 재개하려면 다음 명령을 실행합니다.

    # clrg resume acsls-rg
    

    이 작업에서는 시스템이 작동 중지될 때 활성 상태였던 노드에 Solaris Cluster가 공유 디스크를 마운트합니다. 이 작업에서는 또한 acsss 서비스를 자동으로 재부트하고 정상 작업이 재개됩니다.

단일 노드 클러스터 만들기

일부 경우에는 다른 노드가 서비스 중인 상태에서 ACSLS가 한 노드의 독립형 서버 환경에서 작업을 계속해야 할 수 있습니다. 이 경우는 하드웨어 유지 관리, 운영 체제 업그레이드 또는 Solaris Cluster 업그레이드의 경우에 해당합니다.

다음 절차에 따라 독립형 ACSLS 서버를 만듭니다.

  1. 비클러스터 모드에서 원하는 노드를 재부트합니다.

    # reboot -- -x
    

    SPARC 서버의 OBP(Open Boot Prom)에서 비클러스터 모드로 부트하려면 다음을 수행합니다.

    ok: boot -x
    

    X86 서버에서는 GRUB 부트 메뉴를 편집해야 합니다.

    1. 시스템의 전원을 켭니다.

    2. GRUB 부트 메뉴가 나타나면 e(edit)를 누릅니다.

    3. 하위 메뉴에서 화살표 키를 사용해서 kernel /platform/i86pc/multiboot를 선택합니다. 이 항목을 선택한 상태로 e를 누릅니다.

    4. 편집 모드에서 -x를 다중 부트 옵션 kernel /platform/i86pc/multiboot -x에 추가하고 return을 누릅니다.

    5. 다중 부트 -x 옵션이 선택된 상태로 b를 눌러서 해당 옵션으로 부트합니다.

  2. 부트 주기가 완료되면 루트로 로그인하고 ACSLS Z-pool을 가져옵니다.

    # zpool import acslspool
    

    디스크 리소스가 다른 노드에 연결된 상태로 남아 있다면 필요한 경우 -f(force) 옵션을 사용합니다.

    # zpool import -f acslspool
    
  3. acsss 서비스를 실행합니다.

    # su - acsss
    $ acsss enable