이 장에서는 ACSLS HA 설치를 테스트하고 시스템에서 발생할 수 있는 문제 진단 및 해결을 위해 사용할 수 있는 여러 가지 리소스에 대해 설명합니다.
시작 중 또는 스위치 오버 이벤트 중 진행되는 작업은 노드 2개에 널리 배포됩니다. 따라서 테스트 중 전체 작업을 확인하도록 선택한 우세 지점은 작업이 진행되면서 펼쳐지지 않은 이벤트를 확인할 수 있는 기능을 결정할 수 있습니다. ha_console.sh 유틸리티에 광범위한 보기 설정에 대한 절차가 설명되어 있습니다.
테스트 중 전체 HA 동작을 관찰하는 데 권장되는 대시보드 구성은 셸 창 8개, 각 노드의 창 4개를 포함하는 것입니다.
root
에 대한 명령 셸은 필요에 따라 다양한 명령을 명제화하도록 각 노드에 대해 예약되어야 합니다.
시스템 /var/adm/messages
파일의 끝 부분을 표시하도록 각 노드의 창을 설정합니다.
# tail -f /var/adm/messages
Solaris Cluster는 모든 정보 메시지를 이 로그 파일에 인쇄합니다.
acsls-rs
리소스 start_stop log
의 끝 부분을 표시하려면 각 노드에서 다른 창을 설정합니다.
# tail -f /var/cluster/logs/DS/acsls-rg/acsls-rs/start_stop_log.txt
acsls_agt.sh
시작 스크립트가 게시한 모든 메시지는 여기에 표시됩니다.
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 설치의 복원성을 평가합니다.
ACSLS가 작동 중일 때 활성 노드의 각 IPMP 그룹에서 하나의 이더넷 연결을 분리합니다. # scstat -i
를 사용해서 상태를 모니터합니다.
/var/adm/messages
에서 반응을 확인합니다. ACSLS 작업은 이 절차로 중단되지 않습니다.
클러스터 Failover_mode
가 HARD로 설정되었는지 확인합니다. ACSLS가 작동 중일 때 활성 서버에서 공유 디스크 리소스에 대한 하나의 광 섬유 또는 SAS 연결을 분리합니다.
/var/adm/messages
에서 반응을 확인합니다. ACSLS 작업은 이 절차로 중단되지 않습니다.
중복된 각 I/O 연결에서 이 테스트를 반복합니다.
acsss_daemon
을 종료하여 ACSLS를 갑자기 종료합니다. pkill acsss_daemon
을 사용합니다.
svcs -l acsls
를 실행하여 서비스 로그를 찾습니다.
acsss_daemon
이 중지되면 이 로그의 끝 부분을 확인합니다. SMF에 의해 서비스가 자동으로 다시 시작되었음을 확인합니다. acsls shutdown
으로 acsls
를 중지하면 비슷한 작업이 표시됩니다.
SMF를 사용하여 acsls
서비스를 사용 안함으로 설정합니다.
이 작업은 svcadm disable acsls
를 사용해서 루트로 수행하거나 acsss disable
을 사용해서 사용자 acsss
로 수행할 수 있습니다.
SMF가 이러한 종료 이벤트를 담당하기 때문에 acsls
서비스를 다시 시작하려고 시도하지 않습니다. 이는 적절한 동작입니다. SMF 아래에서 acsls
서비스를 다시 시작해야 합니다. root
로 svcadm enable acsls
명령을 사용합니다. 또는 사용자 acsss
로 acsss-enable
명령을 사용합니다.
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에 의해 자동으로 다시 시작됩니다.
ACSLS가 작동 중일 때 사용자 acsss
로 psacs
를 실행하여 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 클러스터 작업 모니터링을 참조하십시오.
클러스터 페일오버 이벤트를 시작하는 간단한 명령은 acsAgt nodeSwitch
입니다.
# acsAgt nodeSwitch
또는 해당 클러스터 명령을 사용합니다.
# clrg switch -n <node name> acsls_rg
이 작업으로 ACSLS 응용 프로그램이 작동 중지되고 활성 서버에서 대기 시스템으로 작업이 전환됩니다. -M -e
옵션은 새 노드에서 SMF 서비스를 사용으로 설정하도록 클러스터 서버에 지시합니다. ACSLS 클러스터 작업 모니터링을 참조하십시오.
활성 노드에서 시스템 재부트를 실행하면 대체 노드로 HA 전환이 즉시 시작됩니다.
이 작업을 수행하면 새로운 활성 노드에서 ACSLS가 실행됩니다. 대기 노드에서 대기 시스템이 새로운 활성 노드 역할을 가장할 때 /var/adm/messages
파일의 끝 부분을 감시합니다. # clrg status
명령을 주기적으로 실행할 수도 있습니다.
init 5
를 사용해서 활성 서버 노드의 전원을 차단하고 시스템 페일오버를 확인합니다.
활성 서버 노드와 공유 디스크 스토리지 배열 사이의 데이터 라인을 모두 분리하고 대시 노드로의 시스템 전환을 확인합니다.
지정된 라이브러리가 정책 파일 ha_acs_list.txt
에 나열된다고 가정하고 활성 서버 노드와 해당 라이브러리 사이의 이더넷 통신 연결 라인을 모두 분리합니다.
대기 노드에 대한 시스템 페일오버를 확인합니다.