Suche


drucken PDF
Cisco ACE Loadbalancing: Einfache Konfiguration


In dieser Hilfe finden Sie eine Schritt für Schritt Anleitung zur Konfiguration eines ACE Loadbalancers in einem Virtual Rack. In unseren Beispielen stellen wir Ihnen eine Lösung für 2 Server im gleichen Virtual Rack vor.

Voraussetzungen:

- 2 Server der EG, MG oder HG Reihe, zwischen denen das Loadbalancing erfolgen soll
- Die Option Professionelle Nutzung muss auf beiden Servern aktiv sein (wir benötigen ein Virtual Rack, um die Verbindung zwischen den Hosts und der ACE Hardware zu konfigurieren)
- Die Server müssen sich im Virtual Rack befinden
- Ein ACE Loadbalancer
- Ein RIPE IP Block


Test des privaten Netzwerks


Konfigurieren Sie die beiden Server wie in folgender Hilfe beschrieben: http://hilfe.ovh.de/Vrack.
Wir konfigurieren zuerst die IP 172.16.0.1 auf der ersten Maschine, 172.16.0.2 auf der zweiten Maschine und so weiter.

WICHTIG!!
Sie können 172.16.0.0/12 bis auf die folgend aufgelisteten IPs konfigurieren - Sie dürfen AUF KEINEN FALL die folgenden IPs als Interface auf Ihrer MAschine hinzufügen:
  • 172.16.0.0 => Netzwerk IP
  • 172.31.255.248 => Reservierte IP, in unserem Beispiel verwendet
  • 172.31.255.249 => Reservierte IP, in unserem Beispiel verwendet
  • 172.31.255.250 => Reservierte IP, in unserem Beispiel verwendet
  • 172.31.255.251 => Reservierte IP, in unserem Beispiel verwendet
  • 172.31.255.252 => IP für interne Nutzung durch OVH reserviert
  • 172.31.255.253 => IP für interne Nutzung durch OVH reserviert
  • 172.31.255.254 => Gateway IP unseres Virtual Racks


Und überprüfen dann, ob die Server kommunizieren können:

serverA:~# 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

serverB:~# 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



Cisco ACE Konfiguration


Wir werden nun das ACE Load Balancing konfigurieren. Verbinden Sie sich dazu mit den Zugangsdaten, die Sie per E-Mail erhalten haben:

Aus Sicherheitsgründen ist der ACE Loadbalancer bei dessen Auslieferung AUSSCHLIESSLICH von Ihrem privaten Netzwerk aus erreichbar.
Sie müssen also einen Ihrer dedizierten Server mit einer privaten IP konfigurieren. Sobald dies erfolgt ist können Sie sich von Ihrem dedizierten Server aus mit der privaten IP des Loadbalancers verbinden, um eine ACL Liste zu konfigurieren.

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#

Begeben Sie sich in den Konfigurations-Modus und erstellen Sie eine ACL, um von Aussen auf Ihren ACE Loadbalancer zugreifen zu können.
Um das 'public' VLAN Ihres ACE zu finden können Sie den Befehl 'sh run' ausführen. Das Interface, das die IPs Ihres RIPE Blocks enthält, ist '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 HIER.IHRE.DSL.IP 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


Ab sofort ist der ACE Kontext per SSH auf den öffentlichen IPs erreichbar, die Sie ebenfalls in der 'sh run' Ausgabe finden.

Tip!

Für den Rest: wenn Sie "(config)" wie oben aufgeführt sehen, dann müssen Sie folgendes tun:
Geben Sie "conf t" oder "configure" ein, um den Konfigurations-Modus zu betreten. Verlassen Sie diesen mit CTRL + Z, nachdem die Konfiguration bearbeitet wurde.


Konfiguration des privaten Netzwerks


WICHTIG!!
Wir verwenden normalerweise einen VLAN Tag, der Ihrem ähnelt, um den Zugang zum ACE Loadbalancer zu konfigurieren. Für das VLAN 2045 verwenden wir üblicherweise das VLAN 245 - es ist jedoch möglich, dass dies bei Ihnen anders geregelt ist. Sie können dies mit dem Befehl "show running-config" herausfinden. Entfernen Sie AUF KEINEN FALL das VLAN Interface 245! Wenn Sie dies tun, dann verlieren Sie den Zugang zum Loadbalancer, und müssen dann einen kostenpflichtigen Eingriff durchführen lassen, um die Konfiguration von unseren Administratoren wiederherstellen zu lassen!


Tip!
Sie können eine falsch eingegebene Zeile zurücknehmen bzw. korrigieren. Wenn zum Beispiel beim Port Forwarding der falsche Gateway angegeben wurde, dann überprüfen Sie Ihre Konfiguration mit "show running interface" und führen Sie anschliessend Folgendes aus:
rbx-99-6k-ace-1/vrack1234# configure
rbx-99-6k-ace-1/vrack1234(config)# no ip address 72.16.0.10 255.255.255.255
Und geben Sie dann die korrekte Regel ein:
rbx-99-6k-ace-1/vrack1234# configure
rbx-99-6k-ace-1/vrack1234(config)# ip address 172.16.0.10 255.240.0.0


