문서유형ㅣ기술정보
분야ㅣ설치
적용제품버전ㅣTibero 7.2.4
문서번호ㅣTINTI038
개요
1. TAC란?
TAC는 DB엔진, OS 및 시스템, Public Network 등의 장애 발생할 경우 정상 작동하는 노드로 자동 Fail-over 함으로써 무중단 시스템을 유지하고, 빠르게 복구할 수 있도록 돕습니다.
업무에 따라 이중화를 넘은 초대형 삼중화 노드로 구성하여 대용량의 데이터를 처리 시 최상의 성능을 발휘할 수 있습니다.
2. TAC 설치 구성도
방법
TAC 설치(using TAS)
1. 설치 환경
1-1) 설치 순서
순서 | 항목 | 내용 |
|---|---|---|
1 | 기본 설정 | 환경변수, CM, Tibero tip 설정 |
2 | Cluster Membership Layer 구성 | 각 Node들을 Cluster로 연결하는 과정 |
3 | Cluster Resource Layer 구성 | Node들이 사용할 자원들을 등록하는 과정 |
4 | DB 구성 | DB 구성 |
1-2) 노드 환경
항목 | Node 1 | Node 2 | 설명 | |
OS | hostname | tibrero0 | tibero1 | 각 서버의 hostname |
| User | tibero | tibero | Tibero가 설치될 OS 유저 | |
| 공유 볼륨 | 서버 환경에 따른 구성 | 일반적으로 Filesystem은 OS 자체적으로 생성하지만, 공유 Filesystem은 Cluster 솔루션을 통해 생성되며 관리됩니다. 예를 들어 vxfs는 veritas 솔루션을, gpfs는 hcmp, gfs2는 pacemaker를 통해 공유 파일시스템을 생성합니다. | ||
TAC | SID | tibero0 | tibero1 | Tibero Instance Name |
| DB_NAME | tibero | Tibero Database Name | ||
| LISTENER_PORT | 8629 | 8629 | Tibero Listener Port | |
| Public IP | 192.168.50.121 NIC : enp0s3 | 192.168.50.122 NIC : enp0s3 | Public IP | |
| LOCAL_CLUSTER_ADDR | 10.10.10.121 | 10.10.10.122 | Inter-Connect IP | |
| LOCAL_CLUSTER_PORT | 18629 | 18629 | Tibero Node간 통신 Port | |
| CM_PORT | 28629 | 28629 | cmrctl 명령어와 Tibero↔CM 통신을 위한 통신 | |
TAS | SID | tas0 | tas1 | TAS Tibero Instance Name |
| TAS Tibero port | 7629 | 7629 | TAS Tibero Port | |
| LOCAL_CLUSTER_PORT | 17629 | 17629 | TAS Tibero Cluster Port | |
CM | SID | cm0 | cm1 | TBCM SID |
| CM Inter-Connect PORT | 29000 | 29000 | TBCM Node간 통신 Port (cmrctl add 명령시 정의) | |
| CM_UI_PORT | 28629 | 28629 | cmrctl 명령어 실행시 TBCM의 상태 체크를 위해 TBCM에 접속하는 Port | |
1-3) 환경변수
TAS는 추가로 전용 Instance를 기동해야 하므로 별도의 환경변수 파일(.bash_profile_tas)을 생성합니다.
항목 | Node 1 | Node 2 |
|---|---|---|
TAC | (tibero)$ cat .bash_profile ### Tibero ENV ### ### Tibero Cluster Manager ENV ### | (tibero)$ cat .bash_profile ### Tibero ENV ### ### Tibero Cluster Manager ENV ### |
TAS | (tibero)$ cat .bash_profile_tas ### TAS ENV ### | (tibero)$ cat .bash_profile_tas ### TAS ENV ### |
1-4) TAS용 공유 디스크 점검
다음과 같이 공유디스크 장치를 TAS에 사용합니다.
[root@tibero ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
[root@tibero ~]# udevadm info --query=all --name=/dev/sdb | grep -E 'ID_SERIAL' | grep -v "SHORT" | sed 's/E: ID_SERIAL=//g'
cf9d02b4-4d402877
[root@tibero ~]# udevadm info --query=all --name=/dev/sdc | grep -E 'ID_SERIAL' | grep -v "SHORT" | sed 's/E: ID_SERIAL=//g'
5b02310d-1158d586
[root@tibero ~]# vi /etc/udev/rules.d/tas.rules
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
ACTION=="add|change", KERNEL=="sd?", ENV{ID_SERIAL}=="cf9d02b4-4d402877", SYMLINK+="tasdisk/data001", OWNER=="tibero", GROUP=="dba", MODE=="0660"
ACTION=="add|change", KERNEL=="sd?", ENV{ID_SERIAL}=="5b02310d-1158d586", SYMLINK+="tasdisk/data002", OWNER=="tibero", GROUP=="dba", MODE=="0660"
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
2. 설치
2-1) $CM.tip 설정
Node 1 | Node 2 |
|---|---|
(tibero)$ vi $TB_HOME/config/$CM_SID.tip CM_NAME=cm0 | (tibero)$ vi $TB_HOME/config/$CM_SID.tip CM_NAME=cm1 |
2-2) $TB.tip 설정
항목 | Node 1 | Node 2 |
|---|---|---|
TAC | (tibero)$ vi $TB_HOME/config/$TB_SID.tip DB_NAME=tibero ############Memory & Session################### ########cluster################ | (tibero)$ vi $TB_HOME/config/$TB_SID.tip DB_NAME=tibero ############Memory & Session################### ########cluster################ |
TAS | (tibero)$ . ~/.bash_profile_tas INSTANCE_TYPE=AS CLUSTER_DATABASE=Y CM_PORT=28629 | (tibero)$ . ~/.bash_profile_tas INSTANCE_TYPE=AS CLUSTER_DATABASE=Y CM_PORT=28629 |
2-3) tbdsn.tbr 설정
Node 1 | Node 2 |
|---|---|
(tibero)$ vi $TB_HOME/client/config/tbdsn.tbr tibero0=( tas0=( | (tibero)$ vi $TB_HOME/client/config/tbdsn.tbr tibero1=( tas1=( |
2-4) CM Membership Layer Resource 등록
Node | 항목 | 명령어 |
|---|---|---|
Node 1 | TBCM 기동 | (tibero)$ tbcm -b # vip 사용 환경일 경우 root로 수행 |
| 네트워크 등록 | (tibero)$ cmrctl add network --name net0 --ipaddr 10.10.10.121 --portno 29000 (tibero)$ cmrctl add network --name pub0 --nettype public --ifname enp0s3 | |
| Cluster 등록 | (tibero)$ cmrctl add cluster --name cls0 --incnet net0 --pubnet pub0 --cfile "+/dev/tasdisk/*" | |
| Cluster 기동 | (tibero)$ cmrctl start cluster --name cls0 | |
Node 2 | TBCM 기동 | (tibero)$ tbcm -b # vip 사용 환경일 경우 root로 수행 |
| 네트워크 등록 | (tibero)$ cmrctl add network --name net1 --ipaddr 10.10.10.122 --portno 29000 (tibero)$ cmrctl add network --name pub1 --nettype public --ifname enp0s3 | |
| Cluster 등록 | (tibero)$ cmrctl add cluster --name cls0 --incnet net1 --pubnet pub1 --cfile "+/dev/tasdisk/*" | |
| Cluster 기동 | (tibero)$ cmrctl start cluster --name cls0 |
2-5) CM Resource TAS Layer Resource 등록
TAS Resource를 등록합니다.
Node | 항목 | 명령어 |
|---|---|---|
Node 1 | TAS 서비스 등록 | (tibero)$ cmrctl add service --name tas --cname cls0 --type as |
| TAS 등록 | (tibero)$ cmrctl add as --name tas0 --svcname tas --dbhome $TB_HOME --envfile $HOME/.bash_profile_tas | |
Node 2 | TAS 등록 | (tibero)$ cmrctl add as --name tas1 --svcname tas --dbhome $TB_HOME --envfile $HOME/.bash_profile_tas |
2-6) TAS 생성
TAS는 Node 1에서 생성한다.
Node | 항목 | 명령어 |
|---|---|---|
Node 1 | TAS profile 적용 | (tibero)$ . ~/.bash_profile_tas |
| TAS 인스턴스 nomount 기동 | (tibero)$ tbboot nomount | |
| Diskspace 생성 | (tibero)$ tbsql sys/tibero SQL> CREATE DISKSPACE DS0 EXTERNAL REDUNDANCY FAILGROUP FG1 DISK '/dev/tasdisk/data001' NAME data001, '/dev/tasdisk/data002' NAME data002 ; | |
| TAS 기동 후 Thread 등록 | (tibero)$ tbboot SQL> alter diskspace DS0 add thread 1 ; | |
Node 2 | TAS profile 적용 | (tibero)$ . ~/.bash_profile_tas |
| TAS 인스턴스 기동 | (tibero)$ tbboot |
2-7) CM Resource DB Layer Resource 등록
서비스는 공유되기 때문에 Node 2에서 등록 생략합니다.
Node | 항목 | 명령어 |
|---|---|---|
Node 1 | DB 서비스 등록 | (tibero)$ cmrctl add service --name tibero --cname cls0 --type db |
| DB 등록 | (tibero)$ cmrctl add db --name tibero0 --svcname tibero --dbhome $TB_HOME --envfile /home/tibero/.bash_profile | |
| VIP 등록 | (tibero)$ cmrctl add vip --name vip0 --node cm0 --svcname tibero --ipaddr 192.168.50.126/255.255.255.0 --bcast 192.168.50.255 | |
Node 2 | DB 등록 | (tibero)$ cmrctl add db --name tibero1 --svcname tibero --dbhome $TB_HOME --envfile /home/tibero/.bash_profile |
| VIP 등록 | (tibero)$ cmrctl add vip --name vip1 --node cm1 --svcname tibero --ipaddr 192.168.50.127/255.255.255.0 --bcast 192.168.50.255 |
참고
VIP 등록은 필수가 아니며, 등록시 TBCM이 root 권한으로 기동되어야 합니다.
VIP 등록 커맨드
cmrctl add vip --name <vip_name> --node <cm_sid> --svcname <database_name> --ipaddr <virtual_IP>/<Netmask> --bcase <broadcast>
2-8) DB 생성
Node | 항목 | 명령어 |
|---|---|---|
Node 1 | DB nomount 기동 | (tibero)$ . ~/.bash_profile (tibero)$ tbboot nomount (혹은 cmrctl start db --name tibero0 --option "-t nomount") |
| DB 생성 | (tibero)$ tbsql sys/tibero SQL> create database | |
| DB 기동 | (tibero)$ tbboot | |
| system_install.sh 수행 | (tibero)$ sh $TB_HOME/scripts/system_install.sh -p1 tibero -p2 syscat | |
| Node 2 Undo, Redo 추가 | (tibero)$ tbsql sys/tibero SQL> create undo tablespace UNDO1 datafile '+DS0/tbdata/undo011.dtf' size 100m autoextend on next 32M; | |
| Node 2 활성화 | SQL> alter database enable public thread 1 ; | |
Node 2 | DB 기동 | (tibero)$ . ~/.bash_profile (tibero)$ tbboot |
2-9) 확인
항목 | 내용 |
|---|---|
Cluster | |
DB |
참고
1. $CM_SID.tip 설정
항목 | 필수 | 설명 |
|---|---|---|
| CM_NAME | 필수 | 클러스터를 생성할 때에 node identifier 로 쓸 이름이다 . 서로 다른 노드의 CM 은 다른 값을 가져야 한다. |
| CM_UI_PORT | 필수 | cmrctl 명령어 수행할 때에 CM 으로 접속하는 용도로 사용할 네트워크 포트 번호이다 |
| CM_RESOURCE_FILE | 필수 | CM 리소스 파일의 경로 |
| LOG_LVL_CM | 선택 | CM이 로그를 남기는 수준을 지정한다. 값이 높을수록 CM 이 더 많은 로그를 저장하며 , 1~6 사이의 정수값을 가질 수 있다.(기본값: 2) |
| CM_LOG_DEST | 선택 | CM이 로그를 남길 디렉터리를 지정한다. 이 값은 반드시 절대 경로여야 한다. (기본값 : $CM_HOME/instance/$CM_SID/ |
| CM_HEARTBEAT_EXPIRE | 선택 | Heartbeat expire란 다른 노드의 CM 에 문제가 생겼다는 것을 CM 이 알아차리는데 필요한 표준 시간을 의미한다. 해당 시간을 지나면 cluster member에서 out (단위 : 초 (second), 기본값 : 300) |
| CM_WATCHDOG_EXPIRE | 선택 | Tibero와 CM 사이에 watchdog 기능이 활성화되어 있을 경우 만료 기간을 지정한다. 만약 CM 이 이 값이 지정한 시간 동안 동작하지 않으면 , Tibero 가 자동적으로 종료된다. CM_HEARTBEAT_EXPIRE 보다 작은 값을 사용해야 한다(단위 : 초 (second), 기본값 : 290) |
| CM_FENCE | 선택 | CM fence데몬을 실행시킬지를 결정한다 CM이 I/O 수행을 CM_WATCHDOG_EXPIRE 에 지정된 시간보다 오래할 경우 , 다른 CM 들이 이 CM 의 노드를 클러스터에서 제외시키기 때문에 이 CM 의 노드는 OS 를 재부팅해야 한다. |