O arquivo db2nodes.cfg é utilizado para definir os servidores de partição de banco de dados que participam da instância do DB2. O arquivo db2nodes.cfg também é utilizado para especificar o endereço IP ou nome do host de uma interconexão de alta velocidade, caso você queira utilizar uma interconexão de alta velocidade para comunicação de servidores de partição de banco de dados.
O formato do arquivo db2nodes.cfg em sistemas operacionais Linux e UNIX é o seguinte:
dbpartitionnum hostname logicalport netname resourcesetnamedbpartitionnum
, hostname, logicalport, netname e resourcesetname estão definidos na seção a seguir.
O formato do arquivo db2nodes.cfg em sistemas operacionais Windows é o seguinte:
dbpartitionnum hostname computername logicalport netname resourcesetname
Em sistemas operacionais Windows, estas entradas no db2nodes.cfg são incluídas pelos comandos db2ncrt ou START DBM ADD DBPARTITIONNUM. As entradas também podem ser modificadas pelo comando db2nchg. Você não deve incluir estas linhas diretamente ou editar este arquivo.
Para escalar seu sistema de banco de dados particionado, inclua uma entrada para cada servidor de partição de banco de dados no arquivo db2nodes.cfg. O valor dbpartitionnum selecionado para servidores de partição de banco de dados adicionais deve estar em ordem crescente, no entanto, podem existir intervalos nesta sequência. É possível escolher colocar um intervalo entre os valores dbpartitionnum se planeja incluir servidores de partição lógica e deseja manter os nós logicamente agrupados neste arquivo.
Essa entrada é obrigatória.
Se os nomes dos hosts forem fornecidos no arquivo db2nodes.cfg, em vez dos endereços IP, o gerenciador de banco de dados tentará dinamicamente resolver os nomes dos hosts. A resolução pode ser local ou através de consulta nos DNS (Servidores de Nomes de Domínio) registrados, como determinado pelas configurações do SO na máquina.
Iniciando com o DB2 Versão 9.1, os protocolos TCP/IPv4 e TCP/IPv6 são suportados. O método para resolver os nomes dos hosts foi alterado.
Enquanto o método utilizado nos releases anteriores à Versão 9.1 resolviam a cadeia como definido no arquivo db2nodes.cfg, o método na Versão 9.1 ou posterior tenta resolver o FQDN (Fully Qualified Domain Names) quando os nomes abreviados são definidos no arquivo db2nodes.cfg. Especificar os nomes abreviados configurados para os nomes de host completos pode levar a atrasos desnecessários nos processos que resolvem os nomes dos hosts.
Para evitar quaisquer atrasos nos comandos do DB2 que requerem a resolução do nome do host, utilize qualquer uma das soluções alternativas a seguir:
db2 catalog tcpip4 node db2tcp2 remote 192.0.32.67 server db2inst1 with "Look up IPv4 address from 192.0.32.67"
db2 catalog tcpip6 node db2tcp3 1080:0:0:0:8:800:200C:417A server 50000 with "Look up IPv6 address from 1080:0:0:0:8:800:200C:417A"
O DB2 reserva um intervalo de portas (por exemplo, 60000 - 60003) no arquivo /etc/services para comunicações interpartição no momento da instalação. O campo logicalport no db2nodes.cfg especifica qual porta do intervalo você deseja designar para um servidor de partições lógicas específico.
Se não existir nenhuma entrada para esse campo, o padrão será 0. No entanto, se você incluir uma entrada para o campo netname, você deve digitar um número para o campo logicalport.
Se estiver utilizando partições de banco de dados lógicas, o valor logicalport que você especificar deverá começar com 0 e continuar em ordem crescente (por exemplo, 0,1,2).
Além disso, se você especificar a entrada de uma logicalport para o servidor de partição de um banco de dados, deverá especificar uma logicalport para o servidor de partição de cada banco de dados listado no arquivo db2nodes.cfg.
Este campo será opcional apenas se você não estiver utilizando partições de banco de dados lógicos ou uma interconexão de alta velocidade.
Se uma entrada for especificada para este campo, todas as comunicações entre os servidores de partição do banco de dados (com exceção para comunicação como resultado dos comandos db2start, db2stop, e db2_all) são tratadas através da interconexão de alta velocidade.
Este parâmetro será obrigatório apenas se você estiver utilizando uma interconexão de alta velocidade para comunicações de partições do banco de dados.
Este parâmetro é suportado apenas no AIX, HP-UX e Sistema Operacional Solaris.
No AIX, este conceito é conhecido como "conjuntos de recursos" e no Sistema Operacional Solaris é chamado de "projetos". Consulte a documentação do seus sistemas operacionais para obter informações adicionais sobre gerenciamento de recursos.
No HP-UX, o parâmetro resourcesetname é o nome de um grupo PRM. Consulte a documentação "HP-UX Process Resource Manager. User Guide. (B8733-90007)" da HP para obter informações adicionais.
Em sistemas operacionais Windows, a afinidade de processo para um nó lógico pode ser definida através da variável de registro DB2PROCESSORS.
Em sistemas operacionais Linux, a coluna resourcesetname define um número que corresponde a um nó Non-Uniform Memory Access (NUMA) no sistema. O utilitário do sistema numactl deve estar disponível, bem como um Kernel 2.6 com suporte à política NUMA.
O parâmetro netname deve ser especificado se o parâmetro resourcesetname é utilizado.
Utilize os seguintes exemplos de configurações para determinar a configuração apropriada para seu ambiente.
0 ServerA 0 1 ServerA 1 2 ServerA 2 3 ServerA 3
0 ServerA 0 1 ServerB 0
4 ServerA 0 6 ServerA 1 8 ServerA 2 9 ServerB 0
0 ServerA 0 switch1 1 ServerB 0 switch2 2 ServerB 1 switch2
Estas restrições se aplicam aos seguintes exemplos:
A seguir está um exemplo de como configurar o conjunto de recursos para sistemas operacionais AIX.
Neste exemplo, existe um nó físico com 32 processadores e 8 partições lógicas de banco de dados (MLNs). Este exemplo mostra como fornecer afinidade de processo a cada MLN.
DB2/MLN1: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00000,sys/cpu.00001,sys/cpu.00002,sys/cpu.00003 DB2/MLN2: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00004,sys/cpu.00005,sys/cpu.00006,sys/cpu.00007 DB2/MLN3: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00008,sys/cpu.00009,sys/cpu.00010,sys/cpu.00011 DB2/MLN4: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00012,sys/cpu.00013,sys/cpu.00014,sys/cpu.00015 DB2/MLN5: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00016,sys/cpu.00017,sys/cpu.00018,sys/cpu.00019 DB2/MLN6: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00020,sys/cpu.00021,sys/cpu.00022,sys/cpu.00023 DB2/MLN7: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00024,sys/cpu.00025,sys/cpu.00026,sys/cpu.00027 DB2/MLN8: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00028,sys/cpu.00029,sys/cpu.00030,sys/cpu.00031
vmo -p -o memory_affinity=1
chuser capabilities= CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH db2inst1
1 regatta 0 regatta DB2/MLN1 2 regatta 1 regatta DB2/MLN2 3 regatta 2 regatta DB2/MLN3 4 regatta 3 regatta DB2/MLN4 5 regatta 4 regatta DB2/MLN5 6 regatta 5 regatta DB2/MLN6 7 regatta 6 regatta DB2/MLN7 8 regatta 7 regatta DB2/MLN8
Este exemplo mostra como utilizar grupos de PRM para compartilhamentos de CPU em uma máquina com 4 CPUs e 4 MLNs e 24% de compartilhamento da CPU por MLN, restando 4% para outros aplicativos. O nome da instância do DB2 é db2inst1.
OTHERS:1:4:: db2prm1:50:24:: db2prm2:51:24:: db2prm3:52:24:: db2prm4:53:24::
db2inst1::::OTHERS,db2prm1,db2prm2,db2prm3,db2prm4
prmconfig -i prmconfig -e CPU
1 voyager 0 voyager db2prm1 2 voyager 1 voyager db2prm2 3 voyager 2 voyager db2prm3 4 voyager 3 voyager db2prm4
A configuração do PRM (etapas 1-3) pode ser feita utilizando-se a ferramenta da GUI interativa xprm.
Em sistemas operacionais Linux, a coluna resourcesetname define um número que corresponde a um nó Non-Uniform Memory Access (NUMA) no sistema. O utilitário de sistema numactl deve estar disponível bem como um kernel 2.6 com suporte de política NUMA. Consulte a página principal do numact1 para obter mais informações sobre o suporte a NUMA em sistemas operacionais Linux.
Este exemplo mostra como configurar um computador NUMA com quatro nós com cada nó lógico associado a um nó NUMA.
$ numactl --hardwareUma saída semelhante à seguinte é exibida:
disponível: 4 nós (0-3) tamanho do nó node: 1901 MB livre no nó 0: 1457 MB tamanho do nó 1: 1910 MB livre no nó 1: 1841 MB tamanho do nó 2: 1910 MB livre no nó 2: 1851 MB tamanho do nó 3: 1905 MB livre no nó 3: 1796 MB
0 hostname 0 hostname 0 1 hostname 1 hostname 1 2 hostname 2 hostname 2 3 hostname 3 hostname 3
Aqui está um exemplo de como configurar o projeto para Solaris Versão 9.
Neste exemplo, existe 1 nó físico com 8 processadores: uma CPU será utilizada para o projeto padrão, três (3) CPUs serão utilizadas pelo Servidor de Aplicativos e quatro (4) CPUs para o DB2. O nome da instância é db2inst1.
create system hostname create pset pset_default (uint pset.min = 1) create pset db0_pset (uint pset.min = 1; uint pset.max = 1) create pset db1_pset (uint pset.min = 1; uint pset.max = 1) create pset db2_pset (uint pset.min = 1; uint pset.max = 1) create pset db3_pset (uint pset.min = 1; uint pset.max = 1) create pset appsrv_pset (uint pset.min = 3; uint pset.max = 3) create pool pool_default (string pool.scheduler="TS"; boolean pool.default = true) create pool db0_pool (string pool.scheduler="TS") create pool db1_pool (string pool.scheduler="TS") create pool db2_pool (string pool.scheduler="TS") create pool db3_pool (string pool.scheduler="TS") create pool appsrv_pool (string pool.scheduler="TS") associate pool pool_default (pset pset_default) associate pool db0_pool (pset db0_pset) associate pool db1_pool (pset db1_pset) associate pool db2_pool (pset db2_pset) associate pool db3_pool (pset db3_pset) associate pool appsrv_pool (pset appsrv_pset)
system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: appsrv:4000:App Serv project:root::project.pool=appsrv_pool db2proj0:5000:DB2 Node 0 project:db2inst1,root::project.pool=db0_pool db2proj1:5001:DB2 Node 1 project:db2inst1,root::project.pool=db1_pool db2proj2:5002:DB2 Node 2 project:db2inst1,root::project.pool=db2_pool db2proj3:5003:DB2 Node 3 project:db2inst1,root::project.pool=db3_pool
0 hostname 0 hostname db2proj0 1 hostname 1 hostname db2proj1 2 hostname 2 hostname db2proj2 3 hostname 3 hostname db2proj3