Fügen Sie zuerst die "ANY" access-list hinzu, um ICMP (ping) und TCP für alle zu erlauben:
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

Definieren Sie anschliessend das Interface des Virtual Racks für die interne Verwendung.
OVH empfiehlt die Verwendung des IP-Bereichs 172.0.0.0/12.

Ihr ACE ist für eine Fehlertoleranz von 0 ausgelegt. Deshalb ist es wichtig, dass Sie wissen, dass bei einem Ausfall des ersten Routers der zweite Router in der Lage sein muss, den Betrieb zu übernehmen.
Dies kann nur erfolgen, wenn die Interfaces konfiguriert sind.

Die Konfiguration wird in dem Beispiel ebenfalls durchgeführt:

  • 172.31.255.248 => Diese IP-Adresse wird der NAT POOL
  • 172.31.255.249 => IP ALIAS (das auf die beiden Router #1 und #2 geleitet wird)
  • 172.31.255.250 => IP von Router #1
  • 172.31.255.251 => IP von Router #2



WICHTIG!
Sie sollten die Karte, die sich im Standby Modus für ACE befindet, nicht konfigurieren! Die Konfiguration erfolgt auf dem aktiven Gerät, das diese Informationen Dank der FT (Fault Tolerance) Funktion an die im HOT Standby befindliche Karte sendet. SSL Zertifikate werden dabei jedoch nicht auf die sekundäre ACE übertragen.


Wir fügen das erste private Netzwerk-Interface hinzu:

rbx-99-6k-ace-1/vrack1234#conf t
rbx-99-6k-ace-1/vrack1234(config)# interface vlan 1234
( replacing 1234 with the tag of your virtual rack )

Fügen Sie die private Adresse zu diesem Interface hinzu:
rbx-99-6k-ace-1/vrack1234(config-if)#ip address 172.31.255.250 255.240.0.0

Add and send the ip to be on the second router:
rbx-99-6k-ace-1/vrack1234(config-if)#peer ip address 172.31.255.251 255.240.0.0

Set the alias for the above two IPs:
rbx-99-6k-ace-1/vrack1234(config-if)#alias 172.31.255.249 255.240.0.0


The three steps above have therefore set the ip interface vlan on private ROUTER1, ROUTER2 the 'floating' ip (alias) of the two.
We still need to add the nat-pool. Here we use port translation to the real servers in 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

then activate the interface and allow the ping:
rbx-99-6k-ace-1/vrack1234(config-if)# access-group input ANY
rbx-99-6k-ace-1/vrack1234(config-if)# no shutdown



Check the configuration


Make sure your servers A and B are accessed via the virtual rack from 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



Create a server farm


Above all, we ask the ACE to check the operation of your machines, then we define PROBE_TCP with an interval of 30 seconds and 60 seconds in case of error:
rbx-99-6k-ace-1/vrack1234(config)# probe tcp PROBE_TCP
interval 30
passdetect interval 60


Declare dedicated servers. We announce the loadbalancing machines and their IP and the connection protocol to follow.
In this example, we put a connection limit of 50,000 to prevent overload:

rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER1 # replace SERVER1 with the name of your first server
ip address 172.16.0.1
conn-limit max 50000 min 40000
inservice
rbx-99-6k-ace-1/vrack1234(config)# rserver host SERVER2 # replace SERVER2 with the name of your second server
ip address 172.16.0.2
conn-limit max 50000 min 40000
inservice


Create a Server Farm
In this example, the farm FARM_WEB is named, we will use the method "leastconns predictor" that creates a Load Balancer which is based on the number of connections. We use the PROBE_TCP configured earlier:

rbx-99-6k-ace-1/vrack1234(config)# serverfarm host FARM_WEB
predictor leastconns
probe PROBE_TCP
rserver SERVER1 # replace SERVER1 with the name of your first server
inservice
rserver SERVER2 # replace SERVER2 with the name of your second server
inservice



Configure Loadbalancing


Set http-parameter map. This instructs ACE to perform HTTP header modifications as well as put each new request to a potentially new real server:

rbx-99-6k-ace-1/vrack1234(config)# parameter-map type http HTTP_PARAMETER_MAP
persistence-rebalance

Ok, now we have to set a class-map for an inbound traffic selecting. For that we use IP 178.33.8.65 (one of IP RIPE block IPs) and 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

Now policy-map which puts client source IP into HTTP header while sending traffic to the serverfarm. We name it 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"

Combine the class-map IP-WEB-L4 and WEB_L7_POLICY HTTP_PARAMETER_MAP and apply.
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 # replace 1234 with your virtual rack tag
appl-parameter http advanced-options HTTP_PARAMETER_MAP

Apply the service-policy access-list to the incoming interface vlan:
rbx-99-6k-ace-1/vrack1234(config)# interface vlan 123 # if your tag is vrack 2045, use 245 here. It is possible that it is different. You will find by doing a "show running-config".
service-policy input WEB-to-vIPs
access-group input ANY


Configuration example


Your interface should look like this (178.33.8.77 IP administration is used to access the ACE Load Balancer)
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



Testing LoadBalancing


Make several telnet sessions:
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