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.

5
Média: 5 (1 vote)
Sua avaliação: Nenhum

CONNECTION MANAGER WINDOWS

Olá amigo, Estou tentando configurar o Connection Manager em um servidor WEB Windows 2008 para enchergar as instancias do Informix rodando em SUSE LINUX. Só que não funciona. No online.log do LINUX dá erro de password. Pode me dar uma força?

RE: CONNECTION MANAGER WINDOWS

Olá Urbano,
Está utilizando a configuração PROXY ou REDIRECT?
Se configurada a aplicação para acessar diretamente o banco, funciona?
Você conferiu usuário e senha fornecida na aplicação? Existe o usuário com a devida senha no servidor linux?
Qual a linguagem de programação utilizada?
Obs.: Se preferir ter ajuda de outras pessoas (incluso a minha) poste esta mensagem no fórum do iiug em português: http://www.iiug.org/forums/iiug-por/ (recomendo!)
Abraço
César

CONNECTION MANAGER WINDOWS

Postei em: http://www.iiug.org/forums/iiug-por/index.cgi/read/121 Espero receber ajuda. Muito obrigado por ter respondido. Abraços.

Comentar

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.