Responder a este comentário

Como configurar o CMSM ( Connection Manager )

Versão para impressãoEnviar para amigoVersão PDF

O Connection Manager foi disponibilizado apartir da versão 11.10 do Informix. Seus recursos são compativeis apenas com esta versão ou superior.

Artigo atualizado para versão 3.50 xC6

  1. O que é o Connection Manager
  2. Configuração
    1. Passos de configuração
      1. Configurar onconfig das instancias para DRAUTO=3
      2. Definir um arquivo com os dados de servidores/usuário/senha
      3. Configurar o oncmsm
      4. Realizar configuração adequada do SQLHOSTS
      5. Definir variáveis de ambiente
      6. Inicializar o connection manager
      7. Monitorar o CM através do banco de dados e seu próprio arquivo de log
  3. Recomendações no lado do cliente

O que é o Connection Manager


É um gerenciador de conexões com as instancias Informix em ambiente de alta disponibilidade. Até a versão do CSDK 3.50 xC5 ele funciona apenas como um roteador de conexões onde um usuário ao tentar conectar em uma instancia irá apontar para ele (CM) e então ele irá dizer para qual servidor este usuário deverá efetivamente se conectar.
Trabalhando desta forma a conexão do usuário com o banco de dados será direta e não ocorrerá mais nenhuma intervenção ou dependência do Connection Manager. Com isso ele não exige recursos de maquina (alto processamento, memória ou disco), apenas boa conectividade de rede com a aplicação cliente e os bancos de dados para identificar seus status.

A partir da versão 3.50 xC6 foi adicionar ao Conection Manager a capacidade de trabalhar como um Proxy onde toda e qualquer conexão é mantida através dele. Desta forma já se passas a exigir um certo cuidado com o ambiente onde ele é configurado pois dependendo da carga de dados que será trafegado através dele poderá acarretar em problemas de performance. Mas tudo isso é contornável configurando outras instâncias do CM em outras maquinas, garantindo também a redundância.


Configuração


É recomendado que o Connection Manager seja configurado no mesmo hosts que a aplicação e executada ou em outro host que não seja o mesmo do banco de dados.

Também é possível e recomendado que seja definido mais de uma instancia do CM.
Quando há mais de uma instancia do CM, elas se conversam através do servidor primário.

O Connection Manager utiliza regras de SLA (Service level Agreement) e quando é definida uma regra com mais de um servidor o CM define qual servidor direcionar a conexão através da carga de utilização de cada um deles.

Na situação de failover , para evitar erro de diagnóstico como queda de rede entre o CM e servidor primário, o CM utiliza os outros servidores secundários para confirmar se o servidor primário realmente está fora do ar.

Para sua inicialização o CM precisa conectar ao servidor primário com ele ativo (definido pelo INFORMIXSERVER).

Passos de configuração


  • Configurar onconfig das instancias para DRAUTO=3
    Opcional, onde este parâmetro define que o CM irá controlar situações de failover
  • Definir um arquivo com os dados de servidores/usuário/senha
    Encriptar este arquivo
  • Definir parametros do CM (cmsm.cfg)
  • Realizar configuração adequada do SQLHOSTS.
  • Definir variaveis de ambiente (INFORMIXDIR, INFORMIXSERVER, INFORMIXSQLHOSTS)
  • Inicializar o CM com o comando : oncmsm -c <arquivo_config>
  • Monitorar o CM através do Banco de Dados e seu próprio arquivo de log.

Apenas o usuário informix/root pode executar o daemon "oncmsm" ou um usuário que faça parte do grupo DBSA e tenha acesso ao banco sysadmin

Configurar onconfig das instancias para DRAUTO=3


Esta configuração é feita para que assim o banco de dados siga as "ordens" de Fail Over do Connection Manager
Caso constrário o BD irá executar a script definida FAILOVER_CALLBACK no onconfig.

Definir um arquivo com os dados de servidores/usuário/senha


