|
Recherche |
Nous allons vous guider pas à pas dans la configuration d'un Loadbalancer au sein d'une baie virtuelle. Dans nos exemples, nous vous présentons une solution basée sur 2 serveurs d'une même baie virtuelle. Prérequis: - 2 serveurs de gamme EG/MG/HG - les serveurs doivent posséder l'option utilisation professionnelle (nous aurons besoin d'une baie virtuelle pour configurer la connexion entre les hôtes et le boîtier ACE) - les serveurs doivent se trouver dans une baie virtuelle - vous devez posséder un Load Balancer ACE - vous devez posséder un bloc d'IP RIPE Configurez les deux serveurs en suivant le guide baie virtuelle. Nous configurons au préalable l'ip 172.16.0.1 sur la première machine puis 172.16.0.2 sur la seconde machine etc.
Vérifiez ensuite si vos serveurs arrivent à communiquer : serveura:~# 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 serveurb:~# 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 Nous allons maintenant configurer le Load Balancer ACE. Notez que par mesure de sécurité le ACE est lors de sa livraison accessible UNIQUEMENT depuis votre réseau privée. Vous devez donc configuré un de vos serveurs dédié avec une IP privée. Une fois cela fait vous pouvez vous connecter depuis votre serveur dédié sur l'ip privée du loadbalancer afin de configurer une liste 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# Entrez dans le mode de configuration et créez une ACL afin de pouvoir accéder depuis l'extérieur a votre ACE. Pour trouver le vlan 'public' de votre ace vous pouvez faire un 'sh run'. L'interface qui contient les IP de votre bloc ripe est l'interface 'vlan public'. 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.ICI 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 Désormais le contexte ACE est accessible par ssh sur les IP public que vous pouvez également trouver dans le sh run.
D'abord, ajoutez "ANY" à l'acces-list pour autoriser l'icmp (le ping) et le tcp pour tout le monde : 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 Ensuite, définissez l'interface de la baie virtuelle pour l'utilisation interne. OVH vous conseille d'utiliser la plage d'IP 172.0.0.0/12. Votre ACE est destiné de faire du fault tolerance 0. Il est donc important pour vous de savoir qu'en cas de panne sur le 1er routeur le deuxième routeur doit pouvoir prendre la relève. Ceci peut uniquement se faire si les interfaces sont bien configuré. La configuration dans l'exemple sera fait ainsi:
Ajoutons donc tout d'abord l'interface réseau privé: rbx-99-6k-ace-1/vrack1234#conf t rbx-99-6k-ace-1/vrack1234(config)# interface vlan 1234 ( remplacez 1234 par le tag de votre baie virtuelle ) Ajouter l'adresse privée à cette interface: rbx-99-6k-ace-1/vrack1234(config-if)#ip address 172.31.255.250 255.240.0.0 Ajouter et envoyer l'ip qui sera sur le deuxième routeur: rbx-99-6k-ace-1/vrack1234(config-if)#peer ip address 172.31.255.251 255.240.0.0 Définir l'alias pour les deux IP ci dessus: rbx-99-6k-ace-1/vrack1234(config-if)#alias 172.31.255.249 255.240.0.0 Les 3 étapes au dessus ont donc configuré l'ip de l'interface vlan privée sur routeur1, routeur2, l'ip 'flottante' ( alias ) des deux. Il nous reste l'ajout du nat-pool à faire. Nous faisons ici une translation de port vers les serveurs réels 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 puis activer l'interface et autoriser le ping: rbx-99-6k-ace-1/vrack1234(config-if)# access-group input ANY rbx-99-6k-ace-1/vrack1234(config-if)# no shutdown Vérifiez si vos serveurs A et B sont accessibles via la baie virtuelle depuis l'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 Avant tout, nous demandons à l'ACE de verifier le fonctionnement de vos machines, nous définissons alors PROBE_TCP avec un intervalle de 30 secondes et 60 secondes en cas d'erreur: rbx-99-6k-ace-1/vrack1234(config)# probe tcp PROBE_TCP interval 30 passdetect interval 60 Déclarez les serveurs dédiés. Nous annoncons les machines du loadbalancing, ainsi que leurs ip et le protocole de connexion à suivre. Dans cet exemple, nous mettons une limite de connexion de 50000 pour prévenir les surcharges: rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER1 # remplacez SERVER1 par le nom de votre premier serveur ip address 172.16.0.1 conn-limit max 50000 min 40000 inservice rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER2 # remplacez SERVER2 par le nom de votre second serveur ip address 172.16.0.2 conn-limit max 50000 min 40000 inservice Créez une Ferme de serveur Dans cet exemple, la ferme s'appelera FARM_WEB, nous utiliserons la méthode "predictor leastconns" qui crée un Load Balancer basé sur le nombre de connexion. Nous utilisons ici le PROBE_TCP configuré plus tôt: rbx-99-6k-ace-1/vrack1234(config)# serverfarm host FARM_WEB predictor leastconns probe PROBE_TCP rserver SERVER1 # remplacez SERVER1 par le nom de votre premier serveur inservice rserver SERVER2 # remplacez SERVER2 par le nom de votre second serveur inservice Configurons le http-parameter-map, cela chargera l'ACE de modifier l'entête HTTP de telle manière à ce qu'il transmette chaque nouvelle requête à un serveur potentiellement nouveau: rbx-99-6k-ace-1/vrack1234(config)# parameter-map type http HTTP_PARAMETER_MAP persistence-rebalance Nous allons maintenant définir un class-map pour sélectionner une partie du trafic entrant. Dans cet exemple, nous utilisons l'IP 178.33.8.65 (l'une de votre bloc IP RIPE) et le port 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 Définissons maintenant le policy-map qui ajoute l'IP source du client dans dans l'entête HTTP lors de l'envoi du trafic vers le server-farm. Nous l'appelons 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" Combinons les class-map L4-WEB-IP et WEB_L7_POLICY et appliquez 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 # remplacez 1234 parl e tag de votre baie virtuelle appl-parameter http advanced-options HTTP_PARAMETER_MAP Appliquons le service-policy et l'access-list à l'interface entrant du vlan: rbx-99-6k-ace-1/vrack1234(config)# interface vlan 123 # si le tag de votre vrack est 2045, utilisez 245 ici. Il est cependant possible qu'il soit différent. Vous le retrouverez en faisant un "show running-config". service-policy input WEB-to-vIPs access-group input ANY Votre interface doit donc ressembler à ceci (178.33.8.77 est l'IP d'administration utilisée pour accéder au 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 Faites plusieurs 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 - Guide LoadBalancing ACE Simple Sticky - Guide de lecture desinformations basiques sur l'état du Loadbalancer Cisco ACE - Guide d'utilisation basique des statistiques d'un Loadbalancer Cisco ACE via SNMP |
|||||||||||