이 절에서는 Agent Builder 사용 전에 완료해야 할 작업을 포함하여 Agent Builder 사용 방법에 대해 설명합니다. 또한 이 절에서는 자원 유형 코드를 생성한 후의 Agent Builder 이용 방법에 대해서도 설명합니다.
Agent Builder를 사용하려면 먼저 응용 프로그램이 가용성 또는 확장성이 뛰어난 응용 프로그램이 되기 위한 기준을 충족시키는지 확인해야 합니다. Agent Builder에서는 응용 프로그램의 런타임 특성만을 토대로 분석을 하므로 이러한 분석을 수행할 수 없습니다. 응용 프로그램 적합성 분석에서는 이에 대한 자세한 정보를 제공합니다.
Agent Builder에서는 대부분의 경우 최소한의 부분적인 솔루션을 제공하기는 하지만 항상 사용자 응용 프로그램에 대한 완전한 자원 유형을 만들 수 있는 것은 아닙니다. 예를 들어, 보다 복잡한 응용 프로그램에는 Agent Builder에서 기본적으로 생성하지 않는 추가 코드가 필요할 수 있습니다. 이러한 코드로는 추가 등록 정보에 대한 검증 확인을 추가하는 코드, Agent Builder에서 제공하지 않는 매개 변수를 조정하는 코드가 포함됩니다. 이런 경우 생성된 소스 코드나 RTR 파일을 변경해야 합니다. Agent Builder는 이런 종류의 융통성을 제공할 수 있도록 설계되었습니다.
Agent Builder에서는 사용자가 자신만의 특정 자원 유형 코드를 추가할 수 있는 생성된 소스 코드의 특정 지점에 주석을 배치합니다. 소스 코드를 변경한 후 Agent Builder에서 생성한 makefile을 사용하여 소스 코드를 다시 컴파일하고 자원 유형 패키지를 다시 생성할 수 있습니다.
Agent Builder에서 생성한 코드를 사용하지 않고 전체 자원 유형 코드를 작성한 경우라도 Agent Builder에서 제공한 makefile 및 구조를 이용하여 자원 유형에 대한 Solaris 패키지를 만들 수 있습니다.
Agent Builder에는 특수 설치가 필요하지 않습니다. Agent Builder는 기본적으로 표준 Sun Cluster 소프트웨어의 일부로 설치된 SUNWscdev 패키지에 포함되어 있습니다(자세한 내용은 Solaris OS용 Sun Cluster 소프트웨어 설치 안내서 참조). Agent Builder를 사용하기 전에 다음 정보를 확인하십시오.
$PATH 변수에 Java가 포함되어 있는지 확인합니다. Agent Builder는 Java (Java 개발 키트 버전 1.3.1 이상)를 사용하며 Java가 $PATH에 없을 경우 scdsbuilder 에서 오류 메시지를 반환합니다.
Solaris 8 이상의 “Developer System Support” 소프트웨어 그룹을 설치했는지 확인합니다.
cc 컴파일러가 $PATH 변수에 포함되어 있는지 확인합니다. Agent Builder는 $PATH 변수의 첫 번째 cc 항목을 사용하여 자원 유형에 대한 C 이진 코드를 생성하기 위한 컴파일러를 식별합니다. cc가 $PATH에 포함되지 않은 경우 Agent Builder는 해당 옵션을 비활성화하여 C 코드를 생성합니다(Create 화면 사용 참조).
표준 cc 컴파일러가 아닌 다른 컴파일러를 Agent Builder와 함께 사용할 수 있습니다. 이렇게 할 수 있는 한 가지 방법은 cc에서 gcc 등 다른 컴파일러로 $PATH에 심볼릭 링크를 만드는 것입니다. 또 다른 방법은 makefile(현재 CC=cc)의 컴파일러 사양을 다른 컴파일러의 절대 경로로 변경하는 것입니다. 예를 들어, Agent Builder에서 생성한 makefile에서 CC=cc를 CC=pathname/gcc로 변경합니다. 이 경우 Agent Builder를 직접 실행할 수 없지만 데이터 서비스 코드와 패키지를 생성하려면 make 및 make pkg 명령을 사용해야 합니다.
다음 명령을 입력하여 Agent Builder를 시작합니다.
% /usr/cluster/bin/scdsbuilder |
다음 그림과 같이 초기 Sun Builder 화면이 나타납니다.
GUI 버전을 액세스할 수 없는 경우 명령줄 인터페이스(Agent Builder 명령줄 버전 사용 참조)를 통해 Agent Builder에 액세스할 수 있습니다.
Agent Builder에서는 새로운 자원 유형 작성 프로세스를 안내하는 두 개의 화면을 제공합니다.
Create—이 화면에서는 생성된 파일의 이름 및 작업 디렉토리(자원 유형 템플리트를 만들고 구성하는 디렉토리) 등 만들려는 자원 유형에 대한 기본적인 정보를 제공합니다. 또한 만들려는 자원의 종류(확장 가능 또는 페일오버), 기본 응용 프로그램이 네트워크를 인식하는지 여부(즉, 클라이언트와 통신하기 위해 네트워크를 사용하는지 여부) 및 생성할 소스 유형(C, ksh 또는 GDS)을 지정합니다. 일반 데이터 서비스(GDS)에 대한 자세한 내용은 제 10 장을 참조하십시오. 해당 출력을 생성하려면 Configure 화면을 표시하기 전에 이 화면에서 해당 정보를 입력하고 Create를 선택해야 합니다.
Configure—이 화면에서는 응용 프로그램을 시작하기 위한 명령을 제공해야 합니다. 또는 응용 프로그램을 중지 및 검사하기 위한 명령을 제공할 수 있습니다. 이러한 명령을 지정하지 않은 경우에는 생성된 출력에서 신호를 사용하여 응용 프로그램을 중지하고 기본 검사 기법(Configure 화면 사용의 검사 명령에 대한 설명 참조)을 제공합니다. 이 화면을 사용하여 세 명령 각각의 시간 초과값도 변경할 수 있습니다.
기존 자원 유형의 작업 디렉토리에서 Agent Builder를 시작한 경우 Agent Builder에서 Create 및 Configure 화면을 기존 자원 유형 값으로 초기화합니다.
Agent Builder 화면의 버튼 또는 메뉴 명령 사용 방법에 대한 의문 사항은 Agent Builder 탐색를 참조하십시오.
자원 유형을 만들기 위한 첫 번째 단계는 Agent Builder를 시작할 때 나타나는 Create 화면을 채우는 것입니다. 다음 그림에서는 필드에 정보를 입력한 후의 Create 화면을 보여줍니다.
Create 화면에는 다음과 같은 필드, 라디오 버튼 및 확인란이 포함되어 있습니다.
Vendor Name —자원 유형의 공급업체를 식별하는 이름. 대개 공급업체의 주식 기호를 지정하지만 해당 공급업체를 고유하게 식별하는 모든 이름이 유효합니다. 영숫자만 사용하십시오.
Application Name — 자원 유형 이름입니다. 영숫자만 사용하십시오.
공급업체 이름과 응용 프로그램 이름을 함께 사용하여 자원 유형의 이름을 구성합니다. 이름은 9자를 넘지 않아야 합니다.
Working Directory — Agent Builder가 대상 자원 유형에 대해 만든 모든 파일을 포함하기 위해 만든 디렉토리 구조의 디렉토리입니다. 하나의 작업 디렉토리에 하나의 자원 유형만 만들 수 있습니다. Agent Builder에서 이 필드를 Agent Builder를 시작한 디렉토리 경로로 초기화해도 사용자는 다른 이름을 입력하거나 Browse 버튼을 사용하여 다른 디렉토리를 찾을 수 있습니다.
Agent Builder는 작업 디렉토리에 자원 유형 이름을 가진 하위 디렉토리를 만듭니다. 예를 들어, SUNW가 공급업체 이름이고 ftp가 응용 프로그램 이름일 경우 Agent Builder는 이 하위 디렉토리 이름을 SUNWftp로 지정합니다.
Agent Builder는 대상 자원 유형의 모든 디렉토리와 파일을 이 하위 디렉토리에 넣습니다(디렉토리 구조 참조).
Scalable 또는 Failover — 대상 자원 유형이 페일오버 또는 확장 가능인지 여부를 지정합니다.
Network Aware — 기본 응용 프로그램이 네트워크를 인식하는지, 즉 네트워크를 사용하여 해당 클라이언트와 통신하는지 여부를 지정합니다. 네트워크 인식을 지정하려면 해당 확인란을 선택하고, 비네트워크 인식을 지정하려면 비워 둡니다. Korn 쉘 코드에서는 응용 프로그램이 네트워크 인식이어야 하므로 Agent Builder에서 이 확인란을 선택합니다. ksh 또는 GDS 버튼을 선택하면 이 확인란이 회색으로 비활성화됩니다.
C, ksh — 생성된 소스 코드의 언어를 지정합니다. 이러한 옵션들은 상호 배타적이지만 Agent Builder를 사용하면 ksh 생성 코드를 가진 자원 유형을 만든 다음, 동일한 정보를 다시 사용하여 C 생성 코드를 만들 수 있습니다(기존 자원 유형 복제 참조).
GDS — 해당 서비스가 일반 데이터 서비스가 되도록 지정합니다. 일반 데이터 서비스 작성 및 구성에 대한 자세한 내용은 제 10 장을 참조하십시오.
cc 컴파일러가 $PATH에 없으면 Agent Builder는 C 옵션 버튼을 회색으로 표시하고 ksh 버튼에 선택 표시를 합니다. 다른 컴파일러를 지정하려면 Agent Builder 설치 및 구성 마지막 부분의 설명을 참조하십시오.
필수 정보를 입력한 후 Create 버튼을 누르십시오. 화면 아래의 Output Log에서는 Agent Builder가 수행 중인 작업을 표시합니다. Edit 메뉴에서 Save Output Log 명령을 사용하여 출력 로그의 정보를 저장할 수 있습니다.
작업을 마치면 Agent Builder에서 성공 메시지나 이 단계를 완료할 수 없다는 경고 메시지를 표시합니다. 자세한 내용은 출력 로그를 확인합니다.
Agent Builder가 성공적으로 완료되면 Next 버튼을 눌러 자원 유형 생성을 완료할 수 있는 Configure 화면을 표시할 수 있습니다.
전체 자원 유형 생성은 2단계의 프로세스이며, 첫 번째 단계(Create)를 완료한 다음 입력한 정보나 Agent Builder에서 완료한 작업을 잃어버리지 않고 Agent Builder를 종료할 수 있습니다(완료된 작업 재사용 참조).
Agent Builder에서 자원 유형 만들기를 완료한 후 Create 화면에서 Next 버튼을 선택하면 다음 그림과 같이 Configure 화면이 나타납니다. 자원 유형을 만들기 전에는 Configure 화면을 액세스할 수 없습니다.
Configure 화면에는 다음과 같은 필드가 있습니다.
Start Command — 기본 응용 프로그램을 시작하기 위해 UNIX 쉘에 전달할 수 있는 전체 명령줄입니다. 사용자는 반드시 이 명령을 지정해야 합니다. 제공된 필드에 해당 명령을 입력하거나 Browse 버튼을 사용하여 명령이 포함된 파일을 찾아 응용 프로그램을 시작할 수 있습니다.
전체 명령줄에는 호스트 이름, 포트 번호, 구성 파일 경로 등과 같이 응용 프로그램을 시작하는 데 필요한 모든 것이 포함되어야 합니다. 응용 프로그램에서 명령줄에 호스트 이름을 지정하도록 요구하는 경우 Agent Builder에서 정의한 $hostnames 변수를 사용할 수 있습니다(Agent Builder $hostnames 변수 사용 참조).
명령을 큰따옴표(“”)로 묶지 마십시오.
기본 응용 프로그램에 다중 독립 프로세스 트리가 있고 각 프로세스가 PMF 제어의 고유한 태그로 시작할 경우 단일 명령을 지정할 수 없습니다. 반대로 각 프로세스 트리를 시작하는 개별 명령을 사용하여 텍스트 파일을 작성하고 시작 명령 텍스트 필드에서 이 파일의 경로를 지정해야 합니다. 이 파일이 제대로 작동하기 위한 일부 특성을 나열하는 다중 독립 프로세스 트리를 가진 자원 유형 만들기를 참조하십시오.
Stop Command — 기본 응용 프로그램을 중지하기 위해 UNIX 쉘에 전달할 수 있는 전체 명령줄입니다. 제공된 필드에 명령을 입력하거나 Browse 버튼을 사용하여 응용 프로그램을 중지하는 명령이 포함된 파일을 찾을 수 있습니다. 응용 프로그램에서 명령줄에 호스트 이름을 지정하도록 요구하는 경우 Agent Builder에서 정의한 $hostnames 변수를 사용할 수 있습니다(Agent Builder $hostnames 변수 사용 참조).
이 명령은 선택 사항입니다. 중지 명령을 지정하지 않은 경우에는 생성된 코드에서 다음과 같은 신호(Stop 메소드에서)를 사용하여 응용 프로그램을 중지합니다.
Stop 메소드는 SIGTERM을 보내 응용 프로그램을 중지하고 시간 초과값의 80% 동안 대기한 다음 응용 프로그램을 종료합니다.
SIGTERM 신호가 실패한 경우 Stop 메소드는 SIGKILL을 보내 응용 프로그램을 중지하고 시간 초과값의 15% 동안 대기한 다음 응용 프로그램을 종료합니다.
SIGKILL이 실패한 경우 Stop 메소드는 오류 상태로 종료됩니다. (시간 초과값의 나머지 5%는 오버헤드를 위해 예약됩니다.)
응용 프로그램이 완전히 중지되기 전에 중지 명령이 반환되지 않도록 합니다.
Probe Command — 주기적으로 실행하여 응용 프로그램의 상태를 확인하고 0 (성공)과 100 (완전한 실패) 사이의 적절한 종료 상태를 반환할 수 있는 명령입니다. 이 명령은 선택 사항입니다. 명령에 대한 전체 경로를 입력하거나 Browse 버튼을 사용하여 응용 프로그램을 검사하기 위한 명령이 포함된 파일을 찾을 수 있습니다.
일반적으로 기본 응용 프로그램의 단순 클라이언트를 지정합니다. 검사 명령을 지정하지 않은 경우 생성된 코드는 자원에 사용된 포트에 연결하거나 연결을 끊습니다. 이에 성공하면 응용 프로그램의 상태가 좋은 것입니다. 네트워크 인식 응용 프로그램에만 검사 명령을 사용할 수 있습니다. Agent Builder에서는 항상 검사 명령을 생성하지만, 네트워크 비인식 응용 프로그램에는 사용할 수 없습니다.
응용 프로그램에서 검사 명령줄에 호스트 이름을 지정하도록 요구할 경우 Agent Builder에서 정의한 $hostnames 변수를 사용할 수 있습니다(Agent Builder $hostnames 변수 사용 참조).
Timeout — (각 명령의 경우)—각 명령에 대한 시간 초과값(초)입니다. 새 값을 지정하거나 Agent Builder에서 제공하는 기본값(시작 및 중지의 경우 300초, 검사의 경우 30초)을 사용할 수 있습니다.
많은 응용 프로그램, 특히 네트워크 인식 응용 프로그램의 경우 고객 요청을 수신 및 처리하는 응용 프로그램의 호스트 이름을 명령줄의 응용 프로그램에 전달해야 합니다. 따라서 대부분의 경우 호스트 이름은 (Configure 화면에서) 대상 자원 유형에 대한 시작, 중지 및 검사 명령에 지정해야 할 매개 변수입니다. 그러나 응용 프로그램이 수신하는 호스트 이름은 클러스터에 관련된 것으로 해당 자원이 클러스터에 실행될 때 확인되며 Agent Builder에서 사용자 자원 유형 코드를 생성할 때는 확인할 수 없습니다.
이 문제를 해결하기 위해 Agent Builder는 $hostnames 변수를 제공하여 사용자가 명령줄에서 시작, 중지 및 검사 명령을 지정할 수 있도록 합니다. 다음 예와 같이 $hostnames 변수를 실제 호스트 이름과 같이 정확하게 지정합니다.
/opt/network_aware/echo_server -p port_no -l $hostnames |
대상 자원 유형의 자원이 클러스터에서 실행될 경우에는 자원의 Network_resources_used 자원 등록 정보에서 해당 자원에 대해 구성된 LogicalHostname 또는 SharedAddress 호스트 이름이 $hostnames 변수 값으로 대체됩니다.
멀티 호스트 이름을 가진 Network_resources_used 등록 정보를 구성한 경우 $hostnames 변수에는 모든 호스트 이름이 쉼표로 구분되어 포함됩니다.
Agent Builder는 둘 이상의 독립적인 프로세스 트리를 가진 응용 프로그램에 대한 자원 유형을 만들 수 있습니다. 이러한 프로세스 트리는 PMF에서 개별적으로 모니터하고 시작한다는 점에서 독립적입니다. PMF는 고유한 태그를 사용하여 각 프로세스를 시작합니다.
Agent Builder를 사용하면 사용자가 지정한 생성된 소스 코드가 C일 경우에만 다중 독립 프로세스 트리를 가진 자원 유형을 만들 수 있습니다. Agent Builder를 사용하여 ksh나 GDS에 대한 이러한 자원 유형을 만들 수 없습니다. ksh 또는 GDS에 대해 이러한 자원 유형을 만들려면 수동으로 코드를 작성해야 합니다.
다중 독립 프로세스 트리를 가진 기본 응용 프로그램의 경우 단일 명령줄을 지정하여 응용 프로그램을 시작할 수 없습니다. 그보다는 텍스트 파일을 만들어 각각의 줄이 명령에 대한 전체 경로를 지정하여 응용 프로그램 프로세스 트리 중 하나를 시작해야 합니다. 이 파일의 모든 줄은 공백이 아니어야 합니다. Configure 화면의 Start Command 텍스트 필드에 이 텍스트 파일을 지정합니다.
이 파일에 실행 권한을 부여하지 않으면 Agent Builder에서 이 파일을 구별하여 단순 실행 가능 스크립트로 여러 프로세스 트리를 시작할 수 있습니다. 텍스트 파일에 실행 권한이 제공된 경우 해당 자원은 클러스터에 정상으로 나타나지만 모든 명령은 하나의 PMF 태그에서 시작됩니다. 따라서 PMF에서 개별적으로 프로세스 트리를 모니터 및 다시 시작할 수 없습니다.
Agent Builder를 사용하여 여러 방법으로 완료된 작업을 이용할 수 있습니다.
Agent Builder를 사용하여 만든 기존 자원 유형을 복제할 수 있습니다.
Agent Builder에서 생성한 소스 코드를 편집한 다음 코드를 다시 컴파일하여 새로운 패키지를 만들 수 있습니다.
다음 절차를 수행하여 Agent Builder에서 생성한 기존 자원 유형을 복제합니다.
기존 자원 유형을 Agent Builder에 로드합니다. 다음 두 가지 방법으로 로드할 수 있습니다.
Create 화면에서 작업 디렉토리를 변경합니다.
디렉토리 선택에는 Browse 버튼을 사용해야 합니다. 새 디렉토리 이름을 입력하는 것으로는 충분하지 않습니다. 디렉토리를 선택한 후 Agent Builder에서 Create 버튼을 다시 사용할 수 있습니다.
변경 작업을 수행합니다.
이 절차를 통해 자원 유형에 대해 생성된 코드 유형을 변경할 수 있습니다. 예를 들어, 처음에 ksh 버전의 자원 유형을 만들었지만 시간이 지나면서 C 버전이 필요한 경우에는 기존 ksh 자원 유형을 로드하고, 출력 언어를 C로 변경한 다음, Agent Builder에서 C 버전의 자원 유형을 만들도록 할 수 있습니다.
복제된 자원 유형을 만듭니다.
Create를 선택하여 자원 유형을 만듭니다. Next를 선택하여 Configure 화면을 표시합니다. Configure를 선택하여 자원 유형을 구성한 다음 Cancel을 선택하여 마칩니다.
Agent Builder에서는 자원 유형 생성 프로세스를 간소화하기 위해 입력 수를 제한하며, 이에 따라 생성되는 자원 유형의 범위도 제한됩니다. 따라서 추가 등록 정보에 대한 검증 확인 등 보다 복잡한 기능을 추가하거나 Agent Builder에서 제공하지 않는 매개 변수를 조정하려면 생성된 소스 코드나 RTR 파일을 수정해야 합니다.
소스 파일은 install_directory /rt_name/src 디렉토리에 있습니다. Agent Builder는 사용자가 코드를 추가할 수 있는 위치의 소스 코드에 주석을 포함시킵니다. 주석의 형식은 다음과 같습니다(C 코드의 경우).
/* User added code -- BEGIN vvvvvvvvvvvvvvv */ /* User added code -- END ^^^^^^^^^^^^^^^ */ |
이러한 주석은 주석 행의 시작 부분에 파운드 기호(#)를 사용한다는 점을 제외하면 K 쉘 코드에서와 동일합니다.
예를 들어, rt_name.h에서는 다른 프로그램에서 사용하는 모든 유틸리티 루틴을 선언합니다. 선언 목록 끝에는 사용자 코드에 추가했을 수 있는 추가 루틴을 선언할 수 있는 주석이 있습니다.
또한 Agent Builder는 install_directory/rt_name/src 디렉토리에 적절한 대상과 함께 makefile을 생성합니다. make 명령을 사용하여 소스 코드를 다시 컴파일하고 make pkg 명령을 사용하여 자원 유형 패키지를 다시 생성합니다.
RTR 파일은 install_directory/ rt_name/etc 디렉토리에 있습니다. 표준 텍스트 편집기를 사용하여 RTR 파일을 편집할 수 있습니다. RTR 파일에 대한 자세한 내용은 자원 및 자원 유형 등록 정보 설정를, 등록 정보에 대한 내용은 부록 A를 참조하십시오.
Agent Builder 명령줄 버전에는 그래픽 사용자 인터페이스와 동일한 2단계 프로세스가 있습니다. 하지만, 그래픽 사용자 인터페이스에서 정보를 입력하는 대신 매개 변수를 scdscreate(1HA) 및 scdsconfig(1HA) 명령에 전달합니다.
Agent Builder 명령줄 버전을 사용하려면 다음 단계를 수행합니다.
scdscreate를 사용하여 가용성이 높거나(HA) 확장 가능한 응용 프로그램을 만들기 위한 Sun Cluster 자원 유형 템플리트를 만듭니다.
scdsconfigure를 사용하여 scdscreate로 만든 자원 유형 템플리트를 구성합니다.
디렉토리를 작업 디렉토리의 pkg 하위 디렉토리로 변경합니다.
pkgadd(1M) 명령을 사용하여 scdscreate로 만든 패키지를 설치합니다.
원할 경우 생성된 소스 코드를 편집합니다.
시작 스크립트를 실행합니다.