Crie uma solução de failover baseada na arquitetura Oracle RAC e AccelStor Shared-Nothing

Um número considerável de aplicativos corporativos e sistemas de virtualização possui seus próprios mecanismos para criar soluções tolerantes a falhas. Em particular, o Oracle RAC (Oracle Real Application Cluster) é um cluster de dois ou mais servidores de banco de dados Oracle trabalhando juntos para equilibrar a carga e fornecer tolerância a falhas no nível do servidor / aplicativo. Para trabalhar neste modo, é necessário um armazenamento comum, cuja função é geralmente armazenamento.


Como já discutimos em um de nossos artigos , o sistema de armazenamento, apesar da presença de componentes duplicados (incluindo controladores), ainda possui pontos de falha - principalmente na forma de um único conjunto de dados. Portanto, para criar uma solução Oracle com maiores requisitos de confiabilidade, o esquema "N servidores - um armazenamento" deve ser complicado.




Primeiro, é claro, você precisa decidir contra quais riscos estamos tentando garantir. Neste artigo, não consideraremos a proteção contra ameaças como a chegada de um meteorito. Portanto, a criação de uma solução de recuperação de desastre geograficamente dispersa continuará sendo um tópico para um dos seguintes artigos. Aqui, examinamos a chamada solução de recuperação de desastre entre rack, quando a proteção é criada no nível dos gabinetes de servidor. Os próprios armários podem estar localizados na mesma sala ou em diferentes, mas geralmente dentro do mesmo prédio.


Esses gabinetes devem conter todo o conjunto de equipamentos e software necessários para garantir a operação dos bancos de dados Oracle, independentemente do estado do “vizinho”. Em outras palavras, usando a solução de recuperação de desastre Cross-Rack, eliminamos os riscos de falha:


  • Servidores de Aplicativos Oracle
  • Sistemas de armazenamento
  • Sistemas de comutação
  • Falha completa de todos os equipamentos no gabinete:
    • Falha de energia
    • Falha no sistema de refrigeração
    • Fatores externos (homem, natureza, etc.)

A duplicação de servidores Oracle implica o próprio princípio do Oracle RAC e é implementada através do aplicativo. A duplicação de ferramentas de comutação também não é um problema. Mas a duplicação do sistema de armazenamento não é tão simples.


A opção mais fácil é replicar dados do armazenamento primário para o backup. Síncrono ou assíncrono, dependendo dos recursos de armazenamento. A replicação assíncrona levanta imediatamente a questão de garantir a consistência dos dados com o Oracle. Porém, mesmo se houver integração de software com o aplicativo, em qualquer caso, em caso de acidente no sistema de armazenamento principal, será necessária uma intervenção manual dos administradores para alternar o cluster para o armazenamento de backup.


Uma opção mais complexa são os “virtualizadores” de software e / ou hardware de sistemas de armazenamento, que eliminam problemas com consistência e intervenção manual. Mas a complexidade da implantação e administração subsequente, bem como o custo muito indecente de tais soluções, assusta muitos.


Apenas para cenários como recuperação de desastre entre bastidores, o array All Flash AccelStor NeoSapphire ™ H710 usando a arquitetura Shared-Nothing é perfeito . Este modelo é um sistema de armazenamento duplo usando sua própria tecnologia FlexiRemap® para trabalhar com pen drives. Graças ao FlexiRemap® NeoSapphire ™ H710, ele pode fornecer até 600K de gravação aleatória IOPS @ 4K e 1M + IOPS @ 4K de leitura aleatória, o que é inatingível com o armazenamento clássico baseado em RAID.


Mas a principal característica do NeoSapphire ™ H710 é a execução de dois nós como gabinetes separados, cada um com sua própria cópia dos dados. A sincronização do nó é realizada através da interface externa do InfiniBand. Graças a essa arquitetura, os nós podem se espalhar por diferentes locais, por distâncias de até 100m, fornecendo a solução de recuperação de desastre Cross-Rack. Ambos os nós funcionam completamente no modo síncrono. Do lado do host, o H710 parece um armazenamento comum de controlador duplo. Portanto, nenhuma opção adicional de software e hardware e configurações particularmente complexas precisam ser executadas.


