이 절에서는 HADB 배포 및 업그레이드에 관한 추가 정보를 제공합니다.
로컬 디스크의 저장 장치, 로그 및 내역 파일만 원격으로 마운트된 파일 시스템을 사용하지 않습니다.
호스트에 두 개 이상의 노드가 있을 경우 각 노드에 속한 장치를 각각 다른 디스크에 두십시오. 그렇지 않으면 디스크 충돌로 성능이 저하됩니다. 이 문제의 증상은 내역 파일의 BEWARE - last flush/fputs took too long과 같은 메시지로 확인할 수 있습니다. 단일 노드에 두 개 이상의 데이터 장치 파일이 있다면 이 장치 파일에 각각 다른 디스크를 사용하는 것이 좋습니다.
로컬 디스크(데이터 장치에 사용되는 디스크 외의 개별 디스크)를 사용하여 HADB 호스트에 HADB 바이너리를 설치합니다. NFS 지연 또는 디스크 충돌로 인해 내역 파일에 Process blocked for nnn, max block time is nnn이라는 경고가 기록되고 노드가 다시 시작될 수 있습니다.
HADB 장치, 내역 파일, 관리 에이전트 디렉토리 및 에이전트 구성 파일은 HADB 패키지 경로에 두지 마십시오. 그렇지 않으면 새 버전으로 업그레이드할 때와 이전 패키지 경로를 삭제할 때 문제가 생길 수 있습니다.
HADB의 이 릴리스는 최대 28개 노드에 대해 지원됩니다. 이 중 24개는 활성 데이터 노드이고 4개는 예비 노드입니다.
JDBC 드라이버와 HADB 서버에 동일 버전을 사용하는 것이 좋습니다.
IPv6이 아닌 IPv4만 지원합니다.
Windows에서 명령줄 길이는 2048바이트 수로 제한됩니다.
네트워크는 UDP 멀티캐스트를 위해 구성되어야 합니다.
RedHat Enterprise Linux 3.0 업데이트 1에서 3까지에서 과도한 스와핑이 발견되었으므로 이것을 배포 플랫폼으로 권장하지 않습니다. 이 문제는 RedHat Enterprise Linux 3.0 업데이트 4에서 해결되었습니다.
실시간 우선 순위로 NSUP를 실행할 수 있습니다.
노드 수퍼바이저(NSUP) 프로세스(clu_nsup_srv )는 "하트 비트" 메시지를 적절한 시기에 교환할 수 있도록 하여 HADB의 고가용성을 보장합니다. 타이밍은 NSUP가 자원 고갈을 일으키는 다른 프로세스와 같은 곳에 놓여질 때 영향을 받습니다. 그 결과 잘못된 네트워크 분할이 이루어지고 노드가 재시작되어(내역 파일에 “Process blocked for n seconds” 경고가 표시된 다음) 트랜잭션과 기타 예외가 중단됩니다.
이 문제를 해결하려면 clu_nsup_srv (installpath/lib/server에 있음)에 suid 비트 세트가 있어야 하며 파일은 루트로 소유해야 합니다. 이는 다음 명령을 사용하여 직접 수행할 수 있습니다.
# chown root clu_nsup_srv # chmod u+s clu_nsup_srv |
이로 인해 시작 시 clu_nsup_srv 프로세스가 root 사용자로 실행되고 시작된 이후에는 프로세스에서 자동으로 실시간 우선 순위가 자체 제공됩니다. setuid 사용으로 인해 보안에 영향을 미치지 않도록 처음에 실시간 우선 순위가 설정되고, 우선 순위가 변경되면 프로세스가 유효한 uid로 돌아갑니다. 다른 HADB 프로세스는 시간 공유 우선 순위에 따라 우선 순위를 낮춥니다.
NSUP가 실시간 우선 순위를 설정할 수 없는 경우 "Could not set realtime priority"(unix: errno will be set to EPERM)라는 경고 메시지가 나타나고 실시간 우선 순위 없이 계속됩니다. 해당 경고는 ma.log 파일에 기록됩니다.
실시간 우선 순위를 설정할 수 없는 경우는 예를 들면 다음과 같습니다.
Solaris 10 비전역 영역에 설치된 경우
PRIV_PROC_LOCK_MEMORY(프로세스가 물리적 메모리에서 페이지를 잠그도록 허용) 및/또는 PRIV_PROC_PRIOCNTL 권한이 Solaris 10에서 호출된 경우
사용자가 setuid 권한을 끈 경우
사용자가 소프트웨어를 tar 파일(App.server에 대한 nonroot 설치 옵션)로 설치한 경우
clu_nsup_srv 프로세스는 CPU를 사용하지 않고 용량이 작으며 실시간 우선 순위로 실행해도 성능에는 영향을 주지 않습니다.
Solaris에서 HADB에 대한 IP 네트워크 다중 경로를 구성합니다(Solaris 9에서만 테스트됨).
HADB를 실행 중인 Solaris 호스트는 가능한 최대 네트워크 가용성을 보장하기 위해 네트워크 다중 경로로 설정하는 것이 좋습니다. 네트워크 다중 경로 설정은 IP Network Multipathing Administration Guide에 자세히 설명되어 있습니다. HADB와 함께 다중 경로를 사용할 경우, 아래에 설명된 대로 HADB의 다중 경로 설정을 채택하기 전에 다중 경로를 설정하기 위해 IP Network Multipathing Administration Guide의 Administering Network Multipathing 절을 참조하십시오. IP Network Multipathing Administration Guide는 Solaris 9 System Administrator Collection의 일부로, http://docs.sun.com에서 다운로드할 수 있습니다.
네트워크 인터페이스 실패 감지 시간 설정
HADB가 다중 경로 페일오버를 올바르게 지원하려면 네트워크 인터페이스 실패 감지 시간이 /etc/default/mpathd의 FAILURE_DETECTION_TIME 매개 변수에서 지정된 1000밀리초를 초과해서는 안 됩니다. 원래 값이 큰 경우 파일을 편집하여 이 매개 변수의 값을 1000으로 변경합니다.
FAILURE_DETECTION_TIME=1000 |
변경된 내용을 적용하려면 다음 명령을 호출합니다.
pkill -HUP in.mpathd |
HADB에서 사용할 IP 주소
Solaris IP Network Multipathing Administration Guide에 설명된 대로 다중 경로는 물리적 네트워크 인터페이스를 다중 경로 인터페이스 그룹으로 그룹화하는 것입니다. 해당 그룹 내의 물리적 인터페이스는 물리적 인터페이스 주소와 테스트 주소 등 연관된 IP 주소가 두 개씩 있습니다. 물리적 인터페이스 주소는 데이터를 전송하는 데 사용되고 테스트 주소는 Solaris 내부용으로만 사용됩니다. hadbm create --hosts가 실행되면 각 호스트는 다중 경로 그룹에서 물리적 인터페이스 주소 하나만으로 지정되어야 합니다.
예제
호스트 1과 호스트 2에 물리적 네트워크 인터페이스가 두 개씩 있다고 가정합니다. 각 호스트에서 이러한 두 인터페이스는 다중 경로 그룹으로 설정되어 있으며 ifconfig -a를 실행하면 다음 결과가 생성됩니다.
호스트 1
bge0: flags=1000843<mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255 |
호스트 2
bge0: flags=1000843<mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255 |
여기서, 두 호스트의 물리적 네트워크 인터페이스는 bge0과 bge1로 나열되어 있습니다bge0:1과 bge1:1로 나열된 인터페이스는 IP Network Multipathing Administration Guide에 설명된 대로 다중 경로 테스트 인터페이스(이에 따라 ifconfig 출력에 DEPRECATED로 표시됨)입니다.
이 환경에서 HADB를 설정하려면 각 호스트에서 물리적 인터페이스 주소 하나를 선택합니다. 이 예제의 호스트 1에서 129.159.115.10을 선택하고 호스트 2에서 129.159.115.20을 선택합니다. 호스트당 데이터베이스 노드가 한 개인 데이터베이스를 만들려면 hadbm create에 다음 인수를 사용합니다.
--host 129.159.115.10,129.159.115.20 |
각 호스트에 데이터베이스 노드가 두 개인 데이터베이스를 만들려면 다음 인수를 사용합니다.
--host 129.159.115.10,129.159.115.20,129.159.115.10,129.159.115.20 |
두 경우 모두 두 호스트의 ma.server.mainternal.interfaces 변수를 129.159.115.0/24로 설정해야 합니다.
4.2 또는 4.3에서 4.4로 온라인 업그레이드할 수 없습니다. 그러나, 4.4에서는 향후 버전에 대해 온라인 업그레이드를 지원합니다. 4.4.1에서 4.4.2로 업그레이드하려면 다음 단계를 수행합니다.
모든 HADB 호스트(/opt/SUNWhadb/4.4.2-6와 같이 4.4.1과 다른 경로)에 4.4.2를 설치합니다.
hadbm client 호스트에 새 버전을 설치합니다.
HADB 호스트에서 실행 중인 모든 관리 에이전트를 중단합니다.
새 버전의 소프트웨어를 사용하여 이전 구성 파일로 관리 에이전트 프로세스를 시작합니다. 나머지 단계에서는 새 버전의 bin 디렉토리에 있는 hadbm 명령을 사용합니다.
관리 도메인에 패키지를 등록합니다. (여기서 기본 패키지 이름은 V4.4가 되므로 동일한 이름의 기존 패키지와 충돌을 방지하기 위해 다른 패키지 이름이 필요할 수 있습니다.)
hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-6 V4.4.2 |
새 버전으로 데이터베이스를 다시 시작합니다. (다음 명령은 노드에 대해 롤링 재시작을 수행합니다.)
hadbm set packagename=V4.4.2 database_name |
(hadbm status 명령을 사용하여) 데이터베이스 상태가 “실행 중”인지 그리고 정상적으로 기능하여 클라이언트 트랜잭션을 제공하는지 확인합니다.
모두 제대로 작동한다면 나중에 이전 설치를 제거할 수 있습니다.
이전 패키지의 등록을 취소하기 전에 ma 리포지토리에서 이전 패키지에 대한 모든 참조를 제거합니다. 그렇지 않으면 hadbm unregisterpackage는 "사용 중인 패키지"로 인해 실패합니다.예를 들어 가상 재구성 작업인 hadbm set connectiontrace=<same_as_previous_value>는 이전 패키지에 대한 모든 참조를 제거합니다. 이제 다음 명령으로 이전 패키지의 등록을 취소합니다.
hadbm unregisterpackage [--hosts=<host_list>] <old_package_name> |
HADB 설치 지침에 설명된 대로 파일 시스템에서 이전 설치를 제거합니다.