11 클러스터 로깅, 진단 및 테스트

이 장에서는 ACSLS HA 설치를 테스트하고 시스템에서 발생할 수 있는 문제 진단 및 해결을 위해 사용할 수 있는 여러 가지 리소스에 대해 설명합니다.

전체 클러스터 작업 모니터링

시작 중 또는 스위치 오버 이벤트 중 진행되는 작업은 노드 2개에 널리 배포됩니다. 따라서 테스트 중 전체 작업을 확인하도록 선택한 우세 지점은 작업이 진행되면서 펼쳐지지 않은 이벤트를 확인할 수 있는 기능을 결정할 수 있습니다. ha_console.sh 유틸리티에 광범위한 보기 설정에 대한 절차가 설명되어 있습니다.

테스트 중 전체 HA 동작을 관찰하는 데 권장되는 대시보드 구성은 셸 창 8개, 각 노드의 창 4개를 포함하는 것입니다.

  1. root에 대한 명령 셸은 필요에 따라 다양한 명령을 명제화하도록 각 노드에 대해 예약되어야 합니다.

  2. 시스템 /var/adm/messages 파일의 끝 부분을 표시하도록 각 노드의 창을 설정합니다.

    # tail -f /var/adm/messages
    

    Solaris Cluster는 모든 정보 메시지를 이 로그 파일에 인쇄합니다.

  3. acsls-rs 리소스 start_stop log의 끝 부분을 표시하려면 각 노드에서 다른 창을 설정합니다.

    # tail -f /var/cluster/logs/DS/acsls-rg/acsls-rs/start_stop_log.txt
    

    acsls_agt.sh 시작 스크립트가 게시한 모든 메시지는 여기에 표시됩니다.

  4. acsls-rs 프로브 로그의 끝 부분을 표시하려면 각 노드에서 세번째 창을 설정해야 합니다.

    # tail -f /var/cluster/logs/DS/acsls-rg/acsls-rs/probe_log.txt
    

    응용 프로그램이 시작되면 Solaris Cluster는 1분마다 ACSLS 리소스를 프로브합니다. 각 프로브에서 숫자 코드가 클러스터로 반환되며 이 결과는 probe_log.txt 파일에 인쇄됩니다. 각 프로브를 통해 표준 반환 값 5개가 이 로그에 게시됩니다.

      0 -  The probe found that ACSLS is healthy and functioning normally.
      1 -  The probe may not have completed due to a functional error.
      2 -  The probe reports that ACSLS is in a transitional state.
      3 -  The ACSLS application has been intentionally placed offline.
    201 -  A condition was detected that requires fail-over action.
    

    이는 Solaris Cluster가 페일오버 작업을 시작하는 201 코드에 대한 응답일 뿐입니다. 해당 작업을 프롬프트하는 조건은 ACSLS 클러스터 작업 장에 나와 있습니다. 클러스터 프로브의 모든 기타 반환 코드는 정보로 간주되며 클러스터 응답 작업은 명제화되지 않습니다.

    테스트용 샘플 프로브는 명령줄에서 언제든 명제화할 수 있습니다. acsAgt probe 명령을 사용합니다.

    #/opt/ACSLSHA/util/acsAgt probe 
    

위에서 설명한 모든 로그는 Solaris Cluster에 표시되는 대로 시스템 보기를 반영합니다. $ACS_HOME/log/ 디렉토리의 추가 로그 두 개는 ACSLS 응용 프로그램 레벨의 보기를 제공합니다. acsss_event.log는 응용 프로그램이 시작된 순간부터 ACSLS에서 발생하는 모든 중요 이벤트를 보고합니다. SMF에서 발생하는 모든 ACSLS 시작 문제는 acsls_start.log에 기록됩니다.

클러스터 모니터링 유틸리티