Se você comparar todas as soluções de recuperação de desastre Cross-Rack descritas acima, a versão AccelStor se destacará das demais:


Arquitetura compartilhada do AccelStor NeoSapphire ™ NothingVirtualizador de armazenamento de software ou hardwareSolução de replicação
Disponibilidade
Falha no servidorSem tempo de inatividadeSem tempo de inatividadeSem tempo de inatividade
Falha no interruptorSem tempo de inatividadeSem tempo de inatividadeSem tempo de inatividade
Falha no armazenamentoSem tempo de inatividadeSem tempo de inatividadeTempo de inatividade
Falha de todo o gabineteSem tempo de inatividadeSem tempo de inatividadeTempo de inatividade
Custo e complexidade
Custo da soluçãoBaixo *AltaAlta
Dificuldade de implantaçãoBaixoAltaAlta

* O AccelStor NeoSapphire ™ ainda é um array All Flash, que por definição não custa “3 copeques”, especialmente porque possui uma reserva de capacidade dupla. No entanto, comparando o custo total da solução com base em soluções similares de outros fornecedores, o custo pode ser considerado baixo.


A topologia para conectar servidores de aplicativos e todos os nós da matriz Flash terá a seguinte aparência:



Ao planejar a topologia, também é altamente recomendável que você duplique os comutadores de gerenciamento e as interconexões do servidor.


A seguir, falaremos sobre a conexão via Fibre Channel. No caso de usar o iSCSI, tudo será o mesmo, ajustado para os tipos de comutadores usados ​​e configurações de matriz ligeiramente diferentes.


Trabalho preparatório na matriz


Hardware e software usados

Especificações de servidor e switch


ComponentesDescrição do produto
Servidores Oracle Database 11gDois
Sistema operacional do servidorOracle Linux
Versão do banco de dados Oracle11g (RAC)
Processadores por servidorDois CPU Intel® Xeon® de 16 núcleos E5-2667 v2 a 3.30GHz
Memória física por servidor128GB
Rede FCFC de 16 Gb / s com caminhos múltiplos
FC HBAEmulex Lpe-16002B
Portas públicas de 1 GbE dedicadas para gerenciamento de clusterAdaptador ethernet Intel rj45
Chave FC de 16 Gb / sBrocade 6505
Portas privadas de 10GbE dedicadas para sincronização de dadosIntel X520

Especificação do AccelStor NeoSapphhire ™ All Flash Array


ComponentesDescrição do produto
Sistema de armazenamentoModelo de alta disponibilidade NeoSapphire ™: H710
Versão da imagem4.0.1
Número total de unidades48.
Tamanho da unidade1,92TB
Tipo de unidadeSSD
Portas de destino FCPortas 16x 16Gb (8 por nó)
Portas de gerenciamentoO cabo Ethernet de 1 GbE se conecta aos hosts através de um comutador Ethernet
Porta de pulsaçãoO cabo Ethernet 1GbE que conecta entre dois nós de armazenamento
Porta de sincronização de dadosCabo InfiniBand de 56Gb / s


Antes de começar a usar uma matriz, você deve inicializá-la. Por padrão, o endereço de controle dos dois nós é o mesmo (192.168.1.1). Você precisa se conectar a eles um de cada vez, definir novos endereços de gerenciamento (já diferentes) e configurar a sincronização de horário, após o qual as portas de gerenciamento podem ser conectadas a uma única rede. Depois disso, os nós são combinados em um par de HA atribuindo sub-redes às conexões de Interlink.



Após a conclusão da inicialização, você pode controlar a matriz a partir de qualquer nó.


Em seguida, crie os volumes necessários e publique-os para servidores de aplicativos.



É altamente recomendável que você crie vários volumes para o Oracle ASM, pois isso aumentará o número de destinos para os servidores, o que acabará por melhorar o desempenho geral (mais sobre filas em outro artigo ).


Configuração de teste
Nome do volume de armazenamentoTamanho do volume
Data01200GB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Dados10200GB
Grid011GB
Grid021GB
Grade031GB
Grade041GB
Grade051GB
Grid061GB
Redo01100GB
Redo02100GB
Redo03100GB
Redo04100GB
Redo05100GB
Redo06100GB
Redo07100GB
Redo08100GB
Redo09100GB
Redo10100GB


