Sun Java System Application Server 9.1 고가용성 관리 설명서

HADB 설정 준비

이 절에서는 다음 항목에 대해 설명합니다.

이러한 작업을 수행한 후에 3 장, 고가용성 데이터베이스 관리을 참조하십시오.

HADB에 대한 최신 정보를 보려면 Sun Java System Application Server 9.1 릴리스 노트를 참조하십시오.

필수 조건 및 제한 사항

HADB를 설치 및 구성하기 전에 Sun Java System Application Server 9.1 릴리스 노트에 설명된 요구 사항을 네트워크 및 하드웨어 환경에서 충족하는지 확인합니다. 또한 Veritas의 경우와 같이 특정 파일 시스템에 대한 제한 사항이 있습니다. 자세한 내용은 릴리스 노트를 참조하십시오.

HADB는 공유 메모리 세그먼트를 만들어 연결할 때 Intimate Shared Memory(SHM_SHARE_MMU 플래그)를 사용합니다. 이 플래그를 사용하면 공유 메모리 세그먼트가 물리적 메모리로 잠기기 때문에 페이지 아웃되지 않습니다. 따라서 HADB의 공유 메모리가 실제 메모리에 잠기며 이로 인해 성능이 낮은 시스템에서 설치에 영향을 주기 쉽습니다. Application Server와 HADB를 공동 배치할 경우 권장량의 메모리를 설치해야 합니다.

네트워크 중복 구성

중복 네트워크를 구성하면 단일 네트워크 장애가 발생해도 HADB가 사용 가능한 상태를 유지합니다. 다음의 두 가지 방식으로 중복 네트워크를 구성할 수 있습니다.

네트워크 다중 경로 설정

네트워크 다중 경로를 설정하기 전에 IP Network Multipathing Administration Guide의 Administering Network Multipathing 절을 참조하십시오.

Procedure이미 IP 다중 경로를 사용하는 HADB 호스트 시스템 구성

  1. 네트워크 인터페이스 실패 감지 시간을 설정합니다.

    HADB가 다중 경로 페일오버를 제대로 지원하기 위해서는 네트워크 인터페이스 실패 감지 시간이 /etc/default/mpathdFAILURE_DETECTION_TIME 매개 변수로 지정된 대로 1초(1000밀리초)를 초과해서는 안 됩니다. 원래 값이 큰 경우 파일을 편집하여 이 매개 변수의 값을 1000으로 변경합니다.


    FAILURE_DETECTION_TIME=1000

    변경 내용을 적용하려면 다음 명령을 사용하십시오.


    pkill -HUP in.mpathd
  2. HADB에서 사용하도록 IP 주소를 설정합니다.

    IP Network Multipathing Administration Guide에 설명된 대로 다중 경로는 물리적 네트워크 인터페이스를 다중 경로 인터페이스 그룹으로 그룹화하는 것입니다. 해당 그룹 내의 물리적 인터페이스는 물리적 인터페이스 주소와 테스트 주소 등

    • 데이터 전송에 사용되는 물리적 인터페이스 주소

    • Solaris 내부용으로 사용되는 테스트 주소

    hadbm create --hosts를 사용할 때는 다중 경로 그룹에서 물리적 인터페이스 주소를 하나만 지정합니다.


예 2–1 다중 경로 설정

이름이 host1 및 host2인 두 개의 호스트 시스템이 있고 각 시스템에 두 개의 물리적 네트워크 인터페이스가 있는 경우 두 인터페이스를 다중 경로 그룹으로 설정합니다. 각 호스트에서 ifconfig -a를 실행합니다.

host1에서 다음과 같은 결과가 출력됩니다.


bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER>
mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255

bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255

host2에서 다음과 같은 결과가 출력됩니다.


bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge0:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255

bge1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> 
mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 
groupname mp0

bge1:1: flags=9040843<UP,BROADCAST,RUNNING,MULTICAST,DEPRECATED,IPv4,NOFAILOVER> 
mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255

이 예에서는 두 호스트의 물리적 네트워크 인터페이스가 bge0bge1 뒤에 나열됩니다. bge0:1bge1:1 뒤에 나열되는 인터페이스는 IP Network Multipathing Administration Guide에 설명된 대로 다중 경로 테스트 인터페이스(ifconfig 출력에 DEPRECATED로 표시됨)입니다.

이 환경에서 HADB를 설정하려면 각 호스트에서 물리적 인터페이스 주소 하나를 선택합니다. 이 예에서 HADB는 host1의 IP 주소 129.159.115.10과 host2의 129.159.115.20을 사용합니다. 호스트당 데이터베이스 노드가 한 개인 데이터베이스를 만들려면 hadbm create --hosts 명령을 사용합니다. 예를 들면 다음과 같습니다.


hadbm create --hosts 129.159.115.10,129.159.115.20

각 호스트에 데이터베이스 노드가 두 개인 데이터베이스를 만들려면 다음 명령을 사용합니다.


hadbm create --hosts 129.159.115.10,129.159.115.20,
129.159.115.10,129.159.115.20

