|
Busca |
Neste guia iremos ajudá-lo passo-a-passo na configuração de um Loadbalancer num rack virtual. Nestes exemplos iremos basear-nos em 2 servidores dentro do mesmo Vrack. Pré-requisitos: - 2 servidores da gama EG/MG/HG - os servidores devem possui a opção de utilização profissional (é necessário um rack virtual para configurar a ligação entre os hosts e o equipamento ACE) - os servidores devem encontrar-se dentro de um rack virtual - deve possuir um Load Balancer ACE - deve possuir um bloco de IP RIPE Configure os 2 servidores seguindo o guia : Rack Virtual. Vamos configurar previamente o IP 172.16.0.1 na primeira máquina e 172.16.0.2 na segunda máquina, etc
Verifique de seguida se os seus servidores comunicam entre eles: servidora:~# ping -c3 172.16.0.2 PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data. 64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.277 ms 64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.261 ms 64 bytes from 172.16.0.2: icmp_seq=3 ttl=64 time=0.275 ms servidorb:~# ping -c3 172.16.0.1 PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data. 64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=0.277 ms 64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.261 ms 64 bytes from 172.16.0.1: icmp_seq=3 ttl=64 time=0.275 ms Vamos agora configurar o Load Balancer ACE. Note que por medidas de segurança, a ACE é apenas acessível UNICAMENTE a partir da sua rede privada. Deverá então configurar um dos servidores dedicados com um IP Privado. Após isso feito deverá ligar-se a partir do seu servidor dedicado sobre o IP privado do loadbalanacer de forma a configurar uma lista ACL. user@machine ~ ssh admin@172.31.255.249 Password: Cisco Application Control Software (ACSW) TAC support: http://www.cisco.com/tac Copyright (c) 2002-2009, Cisco Systems, Inc. All rights reserved. The copyrights to certain works contained herein are owned by other third parties and are used and distributed under license. Some parts of this software are covered under the GNU Public License. A copy of the license is available at http://www.gnu.org/licenses/gpl.html. rbx-s1-6k/vrack1234# Entre no modo de configuração e crie uma ACL de form aa poder aceder do exterior à sua ACE. Para encontrar a vlan 'pública' da sua ACE poderá fazer um 'sh run'. A interface que contém os IPs do seu bloco Ripe é a interface 'vlan pública' rbx-s1-ace/vrack2009# conf t Enter configuration commands, one per line. End with CNTL/Z. rbx-s1-ace/vrack2009(config)# class-map type management match-all PUBLIC_REMOTE rbx-s1-ace/vrack2009(config-cmap-mgmt)# match protocol ssh source-address VOTRE.IP.ADSL.AQUI 255.255.xxx.xxx rbx-s1-ace/vrack2009(config-cmap-mgmt)# policy-map type management first-match REMOTE_PUBLIC_MGMT rbx-s1-ace/vrack2009(config-pmap-mgmt)# class PUBLIC_REMOTE rbx-s1-ace/vrack2009(config-pmap-mgmt-c)# permit rbx-s1-ace/vrack2009(config-pmap-mgmt)# interface vlan209 rbx-s1-ace/vrack2009(config-if)# service-policy input REMOTE_PUBLIC_MGMT rbx-s1-ace/vrack2009(config-if)# end rbx-s1-ace/vrack2009# wr m Generating configuration.... running config of context vrack2009 saved Please wait ... sync to compact flash in progress. This may take a few minutes to complete Sync Done Agora o contexto ACE está disponível por SSH num dos IPs públicos que poderá igualmente encontrar no sh run.
Vamos começar por adicionar "ANY" à acces-list para autorizar ICMP (ping) e TCP para todos : rbx-99-6k-ace-1/vrack1234(config)# access-list ANY line 8 extended permit icmp any any rbx-99-6k-ace-1/vrack1234(config)# access-list ANY line 16 extended permit ip any any Des eguida, defina a interface do Vrack para utilização interna. A OVH aconselha a utilizar a gama de IP 172.0.0.0/12. O seu ACE está destinado a fazer "fault tolerance 0". É importante para si saber que em caso de falha no 1º router, o 2º routeur deve poder tomar conta da carga. Isto apenas pode ser feito se as interfaces estiverem correctamente configuradas A configuração deste exemplo será feita assim:
Vamos adicionar a interface de rede privada : rbx-99-6k-ace-1/vrack1234#conf t rbx-99-6k-ace-1/vrack1234(config)# interface vlan 1234 ( substitua 1234 pela tag do seu Rack Virtual) Adicionar o endereço privado a esta interface rbx-99-6k-ace-1/vrack1234(config-if)#ip address 172.31.255.250 255.240.0.0 Adicionar e enviar o IP que estará no segundo router: rbx-99-6k-ace-1/vrack1234(config-if)#peer ip address 172.31.255.251 255.240.0.0 Definir o alias para os 2 IP acima referidos: rbx-99-6k-ace-1/vrack1234(config-if)#alias 172.31.255.249 255.240.0.0 As 3 etapas acima serviram para configurar a interface Vlan privada no router1, router2 e o IP "flutuante" (alias) das duas interfaces. Resta agora adicionar a nat-pool. Vamos fazer aqui uma port translation para os servidores reais en NAT: rbx-99-6k-ace-1/vrack1234(config-if)# nat-pool 1 172.31.255.248 172.31.255.248 netmask 255.240.0.0 pat e depois activar a interface e activar o ping: rbx-99-6k-ace-1/vrack1234(config-if)# access-group input ANY rbx-99-6k-ace-1/vrack1234(config-if)# no shutdown Verifique se os seus servidores A e B estão acessíveis no rack virtual a partir do ACE: rbx-s1-ace/vrack2199# ping 172.16.0.1 Pinging 172.16.0.1 with timeout = 2, count = 5, size = 100 .... Response from 172.16.0.1 : seq 1 time 0.295 ms Response from 172.16.0.1 : seq 2 time 0.161 ms Response from 172.16.0.1 : seq 3 time 0.080 ms Response from 172.16.0.1 : seq 4 time 0.160 ms Response from 172.16.0.1 : seq 5 time 0.176 ms 5 packet sent, 5 responses received, 0% packet loss rbx-s1-ace/vrack2199# ping 172.16.0.2 Pinging 172.16.0.2 with timeout = 2, count = 5, size = 100 .... Response from 172.16.0.2 : seq 1 time 0.392 ms Response from 172.16.0.2 : seq 2 time 0.378 ms Response from 172.16.0.2 : seq 3 time 0.338 ms Response from 172.16.0.2 : seq 4 time 0.302 ms Response from 172.16.0.2 : seq 5 time 0.276 ms 5 packet sent, 5 responses received, 0% packet loss Antes de mais, vamos pedir ao ACE que verifique o correcto funcionamento das suas máquinas. Definimos então PROBE_TCP com um intervalo de 30 segundos e 60 segundos em caso de erro: rbx-99-6k-ace-1/vrack1234(config)# probe tcp PROBE_TCP interval 30 passdetect interval 60 Declare os servidores dedicado. Anunciamos aqui as máquinas do loadbalancing, bem como os seus IPs e o protocolo de comunicação a seguir. Neste exemplo, vamos implementar um limite de ligações de 50000 para evitar as sobre-cargas: rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER1 # substitua SERVER1 pelo nome do seu primeiro servidor ip address 172.16.0.1 conn-limit max 50000 min 40000 inservice rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER2 # substitua SERVER2 pelo nome do seu segundo servidor ip address 172.16.0.2 conn-limit max 50000 min 40000 inservice Crie uma Server Farm Neste exemplo a Farm terá o nome FARM_WEB, e o método "predictor leastconns" será utilizado - isto criará um Load Balancer baseado no número de ligações. Será definido mais cedo o PROBE_TCP : rbx-99-6k-ace-1/vrack1234(config)# serverfarm host FARM_WEB predictor leastconns probe PROBE_TCP rserver SERVER1 # substitua SERVER1 pelo nome do seu primeiro servidor inservice rserver SERVER2 # substitua SERVER2 pelo nome do seu segundo servidor inservice Vamos comnfigurar http-parameter-map, isto encarregará o ACE de modificar o header HTTP de maneira a que este seja transmitido a cada novo pedido a um servidor potencialmente novo: rbx-99-6k-ace-1/vrack1234(config)# parameter-map type http HTTP_PARAMETER_MAP persistence-rebalance Vamos agora definir uma class-map para selecionar uma parte do tráfego de entrada. Neste exemplo, utilizaremos o IP 178.33.8.65 (um IP do seu bloco RIPE) e a porta 80 (www): rbx-99-6k-ace-1/vrack1234(config)# class-map match-all L4-WEB-IP 2 match virtual-address 178.33.8.65 tcp eq www Definimos agora a policy-map que adiciona o IP de origem do cliente no cabeçalho HTTP aquando do envio de tráfego para a server-farm. Vamos chamar-lhe WEB_L7_POLICY: rbx-99-6k-ace-1/vrack1234(config)# policy-map type loadbalance http first-match WEB_L7_POLICY class class-default serverfarm FARM_WEB insert-http x-forward header-value "%is" Vamos combinar as class-map L4-WEB-IP e WEB_L7_POLICY e aplicar HTTP_PARAMETER_MAP. rbx-99-6k-ace-1/vrack1234(config)# policy-map multi-match WEB-to-vIPs class L4-WEB-IP loadbalance vip inservice loadbalance policy WEB_L7_POLICY loadbalance vip icmp-reply active nat dynamic 1 vlan 1234 # troque 1234 pela tag do seu Vrack appl-parameter http advanced-options HTTP_PARAMETER_MAP Vamos aplicar o service-policy e a access-list na interface de entrada da vlan: rbx-99-6k-ace-1/vrack1234(config)# interface vlan 123 # se a tag do seu vrack é 2045, utilise 245 aqui. É possível que o número sea diferente, verifique antes com "show running-config". service-policy input WEB-to-vIPs access-group input ANY A sua interface deve assemelhar-se a isto (178.33.8.77 é o IP de administração usado para aceder ao Load Balancer ACE): rbx-99-6k-ace-1/vrack1234# show running-config Generating configuration.... access-list ANY line 8 extended permit icmp any any access-list ANY line 16 extended permit ip any any probe tcp PROBE_TCP interval 30 passdetect interval 60 parameter-map type http HTTP_PARAMETER_MAP persistence-rebalance rserver host testvrack1.ovh.net ip address 172.16.0.1 conn-limit max 50000 min 40000 inservice rserver host tesvrack2.ovh.net ip address 172.16.0.2 conn-limit max 50000 min 40000 inservice serverfarm host FARM_WEB predictor leastconns probe PROBE_TCP rserver testvrack1.ovh.net inservice class-map match-all L4-WEB-IP 2 match virtual-address 178.33.8.65 tcp eq www class-map type management match-all REMOTE_ACCESS 2 match protocol ssh any class-map type management match-all TEST 2 match protocol icmp any policy-map type management first-match REMOTE_MGMT_ALLOW_POLICY class REMOTE_ACCESS permit policy-map type management first-match TEST_ALLOW class TEST permit policy-map type loadbalance http first-match WEB_L7_POLICY class class-default serverfarm FARM_WEB insert-http x-forward header-value "%is" policy-map multi-match WEB-to-vIPs class L4-WEB-IP loadbalance vip inservice loadbalance policy WEB_L7_POLICY loadbalance vip icmp-reply active nat dynamic 1 vlan 1234 appl-parameter http advanced-options HTTP_PARAMETER_MAP interface vlan 123 ip address 178.33.8.77 255.255.255.240 access-group input ANY service-policy input REMOTE_MGMT_ALLOW_POLICY service-policy input WEB-to-vIPs no shutdown interface vlan 1234 ip address 172.31.255.251 255.240.0.0 access-group input ANY nat-pool 1 172.31.255.250 172.31.255.250 netmask 255.240.0.0 pat service-policy input TEST_ALLOW no shutdown Faça vários telnet : user@machine ~ telnet 178.33.8.65 80 Trying 178.33.8.65... Connected to 178.33.8.65. Escape character is '^]'. GET / Apache (Debian) Server at 172.16.0.1 Port 80 user@machine ~] telnet 178.33.8.65 80 Trying 178.33.8.65... Connected to 178.33.8.65. Escape character is '^]'. GET / Apache (Debian) Server at 172.16.0.2 Port 80 -Cisco Application Control Engine Module Load Balancing Guide |
|||||||||||