Algumas explicações sobre os modos de operação do array e os processos que ocorrem em situações de emergência



Cada conjunto de dados do nó possui um parâmetro "número da versão". Após a inicialização, é igual e igual a 1. Se, por algum motivo, o número da versão for diferente, sempre haverá sincronização dos dados da versão mais antiga para a mais recente, após o qual o número será alinhado para a versão mais nova, ou seja, isso significa que as cópias são idênticas. Razões pelas quais as versões podem variar:


  • Reinicialização agendada de um dos nós
  • Um acidente em um dos nós devido a um desligamento repentino (energia, superaquecimento, etc.).
  • Conexão quebrada do InfiniBand com incapacidade de sincronizar
  • Falha em um dos nós devido à corrupção de dados. Isso já exigirá a criação de um novo grupo de alta disponibilidade e a sincronização completa do conjunto de dados.

De qualquer forma, o nó que permanece on-line aumenta seu número de versão em um, para que, após reconectar-se ao par, sincronize seu conjunto de dados.


Se a conexão for perdida através do link Ethernet, o Heartbeat alternará temporariamente para o InfiniBand e retornará dentro de 10 segundos quando for restaurado.


Configuração do host


Para garantir a tolerância a falhas e aumentar o desempenho, você deve habilitar o suporte MPIO para a matriz. Para fazer isso, adicione linhas ao arquivo /etc/multipath.conf e recarregue o serviço de caminhos múltiplos


Texto oculto
dispositivos {
dispositivo {
fornecedor "AStor"
path_grouping_policy "group_by_prio"
path_selector "comprimento da fila 0"
path_checker "tur"
apresenta "0"
hardware_handler "0"
prio "const"
failback imediato
fast_io_fail_tmo 5
dev_loss_tmo 60
user_friendly_names yes
detect_prio sim
rr_min_io_rq 1
no_path_retry 0
}
}


Além disso, para que o ASM funcione com o MPIO através do ASMLib, você precisa modificar o arquivo / etc / sysconfig / oracleasm e, em seguida, executar os escândiscos /etc/init.d/oracleasm


Texto oculto

# ORACLEASM_SCANORDER: Correspondência de padrões para solicitar a verificação de disco
ORACLEASM_SCANORDER = "dm"



# ORACLEASM_SCANEXCLUDE: padrões correspondentes para excluir discos da verificação
ORACLEASM_SCANEXCLUDE = "sd"


Nota


Se você não quiser usar o ASMLib, poderá usar as regras UDEV, que são a base para o ASMLib.


A partir da versão 12.1.0.2 Oracle Database, a opção está disponível para instalação como parte do software ASMFD.



Certifique-se de que os discos criados para o Oracle ASM estejam alinhados com o tamanho do bloco com o qual a matriz está trabalhando fisicamente (4K). Caso contrário, poderão ocorrer problemas de desempenho. Portanto, você deve criar volumes com os parâmetros apropriados:


parted / dev / mapper / nome do dispositivo mklabel gpt mkpart primário 2048s verificação 100% alinhada ideal 1


Distribuição de bancos de dados em volumes criados para nossa configuração de teste


Nome do volume de armazenamentoTamanho do volumeMapeamento de LUNs de volumeDetalhe do dispositivo de volume ASMTamanho da unidade de alocação
Data01200GBMapeie todos os volumes de armazenamento para o sistema de armazenamento todas as portas de dadosRedundância: normal
Nome: DGDATA
Objetivo: arquivos de dados
4MB
Data02200GB
Data03200GB
Data04200GB
Data05200GB
Data06200GB
Data07200GB
Data08200GB
Data09200GB
Dados10200GB
Grid011GBRedundância: normal
Nome: DGGRID1
Objetivo: Grade: CRS e votação
4MB
Grid021GB
Grade031GB
Grade041GBRedundância: normal
Nome: DGGRID2
Objetivo: Grade: CRS e votação
4MB
Grade051GB
Grid061GB
Redo01100GBRedundância: normal
Nome: DGREDO1
Objetivo: Refazer o log do encadeamento 1

