Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta grátis, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir o laboratório, substitua esses valores por valores específicos ao seu ambiente de nuvem.
Configure um cluster ativo/passivo de Alta Disponibilidade pfSense com o Corosync/Pacemaker no Oracle Cloud Infrastructure
Observação: o suporte oficial do pfSense não é feito no Oracle Cloud Infrastructure pelo Netgate ou pela Oracle. Entre em contato com a equipe de suporte pfSense antes de experimentar este tutorial.
Introdução
O OCI (Oracle Cloud Infrastructure) é um conjunto complementar de serviços de nuvem que permite criar e executar uma grande variedade de aplicativos e serviços em um ambiente hospedado altamente disponível. O Oracle Cloud Infrastructure (OCI) oferece recursos de computação de alto desempenho (como instâncias de hardware físicas) e capacidade de armazenamento em uma rede virtual de sobreposição flexível que pode ser acessado com segurança na sua rede local.
pfSense é um firewall e roteador de código aberto e gratuito que também apresenta gerenciamento de ameaças unificado, balanceamento de carga, várias WAN e muito mais.
Objetivo
Configure o appliance virtual pfSense em uma configuração ativa/passiva de alta disponibilidade com a ajuda do Corosync/Pacemaker no OCI.
Pré-requisitos
- Acesso a uma tenancy do Oracle Cloud
- Uma configuração da Rede Virtual na Nuvem na tenancy
- Todas as configurações de política necessárias para Oracle Object Storage, Redes Virtuais na Nuvem, Compute e Imagens Personalizadas.
Pontos para Observação
- Neste tutorial, temos uma configuração regional da Rede Virtual na Nuvem com duas sub-redes: pública e privada com o CIDR de 192.0.2.0/29 e 192.0.2.8/29, respectivamente
- Instância principal - Node1, instância secundária - Node2
- Node1 nome do host - "pfSense-primary" e IP: 192.0.2.2/29
- Node2 nome do host - "pfSense-secondary" e IP: 192.0.2.5/29
- Você pode usar a ferramenta pfSense Editar Arquivo localizada no console pfSense, Diagnóstico, Editar arquivo para fazer alterações no arquivo.
- O termo pfSense Shell é usado neste tutorial. Você pode acessar o shell fazendo ssh na instância e selecionando 8 no menu pfSense.
Tarefa 1: Instalar dois pfSense Virtual Appliances no Oracle Cloud
Neste tutorial, usaremos dois appliances virtuais pfSense para Alta Disponibilidade. É possível configurar vários nós com base em seus requisitos. Siga as etapas deste tutorial Instalar e Configurar pfSense no Oracle Cloud Infrastructure.
Observação:
- Os dois nós devem ser configurados em Domínios de Disponibilidade diferentes e devem ser capazes de fazer ping entre si.
- Você pode configurar esses nós em Redes Virtuais na Nuvem ou Regiões diferentes, mas certifique-se de ter Gateways de Pareamento e Tabelas de Roteamento definidos para permitir que os nós acessem uns aos outros.
- Se você não conseguir fazer ping dos nós uns dos outros, verifique suas regras de firewall pfSense, bem como a Lista de Segurança do Oracle Cloud associada à sua instância e permita tráfego ICMP.
Instale os pacotes necessários
-
Os repositórios FreeBSD estão desativados por padrão. Para ativar o repositório FreeBSD, siga estas etapas:
- Defina FreeBSD:
{ enabled: yes } in /usr/local/etc/pkg/repos/FreeBSD.conf
- Defina FreeBSD:
{ enabled: yes } in /usr/local/share/pfSense/pkg/repos/pfSense-repo.conf
- Defina FreeBSD:
-
Depois de ativar o repositório FreeBSD, atualize o gerenciador de pacotes.
Node1@ pkg update Node2@ pkg update
Observação: Isso atualizará o gerenciador de pacotes e os metadados de repositório.
-
Instale os quatro pacotes a seguir necessários para configurar o cluster de alta disponibilidade.
- Marcador
- Corossincronização
- Crmsh
- CLI do OCI
Execute os comandos a seguir para instalação
Node1@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli Node2@ pkg install pacemaker2 corosync2 crmsh devel/oci-cli
Siga os prompts para concluir a instalação.
Tarefa 3: Configurar Pacemaker/Corosync nas instâncias
Configurar Corosync
-
Crie um novo arquivo de confirmação do Corosync executando o comando a seguir em ambas as instâncias.
Node1@ touch /usr/local/etc/corosync/corosync.conf Node2@ touch /usr/local/etc/corosync/corosync.conf
-
Cole a configuração a seguir no script em ambos os nós.
Observação: certifique-se de substituir seus endereços IP na lista de nós.
# Please read the corosync.conf.5 manual page totem { version: 2 crypto_cipher: none crypto_hash: none transport: udpu } logging { fileline: off to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: on timestamp: on logger_subsys { subsys: QUORUM debug: on } } nodelist { node { ring0_addr: 192.0.2.2 # make sure to replace with your IP nodeid: 1 } node { ring0_addr: 192.0.2.5 # make sure to replace with your IP nodeid: 2 } } quorum { # Enable and configure quorum subsystem (default: of # see also corosync.conf.5 and votequorum.5 provider: corosync_votequorum }
Se você tentar iniciar o Corosync agora, ele falhará com a mensagem de erro "Sem espaço no dispositivo".
Ativar disco RAM nos dois nós
O Corosync e o Pacemaker contam com o diretório /var
para seu runtime e, se você tiver feito uma instalação padrão, o espaço disponível no /var
será muito limitado. Você deve configurar e usar a memória (RAM) para os diretórios /var
e /tmp
, isso também nos ajudará a melhorar o desempenho.
-
No console pfSense, navegue até Sistema, clique em Avançado e, em seguida, clique em Diversos.
-
Role para baixo até Definições de Disco de Ram e marque a caixa de seleção Usar Discos de Ram.
-
Informe o tamanho do disco RAM que você deseja alocar para os diretórios
/tmp
e/var
. -
Salvar a configuração. Você será solicitado a reinicializar pela primeira vez que ativar o Disco RAM, mais tarde, poderá aumentar ou diminuir o tamanho do Disco RAM em qualquer lugar.
Observação: Como estamos usando os Discos Ram, no caso de um Shutdown do Sistema, todos os nossos arquivos em
/tmp
e/var
serão perdidos. Devemos configurar um script de inicialização (arquivo rc.d) que criará os diretórios que o Corosync e o Pacemaker precisam para funcionar corretamente. -
Abra o arquivo
/usr/local/etc/rc.d/corosync
e adicione as linhas a seguir ao código após a linha 17 em ambos os nós.mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb
-
Depois de fazer as alterações, o Jle terá esta aparência:
#!/bin/sh # PROVIDE: corosync # REQUIRE: LOGIN FILESYSTEMS # KEYWORD: shutdown . /etc/rc.subr name="corosync" rcvar="corosync_enable" start_precmd="corosync_precmd" corosync_precmd() { if [ `${SYSCTL_N} kern.ipc.maxsockbuf` -lt 18874368 ]; then err 3 "sysctl:kern.ipc.maxsockbuf must be at least 18874 fi mkdir -p /var/lib/corosync mkdir -p /var/run/qb chmod 777 /var/run/qb } load_rc_config $name : ${corosync_enable:=YES} command="/usr/local/sbin/corosync" run_rc_command "$1"
Iniciar o serviço Corosync e Pacemaker em todos os nós
Agora podemos adicionar corosync_enable=YES
e pacemaker_enable=YES
ao arquivo /etc/rc.conf
. Execute o comando a seguir em todos os nós.
Node1@ sysrc corosync_enable=YES
Node2@ sysrc corosync_enable=YES
Node1@ sysrc pacemaker_enable=YES
Node2@ sysrc pacemaker_enable=YES
Node1@ service corosync start
Node2@ service corosync start
Node1@ service pacemaker start
Node2@ service pacemaker start
Observação:
- Levará alguns segundos para começar o Pacemaker.
- Se você receber uma mensagem de erro ao tentar iniciar o Corosync: E
RROR: sysctl:kern.ipc.maxsockbuf must be at least 18874368
, vá para o pfSense console, clique em System, depois clique em Advanced e, em seguida, clique em System Tunables e atualize o valor desysctl:kern.ipc.maxsockbuf
em todos os nós.
Verifique o status do cluster
-
Agora que temos o Pacemaker e o Corosync em execução em todos os nós, vamos verificar o status do cluster. Execute o seguinte comando para verificar o status:
Node1@ crm status
-
Desative o Stonith por enquanto, pois não estamos cobrindo o Stonith neste tutorial.
Node1@ crm configure property stonith-enabled=false Node2@ crm configure property stonith-enabled=false
Como você pode ver na imagem, o status informa que 2 nós estão configurados e on-line.
Observação:
- Se você não vir que ambos os nós estão configurados e on-line, conforme mostrado na imagem, isso indicará que apenas uma instância está configurada e on-line. Isso significa que os nós não conseguem conversar uns com os outros.
- Para resolver isso, verifique as pfSense e as Listas de Segurança do Oracle Cloud para Permitir tráfego UDP e ICMP.
Tarefa 4: Configurar a CLI do Oracle Cloud Infrastructure
Precisamos da CLI do OCI para mover e associar o IP Flutuante Virtual entre os nós no nível da infraestrutura. Já instalamos a CLI do OCI anteriormente com outros pacotes. Agora, vamos configurar a configuração. Queremos usar 'instance principals' para autorizar nossos comandos da CLI. Você pode saber mais sobre Diretores de Instância. e cli do OCI
Siga este blog e configure os principais da instância do Oracle Cloud Infrastructure.
Configurar IP Flutuante Virtual
Neste tutorial, usaremos 192.0.2.3/29 como o IP flutuante virtual. Não podemos configurar uma pulsação IPaddr2 em pfSense que é baseada em FreeBSD. Se tentarmos de qualquer forma, ele lançará um erro "IP não está disponível", o IP do pacote é apenas linux. Em vez disso, configuraremos um heatbeat IPaddr.
-
Abra
/usr/local/lib/ocf/resource.d/heartbeat/IPaddr
no editor de arquivos. -
Adicione algumas linhas de código que iniciarão a CLI do OCI para mover o IP de uma vNIC para outra. Adicione as seguintes linhas de código após a linha 584 no método add_interface() do script.
-
Atribua valores node1vnic, node2vnic, vnicip e nome do host no script. Você pode encontrar os OCIDs da sua vNIC no menu Console do Oracle Cloud, Compute, vNICs anexado.
else ##### OCI vNIC variables server="`hostname -s`" node1vnic="<node1vnic>" node2vnic="<node2vnic>" vnicip="<floating_IP>" export LC_ALL=C.UTF-8 export LANG=C.UTF-8 touch /tmp/ip_switch_error.log ##### OCI/IPaddr Integration if [ $server = "<host_name>" ]; then /usr/local/bin/oci network vnic assign-private-ip --auth instance_principal --unassign-if-already-assigned --vnic-id $node1vnic --ip-address $vnicip >/tmp/ip_switch_error.log 2>&1 else /usr/local/bin/oci network vnic assign-private-ip --auth instance_principal --unassign-if-already-assigned --vnic-id $node2vnic --ip-address $vnicip >/tmp/ip_switch_error.log 2>&1 fi
-
Para o Nó 1: Na Console do Oracle Cloud, vá para Compute, clique em pfSense-principal e, em seguida, clique em VNICs anexadas. Selecione a vNIC principal e adicione um IP privado secundário (igual ao floating_IP no script acima)
-
Para os dois Nós: no console pfSense, vá para firewall e clique em IPs Virtuais e adicione um Alias de IP (o mesmo que floating_IP no script acima).
Configurar Heartbeat
-
No shell pfSense, execute o comando a seguir no Nó 1.
crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.0.2.3 cidr_netmask="29" nic=”vtnet0” op monitor interval="5s"
-
Neste tutorial, 192.0.2.3 é o IP flutuante. Certifique-se de substituir os valores ip, netmask e nic por seus valores. Isso deve criar um recurso IP no Pacemaker.
Se você executar crm status
agora, verá dois nós on-line e um recurso disponível que está apontando para pfSense-primary
. Você também pode executar ipconfig vtnet0
para verificar se o IP Virtual agora está associado à interface no nó principal.
Testar Failover
Estado Atual
-
Execute o seguinte comando para forçar um switch over:
crm resource move IP pfSense-secondary.example.com
-
Execute o comando
crm status
e você verá que o recurso IP flutuante agora foi movido para o secundário pfSense. -
Verifique os avachments vNIC da Console do Oracle Cloud para seus nós. Você verá que o IP flutuante agora foi movido para o segundo nó.
Observação: Se você tentar fazer shutdown agora, o recurso será movido para o estado interrompido, pois não será possível descobrir qual nó deve ser considerado como Mestre, pois pfSense precisa de pelo menos 50% de votos para designar um mestre. Como temos apenas 2 nós e um deles está inativo, o Pacemaker não poderá definir um como mestre.
-
Execute o seguinte comando para ignorar a política de 50% de votos:
crm configure property no-quorum-policy=ignore
-
Agora teste um shutdown e você pode ver a movimentação do IP Flutuante.
Tarefa 5: Configurar XLMRPC e pfsync
Queremos que nossos nós tenham um estado sincronizado se quisermos ter um cluster verdadeiramente altamente disponível, basta mover os IPs não vai fazer isso. Precisamos configurar outro conjunto de vNICs em cada uma de nossas instâncias para a sincronização.
Configurar interface de sincronização
-
Para Ambos os Nós: Vá para Compute, selecione a instância, abra Vnics Anexadas e clique em criar vnic.
-
Depois que a vNIC for criada e anexada, vá para console pfSense, clique em interfaces e, em seguida, clique em Designações e adicione a interface recém-detectada.
-
Clique na interface recém-atribuída e configure sua configuração.
-
Designe o endereço IPv4 estático e a máscara de sub-rede que criamos na etapa anterior na console do OCI.
-
Clique em Salvar e aplique as alterações.
Configurar Alta Disponibilidade no nó principal
- Vá para a console pfSense, clique em Sistema e, em seguida, clique em Sincronização de Alta Disponibilidade.
- Ativar a sincronização de estado do pfsync.
- Escolha a interface de sincronização.
- Adicione o IP do nó secundário.
- Configuração de sincronização XMLRPC: Adicione o IP do nó secundário.
- Defina o nome de usuário e a senha e verifique o que deseja sincronizar.
- Clique em Salvar e Aplicar.
Configurar Alta Disponibilidade no nó secundário
- Vá para a console pfSense, clique em Sistema e, em seguida, clique em Sincronização de Alta Disponibilidade.
- Ativar a sincronização de estado do pfsync.
- Escolha a interface de sincronização.
- Adicione o IP do nó principal.
- Clique em Salvar e Aplicar.
Os estados do firewall são sincronizados entre os dois nós e você pode tentar adicionar uma regra de firewall em sua instância principal. Você também verá o mesmo que aparece no nó secundário. Agora podemos tentar testar o failover novamente com um shutdown do sistema.
Links Relacionados
- pfSense Site
- Domínio de Disponibilidade
- Gateway de Pareamento
- Lista de Segurança
- Diagnosticando e Solucionando Problemas de Erros de Nó ou Sistema de Arquivos Completo
- Chamando Serviços de uma Instância
- Chamando a CLI do OCI Usando o Controlador de Instâncias
Confirmação
Autor - Mayank Kakani (Arquiteto de Nuvem OCI)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Configure a pfSense High Availability active/passive cluster with Corosync/Pacemaker on Oracle Cloud Infrastructure
F70197-02
September 2022
Copyright © 2022, Oracle and/or its affiliates.