Solaris Cluster 유틸리티는 /usr/cluster/bin 디렉토리에 있습니다.

  • ACSLS 리소스 그룹의 현재 상태를 보려면 clrg list -v를 실행합니다.

  • 두 개의 클러스터 노드에 대한 현재 상태를 보려면 clrg status를 실행합니다.

  • 리소스 그룹의 상태를 보려면 clrs status를 실행합니다.

  • 노드, 쿼럼 장치 및 클러스터 리소스에서 상세 정보 상태를 가져오려면 cluster status를 실행합니다.

  • 클러스터 구성에서 자세한 구성 요소 목록을 보려면 cluster show를 실행합니다.

  • 리소스 그룹의 각 이더넷 노드에 대한 상태를 보려면 clnode status -m을 실행합니다.

  • 각 노드의 다양한 acsls-rg 리소스 상태를 보려면 scstat -g를 실행합니다.

  • 하트비트 네트워크 링크의 상태를 확인하려면 clintr status를 실행합니다.

  • IPMP 상태를 확인하려면 scstat -i를 실행합니다.

  • 노드 상태를 보려면 scstat -n을 실행합니다.

  • 쿼럼 구성 및 상태를 보려면 scstat -q 또는 clq status를 실행합니다.

  • 시간 초과 값을 포함해서 자세한 클러스터 리소스를 보려면 clresource show -v를 실행합니다.

복구 및 페일오버 테스트

이 절에서는 복구 및 페일오버 테스트를 위한 조건, 모니터링 및 테스트에 대해 설명합니다.

복구 조건

치명적인 시스템 조건 중에는 시스템 페일오버 이벤트 없이도 복구할 수 있는 경우가 많습니다. 예를 들어, IPMP의 경우 각 그룹의 이더넷 연결 하나가 어떠한 이유로든 실패할 수 있지만 대체 경로를 통해 무중단으로 통신이 재개됩니다.

공유 디스크 배열은 각 서버에서 두 개의 고유 포트를 사용해서 서버에 연결되어야 합니다. 하나의 경로가 중단될 경우 대체 경로를 통해 중단 없이 디스크 I/O 작업이 재개됩니다.

ACSLS는 Solaris SMF(서비스 관리 기능)로 모니터되는 여러 개의 소프트웨어 서비스로 구성됩니다. 사용자 acsss로 acsss status 명령을 사용해서 각 acsss 서비스를 나열할 수 있습니다. 이러한 서비스 중에는 PostgreSQL 데이터베이스, WebLogic 웹 응용 프로그램 서버 및 ACSLS 응용 프로그램 소프트웨어가 있습니다. 제공된 서비스가 Solaris 시스템에서 실패할 경우 SMF가 시스템 페일오버 없이 서비스를 자동으로 재부트합니다.

acsls 서비스 자체는 상위 acsss_daemon으로 모니터되는 여러 하위 프로세스로 구성됩니다. ACSLS 하위 프로세스를 나열하려면 psacs 명령을 사용합니다(사용자 acsss). 어떠한 이유로든 하위 프로세스 중 하나가 중단되면 상위 프로세스가 하위 프로세스를 즉시 재부트하고 정상 작업을 복구합니다.

복구 모니터링

디스크 I/O 및 이더넷 연결과 같은 시스템 리소스 복구를 보기 위한 최적의 위치는 시스템 로그 /var/adm/messages입니다.

SMF는 모니터하는 각 소프트웨어 서비스에 대한 특정 로그를 유지 관리합니다. 이 로그에는 시작, 다시 시작 및 종료 이벤트가 표시됩니다. 서비스 로그에 대한 전체 경로를 보려면 svcs -l service-name 명령을 실행합니다. ACSLS 서비스는 acsss 명령: $ acsss status를 사용해서 나열할 수 있습니다. 하위 프로세스는
$ acsss p-status
명령을 사용해서 나열할 수 있습니다.

ACSLS 하위 프로세스에 대한 복구를 보려면 acsss_event.log($ACS_HOME/ACSSS/log/acsss_event.log)를 모니터하면 됩니다. 이 로그에는 ACSLS 하위 프로세스를 포함하는 모든 복구 이벤트가 표시됩니다.

복구 테스트

중복 네트워크 연결은 Solaris IPMP 논리로 자동으로 다시 시작되어야 합니다. 공유 디스크 배열에 대해 중단된 데이터 연결은 중복된 데이터 경로에서 Solaris에 의해 자동으로 다시 시작되어야 합니다. Solaris 서비스 관리 기능으로 제어되는 서비스는 SMF에 의해 자동으로 다시 시작됩니다.

