Bom pessoal, como estamos recebendo bastante solicitações de como criar um ambiente de HA (High Availability) no Tibero usando TAC (Tibero Active Cluster), tecnologia similar ao Oracle RAC, resolvi criar este tutorial para ajudar. Não vou entrar em questões sobre como preparar a infraestrutura para isso neste momento. Para referência, estou usando um ambiente virtual usando VirtuaBox, Com 2 VMs Linux instaladas e com um disco compartilhado entre elas, configurado no virtualizador mesmo.
Espero poder passar para vocês o quanto é simples a configuração de um TAC no Tibero. Alguns "experts" no Brasil já conseguiram finalizar esta tarefa em aproximadamente 10 a 15 minutos. É claro que toda a preparação de infraestrutura já havia sido feita anteriormente. Mesmo assim, a tarefa de criação do TAC é muito simples, permitindo estas finalizações bem rápidas para quem é expert no assunto.
NOTA: Este exemplo baseia-se na versão 6 Fixset 6 do Tibero.
Antes de iniciar, é importante a leitura completa dos manuais do Tibero sobre estes assuntos. Assim como a instalação e configuração dos pré-requisitos de instalação do Tibero.
Para configurar um ambiente de alta disponibilidade, muitas informações são necessárias previamente. Planejamento é fundamental, portanto, elaboramos um mapa de uma situação hipotética para ajudar a configurar o ambiente de forma apropriada. Esta prática é recomendada, pois as variáveis ficam claras no momento de atribuir os valores corretos nos processos de configuração do ambiente.
Para este exercício, algumas etapas anteriores são necessárias, como a criação de VMs com Linux e todo o setup delas. Não é o foco deste tutorial informar como criar este ambiente de infraestrutura. Se alguém tiver alguma dúvida neste sentido, ou qualquer outra dúvida, por favor utilize os comentários deste post.
Termos utilizados neste material:
TAS ou AS (Tibero Active Storage): Responsável pela virtualização de discos, "logic shared cluster file system" entre as instâncias do TAC, entre outras funções.
TAC (Tibero Active Cluster): É a principal tecnologia do Tibero que fornece alta disponibilidade e escalabilidade compartilhando um banco de dados em comum. Funções como load balance e failover são nativas desta tecnologia.
TCM ou CM (Tibero Cluster Manager): Responsável por gerenciar as funções de cluster entre as instâncias do Tibero em um ambiente de alta disponibilidade.
VIP (Virtual IP): Tecnologia que permite a transição de IPs entre os nodes do TAC em caso de falha de algum node, tornando a operação transparente.
Diagrama em blocos genérico de um ambiente de alta disponibilidade usando o Tibero:
(Créditos da imagem para: Franco Rizzo - TmaxSoft USA)
Diagrama em blocos genérico de um ambiente de alta disponibilidade usando o Tibero:
(Créditos da imagem para: Franco Rizzo - TmaxSoft USA)
Desenho do esquema da solução usada neste exemplo:
Script de implementação:
⇨ TAS + TAC:
- Instalação e configuração do TAS:
- VM1:
- Configurar as variáveis de ambiente:
- VM1:
- Configurar as variáveis de ambiente:
[root@tac1-training ~]# su - tibero
[tibero@tac1-training ~]$ vi .bash_profile
##############################################################
# TIBERO TAS:
##############################################################
export TB_HOME=/home/tibero/tibero6
export TB_SID=tas1
export CM_SID=cm1
export CM_HOME=/home/tibero/tibero6
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin
tibero@tac1-training ~]$ source .bash_profile
- Instalar o Tibero:
[tibero@tac1-training ~]$ tar -xzvf /home/install/tibero6-bin-FS06-linux64-142998-opt-20170420182339.tar.gz
[tibero@tac1-training ~]$ cp /home/install/tac1-training.tibero.license.xml tibero6/license/license.xml
- Configurar o arquivo de parâmetros de inicialização do Tibero:
[tibero@tac1-training ~]$ cd tibero6/config/
[tibero@tac1-training config]$ sh gen_tip.sh
[tibero@tac1-training config]$ vi tas1.tip
DB_NAME=tas
LISTENER_PORT=9620
MAX_SESSION_COUNT=20
MEMORY_TARGET=2G
TOTAL_SHM_SIZE=1G
INSTANCE_TYPE=AS
AS_DISKSTRING="/db/tibero/devs/disk*"
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=100.100.100.10
LOCAL_CLUSTER_PORT=20000
CM_PORT=48629
THREAD=0
[tibero@tac1-training config]$ vi cm1.tip
CM_NAME=cm1
CM_UI_PORT=48629
CM_RESOURCE_FILE="/home/tibero/tibero6/config/cm1.rsc"
CM_HEARTBEAT_EXPIRE=60
CM_WATCHDOG_EXPIRE=55
- Configurar os parâmetros de conexão do client:
[tibero@tac1-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
tas1=
((INSTANCE=(HOST=100.100.100.10)
(PORT=9620)
(DB_NAME=tas)
)
)
- Criar e iniciar o Disk Space do TAS:
[tibero@tac1-training config]$ tbboot nomount
[tibero@tac1-training config]$ tbsql sys/tibero@tas1
SQL>
CREATE DISKSPACE ds0 NORMAL REDUNDANCY
FAILGROUP fg1 DISK
'/db/tibero/devs/disk101' NAME disk101
FAILGROUP fg2 DISK
'/db/tibero/devs/disk201' NAME disk201
ATTRIBUTE 'AU_SIZE'='4M';
- Instalação e configuração do TAC:
- VM1:
- VM1:
[tibero@tac1-training config]$ cd $TB_HOME
[tibero@tac1-training tibero6]$ vi tas1.profile
PATH="${PATH}:/home/tibero/tibero6/bin"; export PATH
PATH="${PATH}:/home/tibero/tibero6/client/bin"; export PATH
TB_HOME=/home/tibero/tibero6; export TB_HOME
TB_SID=tas1; export TB_SID
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/client/lib"; export LD_LIBRARY_PATH
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/lib"; export LD_LIBRARY_PATH
- Adicionar os recursos do TAC:
[tibero@tac1-training tibero6]$ tbcm -b
[tibero@tac1-training tibero6]$ tbcm -s
- Adicionar o recurso de rede privada:
[tibero@tac1-training tibero6]$ cmrctl add network --nettype private --ipaddr 100.100.100.10 --portno 18629 --name net1
- Adicionar o recurso de rede pública:
[tibero@tac1-training tibero6]$ cmrctl add network --nettype public --ifname enp0s3 --name pub1
- Adicionar o recurso de cluster:
[tibero@tac1-training tibero6]$ cmrctl add cluster --incnet net1 --pubnet pub1 --cfile "+/db/tibero/devs/disk*" --name cls1
[tibero@tac1-training tibero6]$ cmrctl start cluster --name cls1
- Adicionar o recurso de serviço do TAS:
[tibero@tac1-training tibero6]$ cmrctl add service --name tas --type as --cname cls1
- Adicionar o recurso do TAS:
[tibero@tac1-training tibero6]$ cmrctl add as --name tas1 --svcname tas --dbhome $CM_HOME --envfile /home/tibero/tibero6/tas1.profile
- Iniciar a instância do TAS:
[tibero@tac1-training tibero6]$ cmrctl start as --name tas1
- Conectar na instância em execução e adicionar a THREAD para o start up do TAS no node 2:
[tibero@tac1-training tibero6]$ tbsql sys/tibero@tas1
SQL>
ALTER DISKSPACE ds0 ADD THREAD 1;
- Adicionar o recurso de serviço do TAC:
cmrctl add service --name tac --cname cls1
- Criar um arquivo de profile requerido pelo CM para o node 1:
[tibero@tac1-training tibero6]$ vi tac1.profile
PATH="${PATH}:/home/tibero/tibero6/bin"; export PATH
PATH="${PATH}:/home/tibero/tibero6/client/bin"; export PATH
TB_HOME=/home/tibero/tibero6; export TB_HOME
TB_SID=tac1; export TB_SID
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/client/lib"; export LD_LIBRARY_PATH
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/lib"; export LD_LIBRARY_PATH
- Criar o arquivo de parâmetros de inicialização do Tibero para o TAC1:
[tibero@tac1-training tibero6]$ vi config/tac1.tip
DB_NAME=tac
LISTENER_PORT=8629
CONTROL_FILES="+DS0/tac/c1.ctl"
DB_CREATE_FILE_DEST="+DS0/tac"
LOG_ARCHIVE_DEST="+DS0/tac/archive"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=1G
MEMORY_TARGET=2G
USE_ACTIVE_STORAGE=Y
AS_PORT=9620
LOCAL_CLUSTER_ADDR=100.100.100.10
CM_PORT=48629
LOCAL_CLUSTER_PORT=21000
CLUSTER_DATABASE=Y
THREAD=0
UNDO_TABLESPACE=UNDO0
- Adicionar o recurso de Database:
[tibero@tac1-training tibero6]$ cmrctl add db --name tac1 --svcname tac --dbhome $CM_HOME --envfile /home/tibero/tibero6/tac1.profile
- Iniciar a instância do Database em NOMOUNT mode:
[tibero@tac1-training tibero6]$ cmrctl start db --name tac1 --option "-t nomount"
- Configurar os parâmetros de conexão do client:
[tibero@tac1-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
tac1=
((INSTANCE=(HOST=100.100.100.10)
(PORT=8629)
(DB_NAME=tac)
)
)
- Criar o Database:
[tibero@tac1-training tibero6]$ tbsql sys/tibero@tac1
SQL>
SQL>
CREATE DATABASE "tac"
USER sys IDENTIFIED BY tibero
MAXINSTANCES 8
MAXDATAFILES 256
CHARACTER SET WE8MSWIN1252
LOGFILE
GROUP 0 '+DS0/tac/log001.log' SIZE 100M,
GROUP 1 '+DS0/tac/log011.log' SIZE 100M,
GROUP 2 '+DS0/tac/log021.log' SIZE 100M
MAXLOGFILES 255
MAXLOGMEMBERS 8
NOARCHIVELOG
DATAFILE '+DS0/tac/system001.dtf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 500M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '+DS0/tac/temp001.dtf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE
UNDO TABLESPACE UNDO0 DATAFILE '+DS0/tac/undo001.dtf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
- Iniciar a instância do Database em NORMAL mode:
[tibero@tac1-training tibero6]$ cmrctl start db --name tac1
- Criar o UNDO TABLESPACE para o segundo node do TAC:
[tibero@tac1-training tibero6]$ tbsql sys/tibero@tac1
SQL>
CREATE UNDO TABLESPACE UNDO1 DATAFILE '+DS0/tac/undo002.dtf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
- Adicionar os REDO LOGS para o segundo node do TAC:
SQL>
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 3 '+DS0/tac/log031.log' size 100M;
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 4 '+DS0/tac/log041.log' size 100M;
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5 '+DS0/tac/log051.log' size 100M;
- Adicionar a THREAD pública para o segundo node do TAC:
SQL>
ALTER DATABASE ENABLE PUBLIC THREAD 1;
- Criar o dicionário de dados do sistema:
[tibero@tac1-training tibero6]$ . ./tac1.profile
[tibero@tac1-training tibero6]$ sh $TB_HOME/scripts/system.sh -p1 tibero -p2 syscat -a1 Y -a2 Y -a3 Y -a4 Y
- Instalação e configuração do TAS:
- VM2:
- Configurar as variáveis de ambiente:
[root@tac2-training ~]# su - tibero
[tibero@tac2-training ~]$ vi .bash_profile
##############################################################
# TIBERO TAS:
##############################################################
export TB_HOME=/home/tibero/tibero6
export TB_SID=tas2
export CM_SID=cm2
export CM_HOME=/home/tibero/tibero6
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin
[tibero@tac1-training ~]$ source .bash_profile
- Instalar o Tibero:
[tibero@tac2-training ~]$ tar -xzvf /home/install/tibero6-bin-FS06-linux64-142998-opt-20170420182339.tar.gz
[tibero@tac2-training ~]$ cp /home/install/tac2-training.tibero.license.xml tibero6/license/license.xml
- Configurar o arquivo de parâmetros de inicialização do Tibero:
[tibero@tac2-training ~]$ cd tibero6/config/
[tibero@tac2-training config]$ sh gen_tip.sh
[tibero@tac2-training config]$ vi tas2.tip
DB_NAME=tas
LISTENER_PORT=9620
MAX_SESSION_COUNT=20
MEMORY_TARGET=2G
TOTAL_SHM_SIZE=1G
INSTANCE_TYPE=AS
AS_DISKSTRING="/db/tibero/devs/disk*"
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=100.100.100.20
LOCAL_CLUSTER_PORT=20000
CM_PORT=48629
THREAD=1
[tibero@tac2-training config]$ vi cm2.tip
CM_NAME=cm2
CM_UI_PORT=48629
CM_RESOURCE_FILE="/home/tibero/tibero6/config/cm2.rsc"
CM_HEARTBEAT_EXPIRE=60
CM_WATCHDOG_EXPIRE=55
- Configurar os parâmetros de conexão do client:
[tibero@tac2-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
tas2=
((INSTANCE=(HOST=100.100.100.20)
(PORT=9620)
(DB_NAME=tas)
)
)
- Instalação e configuração do TAC:
- VM2:
[tibero@tac2-training config]$ cd $TB_HOME
[tibero@tac2-training tibero6]$ vi tas2.profile
PATH="${PATH}:/home/tibero/tibero6/bin"; export PATH
PATH="${PATH}:/home/tibero/tibero6/client/bin"; export PATH
TB_HOME=/home/tibero/tibero6; export TB_HOME
TB_SID=tas2; export TB_SID
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/client/lib"; export LD_LIBRARY_PATH
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/lib"; export LD_LIBRARY_PATH
- Adicionar os recursos do TAC:
[tibero@tac2-training tibero6]$ tbcm -b
[tibero@tac2-training tibero6]$ tbcm -s
- Adicionar o recurso de rede privada:
[tibero@tac2-training tibero6]$ cmrctl add network --nettype private --ipaddr 100.100.100.20 --portno 18629 --name net1
- Adicionar o recurso de rede pública:
[tibero@tac2-training tibero6]$ cmrctl add network --nettype public --ifname enp0s3 --name pub1
- Adicionar o recurso de cluster:
[tibero@tac2-training tibero6]$ cmrctl add cluster --incnet net1 --pubnet pub1 --cfile "+/db/tibero/devs/disk*" --name cls1
[tibero@tac2-training tibero6]$ cmrctl start cluster --name cls1
- Adicionar o recurso do TAS:
[tibero@tac2-training tibero6]$ cmrctl add as --name tas2 --svcname tas --dbhome $CM_HOME --envfile /home/tibero/tibero6/tas2.profile
- Iniciar a instância do TAS:
[tibero@tac2-training tibero6]$ cmrctl start as --name tas2
- Criar um arquivo de profile requerido pelo CM para o node 2:
[tibero@tac2-training tibero6]$ vi tac2.profile
PATH="${PATH}:/home/tibero/tibero6/bin"; export PATH
PATH="${PATH}:/home/tibero/tibero6/client/bin"; export PATH
TB_HOME=/home/tibero/tibero6; export TB_HOME
TB_SID=tac2; export TB_SID
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/client/lib"; export LD_LIBRARY_PATH
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/home/tibero/tibero6/lib"; export LD_LIBRARY_PATH
- Criar o arquivo de parâmetros de inicialização do Tibero para o TAC2:
[tibero@tac2-training tibero6]$ vi config/tac2.tip
DB_NAME=tac
LISTENER_PORT=8629
CONTROL_FILES="+DS0/tac/c1.ctl"
DB_CREATE_FILE_DEST="+DS0/tac"
LOG_ARCHIVE_DEST="+DS0/tac/archive"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=1G
MEMORY_TARGET=2G
USE_ACTIVE_STORAGE=Y
AS_PORT=9620
LOCAL_CLUSTER_ADDR=100.100.100.20
CM_PORT=48629
LOCAL_CLUSTER_PORT=21000
CLUSTER_DATABASE=Y
THREAD=1
UNDO_TABLESPACE=UNDO1
#SERVER_SIDE_LOAD_BALANCE=LONG
- Adicionar o recurso de Database:
[tibero@tac2-training tibero6]$ cmrctl add db --name tac2 --svcname tac --dbhome $CM_HOME --envfile /home/tibero/tibero6/tac2.profile
- Iniciar a instância do Database:
[tibero@tac2-training tibero6]$ cmrctl start db --name tac2
- Configurar os parâmetros de conexão do client:
[tibero@tac2-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
tac2=
((INSTANCE=(HOST=100.100.100.20)
(PORT=8629)
(DB_NAME=tac)
)
)
⇨ Exercícios de loadbalance e failover "SEM VIP":
- Configurar os parâmetros de conexão do client:
- VM1:
[tibero@tac1-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
tac=
((INSTANCE=(HOST=100.100.100.10)
(PORT=8629)
(DB_NAME=tac))
(INSTANCE=(HOST=100.100.100.20)
(PORT=8629)
(DB_NAME=tac))
(LOAD_BALANCE=Y)
(USE_FAILOVER=Y)
)
- VM2:
[tibero@tac2-training ~]$ vi tibero6/client/config/tbdsn.tbr
tac=
((INSTANCE=(HOST=100.100.100.20)
(PORT=8629)
(DB_NAME=tac))
(INSTANCE=(HOST=100.100.100.10)
(PORT=8629)
(DB_NAME=tac))
(LOAD_BALANCE=Y)
(USE_FAILOVER=Y)
)
- Teste #001: Com as duas VMs no ar, criar usuário, tabela e inserir dados para testar o HA:
- VM1:
[tibero@tac1-training ~]$ tbsql sys/tibero@tac
SQL>
create user TESTE identified by tibero;
grant dba to teste;
conn teste/tibero@tac
create table T1(id number);
insert into T1 values (12345);
- VM2:
[tibero@tac2-training ~]$ tbsql sys/tibero@tac
SQL>
select * from T1;
select * from T1;
- VM1:
SQL>
commit;
commit;
- VM2:
SQL>
select * from T1;
select * from T1;
ID
----------
12345
- Teste #002: Com as duas VMs no ar, conectar/desconectar algumas vezes para verificar o loadbalance:
- VM1:
[tibero@tac1-training ~]$ tbsql sys/tibero@tac
SQL>
SQL>
col INSTANCE_NAME format a10
col HOST_NAME format a20
select INSTANCE_NAME, HOST_NAME, THREAD# from v$instance;
INSTANCE_N HOST_NAME THREAD#
---------- -------------------- ----------
tac1 tac1-training 0
[tibero@tac1-training ~]$ tbsql sys/tibero@tac
SQL>
col INSTANCE_NAME format a10
col HOST_NAME format a20
select INSTANCE_NAME, HOST_NAME, THREAD# from v$instance;
INSTANCE_N HOST_NAME THREAD#
---------- -------------------- ----------
tac2 tac2-training 1
- Teste #003: Com as duas VMs no ar, simular a queda de um nó, para verificar o failover:
- VM1:
- VM1:
[tibero@tac1-training ~]$ tbsql sys/tibero@tac
SQL>
col INSTANCE_NAME format a10
col INSTANCE_NAME format a10
col HOST_NAME format a20
select INSTANCE_NAME, HOST_NAME, THREAD# from v$instance;
INSTANCE_N HOST_NAME THREAD#
---------- -------------------- ----------
tac2 tac2-training 1
- VM2:
- VM2:
- Verificado que a conexão foi para a VM2, derrube este nó:
[tibero@tac2-training ~]$ cmrctl stop db --name tac2 --option immediate
- VM1:
- Execute o comando novamente, duas vezes, para verificar o failover:
SQL> /
TBR-2139: Connection to server was interrupted but the fail-over successfully reconnected.
SQL> /
INSTANCE_N HOST_NAME THREAD#
---------- -------------------- ----------
tac1 tac1-training 0
⇨ VIP:
To add VIP, "tbcm" must be started using the ROOT privileges, and the "pubnet" attribute must be set for the service specified in "svcname".
To add VIP, "tbcm" must be started using the ROOT privileges, and the "pubnet" attribute must be set for the service specified in "svcname".
- Stop all nodes:
- VM1:
[tibero@tac606tac1 tibero6]$ cmrctl stop service --name tac
[tibero@tac606tac1 tibero6]$ cmrctl stop service --name tas
[tibero@tac606tac1 tibero6]$ tbcm -d
- VM2:
[tibero@tac606tac2 tibero6]$ tbcm -d
- Configure o VIP:
- VM1:
- Configurar os parâmetros de conexão do client:
- VM1:
- Configurar os parâmetros de conexão do client:
[tibero@tac1-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
vip=
((INSTANCE=(HOST=100.100.100.11)
((INSTANCE=(HOST=100.100.100.11)
(PORT=8629)
(DB_NAME=tac))
(INSTANCE=(HOST=100.100.100.21)
(PORT=8629)
(DB_NAME=tac))
(LOAD_BALANCE=Y)
(USE_FAILOVER=Y)
)
)
- Log in as ROOT:
[tibero@tac1-training ~]$ su - root
- Configure as variáveis de ambiente:
[root@tac1-training ~]# vi .bash_profile
[root@tac1-training ~]# vi .bash_profile
####################################################################
# TIBERO CM:
####################################################################
export TB_HOME=/home/tibero/tibero6
export CM_SID=cm1
export CM_HOME=/home/tibero/tibero6
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin
[root@tac1-training ~]# source .bash_profile
- Inicie o CM como ROOT:
[root@tac1-training ~]# tbcm -b
[root@tac1-training ~]# tbcm -b
CM Guard daemon started up.
import resources from '/home/tibero/tibero6/config/cm1.rsc'...
TBCM 6.1.1 (Build 139624)
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero cluster manager started up.
Local node name is (cm1:48629).
- Voltar para o contexto de normal user e verificar o status do CM, note que a informação "ROOT ON" é exibida na linha: "CM MODE":
[root@tac1-training ~]# exit
[tibero@tac1-training ~]$ tbcm -s
CM information
===========================================================
CM NAME : cm1
CM UI PORT : 48629
RESOURCE FILE PATH : /home/tibero/tibero6/config/cm1.rsc
CM MODE : GUARD ON, FENCE OFF, ROOT ON
LOG LEVEL : 2
CM BLOCK SIZE : 512
===========================================================
- Verificar o status do CLUSTER, note que a informação "(ROOT)" é exibida na linha: "Status" e que a letra "R" aparece na coluna "Mst":
[tibero@tac1-training ~]$ cmrctl show cluster --name cls1
[tibero@tac1-training ~]$ cmrctl show cluster --name cls1
Cluster Resource Info
===============================================================
Cluster name : cls1
Status : UP (ROOT)
Master node : (1) cm1
Last NID : 1
Local node : (1) cm1
Storage type : Active Storage
AS Diskstring : /dev/sd*
No. of cls files : 3
(1) +0
(2) +1
(3) +2
===============================================================
| NODE LIST |
|-------------------------------------------------------------|
| NID Name IP/PORT Status Schd Mst FHB NHB |
| --- -------- -------------------- ------ ---- --- ---- ---- |
| 1 cm1 100.100.100.10/18629 UP Y R M [ LOCAL ] |
===============================================================
| CLUSTER RESOURCE STATUS |
|-------------------------------------------------------------|
| NAME TYPE STATUS NODE MISC. |
| ---------------- -------- -------- -------- --------------- |
| SERVICE: tas |
| tas1 AS DOWN cm1 |
| SERVICE: tac |
| tac1 DB DOWN cm1 |
===============================================================
- Inicie o serviço do TAS:
[tibero@tac1-training ~]$ cmrctl start service --name tas
[tibero@tac1-training ~]$ cmrctl start service --name tas
- Inicie o serviço do TAC:
[tibero@tac1-training ~]$ cmrctl start service --name tac
[tibero@tac1-training ~]$ cmrctl start service --name tac
- Adicione o recurso VIP para o node 1 do TAC:
[tibero@tac1-training ~]$ cmrctl add vip --name vip1 --node cm1 --svcname tac --ipaddr 172.30.248.241/255.255.255.0
Resource add success! (vip, vip1)
- VM2:
- Configurar os parâmetros de conexão do client:
[tibero@tac2-training config]$ vi $TB_HOME/client/config/tbdsn.tbr
vip=
((INSTANCE=(HOST=100.100.100.11)
((INSTANCE=(HOST=100.100.100.11)
(PORT=8629)
(DB_NAME=tac))
(INSTANCE=(HOST=100.100.100.21)
(PORT=8629)
(DB_NAME=tac))
(LOAD_BALANCE=Y)
(USE_FAILOVER=Y)
)
)
- Log in as ROOT:
[tibero@tac2-training ~]$ su - root
- Configure as variáveis de ambiente:
[root@tac2-training ~]# vi .bash_profile
##################################################################### TIBERO CM:
####################################################################
export TB_HOME=/home/tibero/tibero6
export TB_HOME=/home/tibero/tibero6
export CM_SID=cm2
export CM_HOME=/home/tibero/tibero6
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin
[root@tac2-training ~]# source .bash_profile
- Inicie o CM como ROOT:
[root@tac2-training ~]# tbcm -b
[root@tac2-training ~]# tbcm -b
CM Guard daemon started up.
import resources from '/home/tibero/tibero6/config/cm1.rsc'...
TBCM 6.1.1 (Build 139624)
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero cluster manager started up.
Local node name is (cm1:48629).
[root@tac2-training ~]# exit
- Voltar para o contexto de normal user e iniciar o recurso do TAS da VM2:
[tibero@tac2-training ~]$ cmrctl start as --name tas2
- Iniciar o recurso do TAC da VM2:
[tibero@tac2-training ~]$ cmrctl start db --name tac2
[tibero@tac2-training ~]$ cmrctl start db --name tac2
[tibero@tac2-training ~]$ cmrctl add vip --name vip2 --node cm2 --svcname tac --ipaddr 192.168.15.146/255.255.255.0
- VM1:
- Verifique o status do TAC na VM1 e na VM2 usando apenas a VM1 para isso:
[tibero@tac1-training ~]$ cmrctl show ; cmrctl show --remote cm2@cls1
[tibero@tac1-training ~]$ cmrctl show ; cmrctl show --remote cm2@cls1
⇨ Exercícios de loadbalance e failover "COM VIP":
- Refazer os testes #001, #002 e #003 anteriores.
Nenhum comentário:
Postar um comentário