두 가지 경우에 별도의 매개 변수를 사용하여 host1 및 host2의 에이전트가 사용할 시스템의 인터페이스를 지정하도록 에이전트를 구성해야 합니다. 따라서 host1에서는 다음을 사용합니다.


ma.server.mainternal.interfaces=129.159.115.10

또한 host2에서는 다음을 사용합니다.


ma.server.mainternal.interfaces=129.159.115.20

ma.server.mainternal.interfaces 변수에 대한 자세한 내용은 구성 파일을 참조하십시오.


이중 네트워크 구성

단일 네트워크 장애를 허용하도록 HADB를 활성화하려면 운영 체제(예: Solaris)에서 지원할 경우 IP 다중 경로를 사용합니다. Windows Server 2003의 경우 이중 네트워크에서 제대로 작동하지 않으므로 이 운영 체제에서는 이중 네트워크를 사용하여 HADB를 구성하지 않도록 합니다.

운영 체제가 IP 다중 경로에 대해 구성되지 않았으며 HADB 호스트에 두 개의 NIC가 장착되어 있으면 이중 네트워크를 사용하도록 HADB를 구성할 수 있습니다. 모든 호스트에 대해 각 네트워크 인터페이스 카드(NIC)의 IP 주소가 별도의 IP 서브넷에 있어야 합니다.

데이터베이스 내에서 모든 노드가 단일 네트워크에 연결되어 있거나 모든 노드가 두 개의 네트워크에 연결되어 있어야 합니다.


주 –

서브넷 간 라우터는 서브넷 간에 UDP 멀티캐스트 메시지를 전달하도록 구성되어야 합니다.


HADB 데이터베이스를 만들 때 –hosts 옵션을 사용하여 각 노드, 즉 각 NIC IP 주소에 대해 하나씩 두 개의 IP 주소나 호스트 이름을 지정합니다. 노드마다 첫 번째 IP 주소는 net-0에 있고 두 번째 주소는 net-1에 있습니다. 구문은 다음과 같습니다. 이 경우 동일한 노드에 대한 호스트 이름을 플러스 기호(+)로 구분해서 입력합니다.

--hosts=node0net0name+node0net1name
,node1net0name+node1net1name
,node2net0name+node2net1name
, ...

예를 들어, 다음 인수는 각각 두 개의 네트워크 인터페이스를 갖는 두 개의 노드를 만듭니다. 이러한 노드를 만드는 데 다음 호스트 옵션이 사용됩니다.

--hosts 10.10.116.61+10.10.124.61,10.10.116.62+10.10.124.62

따라서 네트워크 주소는 다음과 같이 지정됩니다.

10.10.116.6110.10.116.62가 동일한 서브넷에 있고, 10.10.124.6110.10.124.62가 동일한 서브넷에 있습니다.

이 예에서 관리 에이전트는 동일한 서브넷을 사용해야 합니다. 따라서 구성 변수 ma.server.mainternal.interfaces10.10.116.0/24 등으로 설정해야 합니다. 이러한 설정은 이 예의 두 에이전트에 사용될 수 있습니다.

공유 메모리 및 세마포 구성

HADB를 설치하기 전에 공유 메모리 및 세마포를 구성해야 합니다. 절차는 운영 체제에 따라 다릅니다.

호스트에서 HADB가 아닌 응용 프로그램을 실행할 경우 이러한 응용 프로그램의 공유 메모리 및 세마포 사용을 계산하고 HADB에 필요한 값에 추가합니다. 이 절에서 권장하는 값은 각 호스트에서 최대 6개의 HADB 노드를 실행하는 데 충분합니다. 7개 이상의 HADB 노드를 실행하거나 추가 공유 메모리와 세마포가 필요한 응용 프로그램을 호스트에서 실행할 경우에만 값을 늘리면 됩니다.

세마포 수가 너무 적은 경우 HADB가 실패하고 No space left on device 오류 메시지가 표시될 수 있습니다. 이 오류는 데이터베이스를 시작하는 중 또는 런타임 중에 발생할 수 있습니다.

ProcedureSolaris에서 공유 메모리 및 세마포 구성