실제 페일오버 이벤트를 포함하는 테스트의 경우에는 $ACS_HOME/acslsha/pingpong_interval 파일에 정의된 등록 정보 설정을 확인합니다. 페일오버 이벤트를 트리거할 수 있는 조건에도 불구하고 Solaris Cluster는 이전 페일오버 이벤트가 지정된 pingpong_interval 내에 발생한 경우 페일오버 작업을 시작하지 않습니다.

pingpong 간격을 보거나 동적으로 변경하려면 /opt/ACSLSHA/util 디렉토리로 이동하고 acsAgt pingpong을 실행합니다.

# ./acsAgt pingpong
Pingpong_interval
   current value:  1200 seconds.
   desired value: [1200] 300
Pingpong_interval : 300 seconds.

다음 기술을 모두 사용하여 HA 설치의 복원성을 평가합니다.

  1. ACSLS가 작동 중일 때 활성 노드의 각 IPMP 그룹에서 하나의 이더넷 연결을 분리합니다. # scstat -i를 사용해서 상태를 모니터합니다.

    /var/adm/messages에서 반응을 확인합니다. ACSLS 작업은 이 절차로 중단되지 않습니다.

  2. 클러스터 Failover_modeHARD로 설정되었는지 확인합니다. ACSLS가 작동 중일 때 활성 서버에서 공유 디스크 리소스에 대한 하나의 광 섬유 또는 SAS 연결을 분리합니다.

    /var/adm/messages에서 반응을 확인합니다. ACSLS 작업은 이 절차로 중단되지 않습니다.

    중복된 각 I/O 연결에서 이 테스트를 반복합니다.

  3. acsss_daemon을 종료하여 ACSLS를 갑자기 종료합니다. pkill acsss_daemon을 사용합니다.

    svcs -l acsls를 실행하여 서비스 로그를 찾습니다.

    acsss_daemon이 중지되면 이 로그의 끝 부분을 확인합니다. SMF에 의해 서비스가 자동으로 다시 시작되었음을 확인합니다. acsls shutdown으로 acsls를 중지하면 비슷한 작업이 표시됩니다.

  4. SMF를 사용하여 acsls 서비스를 사용 안함으로 설정합니다.

    이 작업은 svcadm disable acsls를 사용해서 루트로 수행하거나 acsss disable을 사용해서 사용자 acsss로 수행할 수 있습니다.

    SMF가 이러한 종료 이벤트를 담당하기 때문에 acsls 서비스를 다시 시작하려고 시도하지 않습니다. 이는 적절한 동작입니다. SMF 아래에서 acsls 서비스를 다시 시작해야 합니다. rootsvcadm enable acsls 명령을 사용합니다. 또는 사용자 acsssacsss-enable 명령을 사용합니다.

  5. acsdb 서비스를 작동 중지합니다.

    사용자 acsdb.acsls_env 파일을 소스로 지정합니다.

    $ su acsdb
    $ . /var/tmp/acsls/.acsls_env
    

    이제 다음 명령을 사용하여 PostgreSQL 데이터베이스를 갑자기 사용 안함으로 설정합니다.

    pg_ctl stop \
         -D $installDir/acsdb/ACSDB1.0/data \
         -m immediate
    

    이 작업을 수행하면 데이터베이스가 작동 중지되므로 acsls 프로세스가 중지됩니다. svcs -l acsdb를 실행하여 acsdb 서비스 로그를 찾습니다.

    데이터베이스를 작동 중지할 때 acsdb 서비스 로그 및 acsls 서비스 로그의 끝 부분을 확인합니다. acsdb 서비스가 작동 중지될 때 acsls 서비스도 작동 중지되는지 확인합니다. 두 서비스 모두 SMF에 의해 자동으로 다시 시작됩니다.

  6. ACSLS가 작동 중일 때 사용자 acssspsacs를 실행하여 acsss_daemon 아래에서 실행 중인 하위 프로세스 목록을 가져옵니다.

    이러한 하위 프로세스 중 하나를 중지합니다. acsss_event.log에서 하위 프로세스가 다시 시작되고 복구 절차가 호출되는지 확인합니다.

페일오버 조건