4MB
Redo02100GB
Redo03100GB
Redo04100GB
Redo05100GB
Redo06100GBRedundância: normal
Nome: DGREDO2
Objetivo: Refazer o log do encadeamento 2

4MB
Redo07100GB
Redo08100GB
Redo09100GB
Redo10100GB

Configurações do banco de dados
  • Tamanho do bloco = 8K
  • Espaço de troca = 16 GB
  • Desativar AMM (Gerenciamento automático de memória)
  • Desativar páginas enormes transparentes


Outras configurações

# vi /etc/sysctl.conf
✓ fs.aio-max-nr = 1048576
✓ fs.file-max = 6815744
✓ kernel.shmmax 103079215104
✓ kernel.shmall 31457280
✓ kernel.shmmn 4096
✓ kernel.sem = 250 32000 100 128
✓ net.ipv4.ip_local_port_range = 9000 65500
✓ net.core.rmem_default = 262144
✓ net.core.rmem_max = 4194304
✓ net.core.wmem_default = 262144
✓ net.core.wmem_max = 1048586
✓ vm.swappiness = 10
✓ vm.min_free_kbytes = 524288 # não defina isso se você estiver usando o Linux x86
✓ vm.vfs_cache_pressure = 200
✓ vm.nr_hugepages = 57000



# vi /etc/security/limits.conf
✓ grade nproc macio 2047
✓ grade rígida nproc 16384
✓ nofile macio da grade 1024
✓ nofile rígido da grade 65536
✓ pilha macia de grade 10240
✓ pilha de disco rígido 32768
✓ oracle soft nproc 2047
✓ oracle hard nproc 16384
✓ Oracle nofile macio 1024
✓ oracle hard nofile 65536
✓ pilha macia oracle 10240
✓ oracle hard stack 32768
✓ memlock suave 120795954
✓ bloqueio de memória 120795954


sqlplus “/ as sysdba”
alterar processos do conjunto do sistema = 2000 scope = spfile;
alterar o conjunto do sistema open_cursors = 2000 scope = spfile;
alterar o conjunto do sistema session_cached_cursors = 300 scope = spfile;
alterar conjunto de sistemas db_files = 8192 scope = spfile;




Teste de tolerância a falhas


Para fins de demonstração, o HammerDB foi usado para emular a carga OLTP. Configuração do HammerDB:


Número de armazéns256
Total de transações por usuário1000000000000
Usuários virtuais256

Como resultado, foi obtido o indicador de 2,1M TPM, que está longe do limite de desempenho do array H710 , mas é o "teto" para a atual configuração de hardware dos servidores (principalmente devido aos processadores) e seu número. O objetivo deste teste ainda é demonstrar a tolerância a falhas da solução como um todo e não atingir o desempenho máximo. Portanto, simplesmente construiremos esse valor.



Teste de falha de um dos nós




Os hosts perderam alguns dos caminhos para a loja, continuando a trabalhar pelos demais com o segundo nó. O desempenho caiu por alguns segundos devido à reestruturação dos caminhos e depois voltou ao normal. Nenhuma interrupção de serviço ocorreu.


Teste de falha do gabinete com todos os equipamentos




Nesse caso, o desempenho também caiu por alguns segundos devido à reestruturação dos caminhos e retornou à metade do valor do indicador original. O resultado foi dividido pela metade do original devido à exclusão da operação de um servidor de aplicativos. A interrupção do serviço também não aconteceu.


Se você precisar implementar uma solução de recuperação de desastre entre rack e tolerante a falhas para Oracle a um custo razoável e com pouco esforço de implantação / administração, trabalhar em conjunto com a arquitetura Oracle RAC e AccelStor Shared-Nothing seria uma das melhores opções. Em vez do Oracle RAC, pode haver qualquer outro software que forneça cluster, o mesmo DBMS ou sistemas de virtualização, por exemplo. O princípio de construir a solução permanecerá o mesmo. E a pontuação final é zero para RTO e RPO.

Source: https://habr.com/ru/post/pt448538/


All Articles