Como configurar o CMSM ( Connection Manager )
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.
- O que é o Connection Manager
- Configuração
- Passos de configuração
- Configurar onconfig das instancias para DRAUTO=3
- Definir um arquivo com os dados de servidores/usuário/senha
- Configurar o oncmsm
- Realizar configuração adequada do SQLHOSTS
- Definir variáveis de ambiente
- Inicializar o connection manager
- Monitorar o CM através do banco de dados e seu próprio arquivo de log
- Passos de configuração
- 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=32767Neste 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, syscmsmtabMonitorar 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.
- 908 leituras





CONNECTION MANAGER WINDOWS
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
Comentar