Criar o arquivo de senha para que o CM tenha uma conexão segura (trusted) com as instancias de banco de dados.
  • O arquivo deverá conter os servernames/username/password de todos as instancias que façam parte do mach11.
    Exemplo de conteudo de arquivo:
    idsEarth_mach11  idsEarth  informix senhaabcd
    idsNetuno_mach11 idsNetuno informix senhaabcd
    idsMars_mach11   idsMars   informix senhaabcd
    

    Observação: Baseado nos testes realizados, quando é utilizado o parametro s=6 no sqlhosts limitando os tipos de conexões de ER/HA, é imprencidivel que seja especificado o segundo servername para conexão do Connection Manager e que seja especificado na ordem correta: Primeiro o servidor definido no MACH11 e segundo o servidor de acesso dos usuários.
  • Encriptar arquivo
    $ onpassword -k senha_xyz -e ./ids_mach11.lista.txt
    

    Será gerado um arquivo automaticamente : $INFORMIXDIR/etc/passwd_file
    Para mais informações sobre o onpassword ver artigo sobre o mesmo.
    Observação: Esta senha não é utilizada em mais nenhum outro momento, apenas para desencriptar o arquivo quando necessário.

Configurar o oncmsm


Definir as configurações no arquivo $INFORMIXDIR/etc/cmsm.cfg ou em outro arquivo.
Em ambiente UNIX é possível passar estes parametros através de parametro em linha de comando ou especificar um arquivo de configuração diferente do citado acima.
Em ambiente WINDOWS é obrigatório utilizar o arquivo %INFORMIX%/etc/cmsm.cfg e é incluido parametros para instalar o aplicativo no serviços do S.O. para inicialização automática.
  • Definir nome da instancia do Connection Manager pois pode haver mais de um.
    NAME <nome>
    Exemplo:
    NAME cm1
  • Definir quais SLA (Service Level Agreement), sintaxe :
    SLA <nome_instancia_virtual> = <hosts/tipo-mach11> <MODE=[PROXY|REDIRECT]>
    No tipo de host pode-se utilizar as palavras-chaves : SDS , HDR, SDS e PRI onde o CM identifica cada um deles e define qual utilizar automaticamente.
    Na versão 3.50 xC6 foi incluido o parâmetro <MODE=...> que indica se será utilizado o modo proxy ou redirect
    Exemplo:
    SLA online_cm1=PRI <MODE=PROXY>
    SLA online2_cm1=idsmars <MODE=REDIRECT>
    SLA batch_cm1=(SDS+HDR)
    SLA relatorios_cm1=RSS
    SLA relatorios2_cm1=idsmoon <MODE=PROXY>
    SLA consulta1=(idsmoon+idsmars)

  • Definir sequencia de Fail Over, sintaxe:
    FOC <servers>,<timeout>
    Exemplo:
    FOC SDS+HDR+RSS,0
    FOC idsearth+idsmoon,10

  • Definir quantas threads irão realizar as conexões
    SLA_WORKERS 16
  • Definir time-out para comunicação com servidor e iniciar processo de failover definido no parametro FOC
    EVENT_TIMEOUT 120
    Este time-out é válido para comunicação entre o CM e o servidor, pode-se definir o valor -1 , neste caso não será feito time-out, o CM só irá executar o failover quando receber de um servidor secundário a informação de que o servidor primário está inacessivel.
  • Definir um arquivo de log
    LOGFILE /opt/IBM/ids1150uc3de/log/cm1.log
  • Definir nivel de log
    DEBUG 0


    Abaixo segue uma configuração completa:
    ## Exemplo de cmsm.cfg 
    # Connection Manager name
    NAME    cm1
    SLA     online_cm1=idsmars
    SLA     batch_cm1=(idsearth_tcpb+idsmars_tcpb)
    SLA     relatorio_cm1=(idsearth_tcpb)
    SLA     consulta_cm1=(idsearth)
    # Failover Configuration
    FOC     SDS+HDR+RSS,0
    # worker threads for each SLA listener, default is 8
    SLA_WORKERS     16
    # Event timeout , default is 60 
    EVENT_TIMEOUT   120
    # Connection Manager message file
    LOGFILE /opt/IBM/csdk.3.50uc3/log/cm1.log
    DEBUG 1
    

