Red Hat Linux Virtual Server (LVS)
1 - Visão Geral do Linux Virtual Server Configuração básica do LVS Uma configuração em três camadas Visão geral do escalonador do LVS Métodos de Roteamento NAT (Network Address Translator) Direct Routing (DR) Persistência e Firewall Marks LVS – Diagrama de Blocos
Uma configuração básica do LVS Roteador Ativo Roteador Backup
Visão Geral do Linux Virtual Server (LVS) LVS é um conjunto integrado de componentes de software para balancear a carga de pacotes IP através de um conjunto de servidores reais. O LVS roda em um par de computadores configurados igualmente: um que representa o roteador LVS ativo (active LVS router) e um que é o backup LVS router.
Linux Virtual Server (LVS) LVS desempenha balanceamento de carga através técnicas de roteamento especializadas que disparam o tráfego a um conjunto de servidores IPVS = IP Virtual Server IPVS table A tabela IPVS é constantemente atualizada pelo utilitário ipvsadm – adicionando e removendo membros do cluster dependendo de sua disponibilidade
Algoritmos de Escalonamento Round-Robin Scheduling Weighted Round-Robin Scheduling Least-Connection Weighted Least-Connection (default) Locality-Based Least-Connection Scheduling Locality-Based Least-Connection Scheduling with Replication Scheduling Destination Hash Scheduling Source Hash Scheduling
Topologias NAT LVS Network LVS via Direct Routing Vantagens desvantagens LVS via Direct Routing mais rápido Desvantages Problema com o ARP (usar o arptables_jf ou iptables ...)
Persistence e Firewall Marks Em certas situações, é desejável que o cliente reconecte repetidamente ao mesmo servidor real. Exemplos de tais situações incluem: formulários web de várias páginas, cookies, conexões SSL e FTP Nesses casos, o cliente não funcionará apropriadamente a menos que a transação seja manuseada pelo mesmo servidor a fim de manter o contexto. LVS provê duas features diferentes para manusear isso: persistência e firewall marks
Persistence A persistência age como um temporizador, quando habilitada. Quando um cliente conecta-se a um serviço, o LVS lembra-se a última conexão por um tempo especificado. Se o mesmo cliente usando o mesmo endereço IP conectar-se novamente dentro do período especificado, ele é enviado ao mesmo servidor conectado previamente - sobrepondo o mecanismo de balanceamento de carga Quando a conexão ocorre fora do período de tempo especificado, ele é tratado de acordo com as regras de escalonamento que estiverem em vigor. Grouping connections destinadas a diferentes portas podem ser importante para protocolos que usam mais de uma porta de comunicação, como o protocolo FTP (usa as portas 20 e 21)
Firewall Marks Firewall Marks é uma maneira fácil e eficiente para agrupar portas usadas por um protocolo ou grupo de protocolos relacionados Por exemplo, se um LVS é distribuído para executar uma aplicação de e-commerce, firewall marks pode ser usado para “empacotar” as conexões usando as portas 80 (HTTP) e 443 (HTTPS) Atribuindo o mesmo firewall mark ao servidor virtual para cada protocolo, a informação de estado para a transação pode ser preservada porque o roteador LVS encaminha todas as requisições ao mesmo servidor real depois que a conexão é aberta Pela sua eficiencia e facilidade de uso, os administrador do LVS devem usar Firewall Marks ao invés de Persistence sempre que possivel para agrupar as conexões. Contudo, os administradores devem ainda adicionar persistencia aos servidores virtuais em conjunto com firewall marks para garantir que os clientes são reconectados ao mesmo servidor por um tempo adequado de tempo
Componentes do LVS O LVS usa uma coleção de programas para monitorar os membros e serviços de um cluster pulse é um deamon que executa tanto no nó principal quanto no nó backup. É responsável pelo controle dos outros deamons e manipula o failover entre “as caixas de roteamento” do IPVS lvs é um deamon que roda no nó ativo; ele gerencia a tabela de roteamento do IPVS através da ferramenta ipvsadm ipvsadm IP Virtual Server Administrator nanny esse processo verifica o estado de um serviço configurado em um servidor real e diz ao deamon lvs se o serviço estiver com problemas. /etc/sysconfig/ha/lvs.cf é o arquivo de configuração do LVS Piranha Configuration Tool (piranha-gui) send_arp
Componentes do LVS
2 – Configuração inicial do LVS Configurando os serviços nos roteadores LVS Configurando a password para o Piranha Iniciando o Piranha Limitando o acesso ao Piranha Ligando o encaminhamento de pacotes Configurando os Serviços nos servidores reais
Configuração de Serviços Há três serviços que precisam ser habilitados durante o boot: O serviço piranha-gui (apenas no nó primário) O serviço pulse O serviço sshd (normalmente já está instalado)
Configurando os serviços para iniciarem durante o boot # /sbin/chkconfig --level 35 daemon on Onde daemon deve ser substituido por cada um dos serviços (pulse, piranha-gui) # /sbin/chkconfig --level 35 pulse on # /sbin/chkconfig --level 35 piranha-gui on Use o comando: # /sbin/chkconfig --list Para obter uma lista de todos os serviços disponíveis
Piranha Antes de usarmos o Piranha, é necessário definir um password. Para isso, uso o comando: # /usr/sbin/piranha-passwd
Piranha - Inicialização Inicie ou reinicie o serviço piranha-gui localizado em /etc/rc.d/init.d/piranha-gui Use o comando: # /sbin/service piranha-gui start|restart Para inicializar o serviço. Para acessar o software, abra o browser em http://localhost:3636 Obs: o piranha-gui usa o Apache, que já deverá estar configurado
Habilitando o encaminhamento de pacotes Faça # /sbin/sysctl net.ipv4.ip_forward=1 Verifique # /sbin/sysctl net.ipv4.ip_forward # 1 Verifique o valor de net.ipv4.ip_forward em /etc/sysctl.conf
3 – Setting Up LVS A rede NAT LVS LVS via Direct Routing Colocando as configurações juntas Serviços multiportas e LVS Configurando o FTP Armazenando as configurações do Network Packet Filter
Configurando o LVS O LVS consiste de dois grupos fundamentais: Grupo de roteadores LVS Active LVS Backup LVS (modo Hot standby) Grupo de servidores reais Servidor real 1 ... Servidor real n Obs: para prevenir um ponto único de falha, cada grupo deve conter pelo menos dois membros no sistema
The NAT LVS Network Layout da Rede (Network layout) Hardware Software
LVS via Direct Routing (DR) Layout da Rede (Network Layout) Hardware Software
Serviços que usam múltiplas portas e o LVS
Configurando o FTP Como o FTP trabalha Como isso afeta o roteamento do LVS Criando Network Packet Filter Rules Regras para Active Connections Regras para Passive Connections
Como o FTP trabalha Porta de Controle do FTP: 21 Dois tipos de conexão de dados: Active Connection Passive Connection O cliente determina o tipo da conexão e não o servidor.
Gravando a configuração do Network Packet Filter /sbin/service iptables save Este comando armazena a configuração em: /etc/sysconfig/iptables de forma que que esta configuração seja restabelecida em tempo de boot /sbin/sevice iptables start | stop
4 – Configurando os roteadores LVS o Piranha Softwares necessários Logando na Piranha Controlando/Monitorando Settings globais Servidores Virtuais Sincronizando os arquivos de configuração Iniciando o LVS
Softwares Necessários O software piranha-gui deve estar rodando no roteador LVS primário Verifique através do comando: # service piranha-gui status
Logando na Ferramenta de Configuração Piranha http://localhost:3636 Username: piranha Password: piranha
Control/Monitoring O painel Control/Monitoring apresenta um status limitado da execução do LVS Ele exibe: Status do daemon pulse A tabela de roteamento do LVS Processos nanny espalhados pelo LVS (LVS-spanned nanny processes)
Controle de Monitoramento
Painel Control/Monitoring Auto update Update information now Change Password
Global Settings
Parâmetros Globais O painel GLOBAL SETTINGS é onde você define os detalhes de rede para as interfaces pública e privada do roteador do LVS
Parâmetros Globais Primary server public IP: endereço IP real do nó LVS primário Primary server private IP Use network type: selecione entre NAT e Direct Routing (DR)
Configuração NAT NAT Router IP: NAT Router Netmask: NAT Router device:
Redundância O painel REDUNDANCY permite que configuremos o endereço IP do nó backup do roteador LVS
Redundância
Redundância Redundant server public IP: entre o endereço IP real e público para o nó backup do roteador LVS Redundant server private IP: Heartbeat interval (seconds): estabelece o número de segundos entre os heartbeats - é o intervalo que o nó backup irá verificar o status funcional do nó primário do LVS Assume dead after (seconds): se o nó LVS primário não responder após esse número de segundos, então o nó do roteador LVS backup irá iniciar o processo de failover Heartbeat runs on port: estabelece a porta pela qual o heartbeat comunica-se com o nó LVS primário
Servidores Virtuais O painel VIRTUAL SERVERS exibe informações sobre cada servidor virtual definido Cada entrada na tabela exibe o status do servidor virtual, seu nome, o IP atribuído ao servidor, a máscara do IP virtual, o nº da porta através da qual o serviço se comunica, o protocolo usado, e a interface do dispositivo virtual
Virtual Servers
Virtual Servers Cada servidor exibido no painel VIRTUAL SERVERS pode ser configurado em telas ou subseções subsequentes
Sub-Sessões de Virtual Servers REAL SERVER MONITORING SCRIPTS
VIRTUAL SERVER É um servidor altamente escalável e disponível construído em um cluster (agrupamento) de servidores reais A arquitetura do Server Cluster (agrupamento de servidores) é completamente transparente aos usuários finais, e os usuários interagem com o sistema de cluster como se ele fosse somente um único servidor virtual de alta performance
Linux Virtual Server
Virtual Server
Virtual Server Name: entre com um nome descritivo para identificar o servidor virtual Application Port: entre o número atraves da qual o servidor de aplicação irá ouvir Protocol: selecione um dos protocolos TCP ou UDP Virtual IP Address: enter com o endereço VIP nesse campo Virtual IP Network Mask: estabelece a máscara de rede para o servidor virtual Firewall Mark Device: Re-entry Time Service Timeout Quiesce server Load monitoring tool Scheduling (Escalonamento): seleciona o tipo de algoritmo de escalonamento Persistence Persistence Network Mask
REAL SERVER É o servidor que fica na retaguarda e executa os serviços reais de redes, tais como: Web, FTP, DNS, streaming, LDAP, VOIP
REAL SERVER
Configuração de Servidores Reais Clique no botão Add para adicionar um novo servidor real Clique no botão Delete para remover um servidor real Selecione o radio button e pressione o botão Edit para alterar as informações sobre um servidor real Clique no botão (De)activate para ativar/desativar um servidor real
Real Server
Painel de configuração do servidor real Name (Nome): um nome descritivo para o servidor real (o nome não é o hostname da máquina, portanto faça-o descritível e de facilmente identificável) Address (Endereço IP): o endereço IP real do servidor Weight (peso): um número inteiro que indica a capacidade relativa desse host com relação aos outros hosts do pool
MONITORING SCRIPTS São os scripts de monitoramento dos serviços oferecidos pelo servidor
Script de Monitoramento
The edit monitoring scripts Sending Program: Send: Expect:
Sincronizando os arquivos de configuração Copiar a configuração do roteador ativo para o roteador backup Execute os comandos abaixo a partir do servidor primário # export BACKUP=<IP do roteador backup> # scp /etc/sysconfig/ha/lvs.cf $BACKUP: /etc/sysconfig/ha/lvs.cf
Iniciando o LVS Abra duas janelas de terminal como root Em um terminal monitore as mensagens do log do kernel usando o comando: # tail -f /var/log/messages No outro terminal, inicie o LVS # /sbin/service pulse start
Iniciando o LVS (2) Monitore a janela de logs Quando a mensagem “gratuitous lvs arps finished” aparecer significa que o daemon pulse iniciou sem problemas
Iniciando o LVS - roteador backup Repita as mesma instruções executadas para iniciar o LVS no roteador primário.
Apêndice A – Usando o LVS com o Red Hat Cluster
Apêndice A – Usando LVS com o Red Hat Cluster Roteadores LVS podem ser usados juntamente com o Red Hat Cluster para prover um site de e-commerce de alta disponibilidade que provê balanceamento de carga, integridade de dados e disponibilidade da aplicação
Configurações Uma configuração three-tier (3-camadas) é requerida a fim de prover conteúdo dinâmico Uma configuração two-tier (2-camadas) é apropriado se o servidor web prover somente conteúdo estático
Camadas Cada camada prove as seguintes funções: Primeira camada: roteadores LVS fazendo o balanceamento de carga requisições web distribuídas Segunda camada: um conjunto de servidores Web para servir as requisições Terceira camada: um Cluster Red Hat para prover dados aos servidores Web
Backup
Papéis desempenhados pela LVS ativo e backup Papéis do LVS ativo: Balancear a carga entre os servidores reais Verificar a integridade de serviços da cada servidor real Papéis do LVS backup: Monitora o LVS ativo e toma o seu lugar no caso dele falhar
Piranha É uma ferramenta de configuração gráfica (GUI) usada para estabelecer, monitorar e administrar um cluster LVS (Linux Virtual Server)