세마포가 전역 운영 체제 자원이기 때문에 구성은 HADB뿐만 아니라 호스트에서 실행 중인 모든 프로세스에 의존합니다. Solaris에서 /etc/system 파일을 편집하여 세마포 설정을 구성합니다.

  1. 루트로 로그인합니다.

  2. 공유 메모리를 구성합니다.

    • 호스트에서 단일 공유 메모리 세그먼트의 최대 크기를 지정하는 shminfo_shmmax를 설정합니다. 이 값을 HADB 호스트 시스템에 설치된 총 RAM 크기로 설정하되 2GB가 초과되지 않는 16진수 값으로 설정합니다.

      예를 들어, 2GB RAM의 경우 /etc/system 파일에서 다음과 같이 값을 설정합니다.


      set shmsys:shminfo_shmmax=0x80000000

      주 –

      호스트 시스템의 메모리를 확인하려면 다음 명령을 사용합니다.


      prtconf | grep Memory

    • Solaris 8 이전 버전에서는 하나의 프로세스가 연결할 수 있는 최대 공유 메모리 세그먼트 수인 shminfo_shmseg를 설정합니다. 이 값을 호스트당 노드 수의 6배로 설정합니다. 호스트당 최대 6개 노드인 경우 /etc/system 파일에 다음을 추가합니다.


      set shmsys:shminfo_shmseg=36

      Solaris 9 이상에서는 shmsys:shminfo_shmseg가 더 이상 사용되지 않습니다.

    • 전체 시스템의 최대 공유 메모리 세그먼트 수인 shminfo_shmmni를 설정합니다. 각 HADB 노드가 6개의 공유 메모리 세그먼트를 할당하므로 HADB에 필요한 값은 호스트당 노드 수의 6배 이상이어야 합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다.

  3. 세마포를 구성합니다.

    예를 들어, /etc/system 파일에서 다음 세마포 구성 항목을 확인합니다.


    set semsys:seminfo_semmni=10
    set semsys:seminfo_semmns=60
    set semsys:seminfo_semmnu=30

    해당 항목이 있을 경우 아래와 같이 값을 늘립니다.

    /etc/system 파일에 이러한 항목이 없으면 파일 끝에 추가합니다.

    • 최대 세마포 식별자 수인 seminfo_semmni를 설정합니다. 각 HADB 노드에는 하나의 세마포 식별자가 필요합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다. 예를 들면 다음과 같습니다.


      set semsys:seminfo_semmni=10
    • 전체 시스템의 최대 세마포 수인 seminfo_semmns를 설정합니다. 각 HADB 노드에는 8개의 세마포가 필요합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다. 예를 들면 다음과 같습니다.


      set semsys:seminfo_semmns=60
    • 시스템의 최대 실행 취소 구조 수인 seminfo_semmnu를 설정합니다. 각 연결에는 하나의 실행 취소 구조가 필요합니다(구성 변수 NumberOfSessions, 기본값 100). 호스트당 최대 6개 노드인 경우 다음과 같이 600으로 설정합니다.


      set semsys:seminfo_semmnu=600
  4. 시스템을 재부트합니다.

ProcedureLinux에서 공유 메모리 구성

Linux에서는 공유 메모리 설정을 구성해야 합니다. 기본 세마포 설정을 조정할 필요가 없습니다.

  1. 루트로 로그인합니다.

  2. /etc/sysctl.conf 파일을 편집합니다.

    Redhat Linux에서는 sysctl.conf를 수정하여 커널 매개 변수를 설정할 수도 있습니다.

  3. 다음과 같이 kernel.shmaxkernel.shmall 값을 설정합니다.


    echo MemSize > /proc/sys/shmmax
    echo MemSize > /proc/sys/shmall

    여기서 MemSize는 바이트 수입니다.

    kernel.shmax 매개 변수는 공유 메모리 세그먼트의 최대 크기(바이트)를 정의합니다. kernel.shmall 매개 변수는 시스템에서 한 번에 사용될 수 있는 페이지의 총 공유 메모리 양을 설정합니다. 이러한 매개 변수 값을 시스템의 실제 메모리 양으로 설정합니다. 값을 십진 바이트 값으로 지정합니다.

    예를 들어, 두 값을 모두 2GB로 설정하려면 다음을 사용합니다.


    echo 2147483648 > /proc/sys/kernel/shmmax
    echo 2147483648 > /proc/sys/kernel/shmall
  4. 다음 명령을 사용하여 시스템을 재부트합니다.

    sync; sync; reboot

Windows 절차

Windows에는 특수한 시스템 설정이 필요하지 않습니다. 그러나 기존 J2SE 설치를 사용하려면 JAVA_HOME 환경 변수를 J2SE가 설치된 위치로 설정합니다.

시스템 클럭 동기화

HADB는 시스템 클럭을 기반으로 하는 타임스탬프를 사용하므로 HADB 호스트의 클럭을 동기화해야 합니다. HADB는 시스템 클럭을 사용하여 시간 초과를 관리하고 내역 파일에 기록된 이벤트에 시간을 표시합니다. HADB는 분산 시스템이므로 문제 해결을 위해서는 모든 내역 파일을 함께 분석해야 합니다. 따라서 모든 호스트의 클럭을 동기화하는 것이 중요합니다.

HADB 시스템이 실행 중인 상태에서는 시스템 클럭을 조정하지 마십시오. 클럭을 조정하면 운영 체제 또는 기타 소프트웨어 구성 요소에서 문제가 발생할 수 있으며 이로 인해 HADB 노드의 중단 또는 다시 시작과 같은 문제가 발생할 수 있습니다. 클럭을 거꾸로 조정하면 클럭이 조정될 때 일부 HADB 서버 프로세스가 중단될 수 있습니다.

클럭 동기화

HADB에서 클럭이 2초 이상 조정되었음을 감지하면 다음과 같이 노드 내역 파일에 기록합니다.

NSUP INF 2003-08-26 17:46:47.975 Clock adjusted.
 Leap is +195.075046 seconds.