Solaris Cluster Software는 Solaris 시스템을 모니터하면서 시스템 페일오버 이벤트가 필요한 치명적인 조건을 찾습니다. 이러한 조건들 중에는 사용자가 시작한 페일오버(acsAgt nodeSwitch 또는 clrg switch -n), 활성 노드에 대한 시스템 재부트, 시스템 작동 중단, 치명적인 메모리 결함 또는 활성 노드에서 복구할 수 없는 I/O 통신 등이 포함됩니다. Solaris Cluster는 특정 응용 프로그램에 대해 지정된 HA 에이전트도 모니터합니다. ACSLS HA 에이전트는 다음과 같은 조건에서 시스템 페일오버 이벤트를 요청합니다.

  • 활성 노드와 논리 호스트 사이에서 TCP/IP 통신이 손실된 경우

  • $ACS_HOME 파일 시스템이 마운트되지 않은 경우

  • 데이터베이스 백업 파일 시스템($ACS_HOME/.../backup)은 마운트되지 않습니다.

  • $ACS_HOME/acslsha/ha_acs_list.txt 파일에 지정된 ACS에 해당하는 라이브러리에 대한 통신이 끊긴 경우(이 상태가 온라인이 아니면 switch lmu가 불가능하거나 실패함)

페일오버 모니터링

일부 경우에는 # clrg status 명령을 사용해서 해당 노드의 페일오버 상태를 모니터할 수 있습니다.

start_stop_log의 끝 부분을 확인하여 페일오버 작업을 모니터할 수도 있습니다.

# tail -f /var/cluster/logs/DS/acsls-rg/acsls-rs/start_stop_log.txt

진단 페일오버 작업을 수행할 때는 두 노드 모두에서 /var/adm/messages 파일을 확인(tail -f)하는 것이 유용할 수 있습니다. ACSLS 클러스터 작업 모니터링을 참조하십시오.

페일오버 테스트

  1. 클러스터 페일오버 이벤트를 시작하는 간단한 명령은 acsAgt nodeSwitch입니다.

    # acsAgt nodeSwitch
    

    또는 해당 클러스터 명령을 사용합니다.

    # clrg switch -n <node name> acsls_rg
    

    이 작업으로 ACSLS 응용 프로그램이 작동 중지되고 활성 서버에서 대기 시스템으로 작업이 전환됩니다. -M -e 옵션은 새 노드에서 SMF 서비스를 사용으로 설정하도록 클러스터 서버에 지시합니다. ACSLS 클러스터 작업 모니터링을 참조하십시오.

  2. 활성 노드에서 시스템 재부트를 실행하면 대체 노드로 HA 전환이 즉시 시작됩니다.

    이 작업을 수행하면 새로운 활성 노드에서 ACSLS가 실행됩니다. 대기 노드에서 대기 시스템이 새로운 활성 노드 역할을 가장할 때 /var/adm/messages 파일의 끝 부분을 감시합니다. # clrg status 명령을 주기적으로 실행할 수도 있습니다.

  3. init 5를 사용해서 활성 서버 노드의 전원을 차단하고 시스템 페일오버를 확인합니다.

  4. 활성 서버 노드와 공유 디스크 스토리지 배열 사이의 데이터 라인을 모두 분리하고 대시 노드로의 시스템 전환을 확인합니다.

  5. 지정된 라이브러리가 정책 파일 ha_acs_list.txt에 나열된다고 가정하고 활성 서버 노드와 해당 라이브러리 사이의 이더넷 통신 연결 라인을 모두 분리합니다.

    대기 노드에 대한 시스템 페일오버를 확인합니다.

추가 테스트

미러링된 부트 드라이브가 핫 플러그할 수 있는 경우 부트 드라이브 중 하나를 사용 안함으로 설정하고 시스템이 완전히 작동되는 상태인지 확인합니다. 부트 드라이브 하나가 사용 안함으로 설정된 경우 시스템을 재부트해서 노드가 대체 부트 드라이브로부터 작동하는지 확인합니다. 2개의 각 노드에서 각 부트 드라이브에 대해 이 작업을 반복합니다.

활성 노드에서 단일 전원 공급 장치를 제거하면 시스템이 대체 전원 공급 장치를 사용해서 완전한 작동 상태를 유지해야 합니다.