Realizar configuração adequada do SQLHOSTS


Definir entradas no sqlhosts para: SLAs , instancias de banco de dados
As SLAs definidas são as mesmas especificadas na configuração dos Connection Managers.
As instancias do banco são utilizadas pelo redirecionamento do Connection Manager.
Quando é utilizado mais de um CM é recomendado utiliza-lo em grupo para que haja redundancia na conectividade do cliente. No exemplo abaixo é definido os SLAs de dois CM e as instancias envolvidas:
    ## Exemplo de SQLHOST 
    
    ## CONNECTION MANAGER
    #################################################
    online            group     -                   -     c=1
    online_cm1        onsoctcp  codsrv222           61001 g=online
    online_cm2        onsoctcp  320wk344            62001 g=online
    batch             group     -                   -     c=1
    batch_cm1         onsoctcp  codsrv222           61002 g=batch
    batch_cm2         onsoctcp  320wk344            62002 g=batch
    relatorio         group     -                   -     c=1
    relatorio_cm1     onsoctcp  codsrv222           61003 g=relatorio
    relatorio_cm2     onsoctcp  320wk344            62003 g=relatorio
    consulta          group     -                   -     c=1
    consulta_cm1      onsoctcp  codsrv222           61004 g=consulta
    consulta_cm2      onsoctcp  320wk344            62004 g=consulta
    
    ## SERVIDORES
    #################################################
    idsmars           onsoctcp  codsrv222           2010
    idsmars_tcpb      onsoctcp  codsrv222           2110 b=32767
    idsearth          onsoctcp  320wk344            2001
    idsearth_tcpb     onsoctcp  320wk344            2101 b=32767
    
Neste exemplo o cliente deverá estar com o INFORMIXSERVER configurado para conectar em algum destes valores: online , batch , relatorio , consulta
Observação: O cliente também pode utilizar a variável DBPATH em conjunto com esta configuração.
Para informações sobre opções do sqlhosts ver manual

Definir variáveis de ambiente


  • INFORMIXDIR
    Apontado para o diretório de instalação do oncmsm
  • INFORMIXSERVER
    Nome do servidor primário no cluster.
  • INFORMIXSQLHOSTS
    Nome do arquivo sqlhosts utilizado pelo oncmsm

Inicializar o connection manager


    # Pode-se utilizar apenas o comando abaixo quando é utilizado o arquivo 
    # de configuração padrão ( $INFORMXIDIR/etc/cmsm.cfg):
    $  oncmsm
    # Ou pode-se especificar o arquivo:
    $  oncmsm -c $INFORMIXDIR/etc/meu.cmsm.cfg
    

Monitorar o CM através do banco de dados e seu próprio arquivo de log


Para monitorar se o Connection Manager está ativo, em qualquer instancia do cluster , basta executar o comando:
    $ onstat -g cmsm
    
Monitorar por tabelas no sysmaster: syscmsm , syscmsmsla, syscmsmtab
Monitorar por através do próprio arquivo de log gerado através do parametro de configuração LOGGILE.

Recomendações no lado do cliente


  • Definir o INFORMIXSERVER com o nome do SLA ou GRUPO definido no sqlhosts
  • Definir tempos das variáveis INFORMIXCONRETRY e INFORMIXCONTIME
  • Incluir tratamento de erro na aplicação para os erros:
    -7350. An attempt was made to update a stale version of a row. This caused an optimistic concurrency failure.
    -7351. The connection between Secondary and Primary has been lost.

0
Ainda não votado
Sua avaliação: Nenhum

Responder

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.