Princip funkce CSS
Content Switch je primárně zaměřen pro webovou infrastrukturu a slouží k zajištění vysokého výkonu (high-performance) a vysoké dostupnosti (high-availability). Zajišťuje robustní doručování aplikací na 4. až 7. vrstvě OSI. Vyšší modely jsou modulární a můžeme využívat funkce jako SSL, komprese, firewall. CSS funguje tak, že máme několik serverů, klienti se připojují na jednu virtuální adresu na CSS a ten zajišťuje vyvažování zátěže (odesílání požadavků) na různé servery podle zadané metody, zátěže, udržení session apod.
Dále je uváděný jednoduchý příklad, který konfiguruje následující situaci. Port 2/1 CSSka je nastaven do VLAN 10 a k němu je připojen klient. Port 2/2 je ve VLAN 20 a k němu je připojen switch, kde jsou připojeny 2 servery. VLAN 10 i 20 má nastavenu IP adresu z daného rozsahu, aby CSS mohl routovat mezi nimi. Ve VLAN 10 se nachází i VIP (virtual IP) adresa, což je adresa, kterou klient volá pro přístup na web server. Servery mají nastaveny adresy z VLAN 20 a jako GW mají nastavenu adresu CSS (v dané VLANě).
VIP adresa je přiřazena CSSku, po jejím zavolání klientem se na CSS najde odpovídající Content rule, tedy pravidlo, které podle obsahu (doménové jméno, IP, protokol, port, URL) a zvolené vyvažovací metody, přiřazuje odpovídající Service, službu s určenými parametry. Content rules jsou zařazeny pod Owner (vlastníka), což je pro rozdělení různých zákazníků (můžeme použít pouze jednoho Owner a k němu řadu Content rule). V našem příkladu ještě konfigurujeme (myslím, že běžnou situaci) to, že klient přistupuje na standardní port 80, to je uvedeno v Content Rule. Ale tento port se uvnitř CSS přesměrovává (překládá) na port 7010, kde běží aplikace na serverech, to je uvedeno u jednotlivých Service.
Pro vyvažování zátěže mezi servery používáme nejjednodušší metodu Round Robin, kdy se střídavě obsluhují všechny servery (v uzavřeném kruhu). Tato metoda se konfiguruje u Content Rule. Protože toto je základ CSS, tak máme spoustu dalších možností, použít jinou metodu, sledovat zátěž jednotlivých serverů a k tomu přihlížet při vyvažování, udržovat informace o session, aby byla vždy směrována na stejný server.
Konfigurace CSS
K CSS se připojíme klasickým (modrým) sériovým kabelem, který zapojíme do System Control modulu, jedná se o neoznačený port. Druhá možnost je použít Ethernetový port nazvaný Management. Defaultní uživatel CSS je admin
s heslem system
.
Oproti IOSu můžeme show
příkazy zadávat v jakémkoliv módu. Jinak se konfigurují VLANy a zařazování interfaců do VLAN. Řada příkazů zde chybí, například hromadná konfigurace interfaců.
Začneme nakonfigurováním portů, které zařadíme do VLAN 10 a 20. Tím se nám tyto VLANy i vytvoří.
CSS11503# configure terminal CSS11503(config)# interface 2/1 CSS11503(config-if[ 2/1])# bridge vlan 10 CSS11503(config)# interface 2/2 CSS11503(config-if[ 2/1])# bridge vlan 20
Následně nastavíme SVI – interfacy pro VLAN, které se zde jmenují circuit
.
CSS11503(config-if[ 2/1])# circuit VLAN10 CSS11503(config-circuit[VLAN10])# description "Clients" CSS11503(config-circuit[VLAN10])# ip address 10.10.0.1 255.255.255.0 CSS11503(config-circuit[VLAN10])# circuit VLAN20 CSS11503(config-circuit[VLAN20])# description "Servers" CSS11503(config-circuit[VLAN20])# ip address 192.168.60.250 255.255.255.0 CSS11503(config-circuit-ip[VLAN20-192.168.60.250])# exit CSS11503(config-circuit[VLAN20])# exit
Potom vytvoříme Service (služby) pro naše dva servery. Jejich parametrem je IP adresa, TCP protokol a port 7010. Nesmíme je zapomenout aktivovat.
CSS11503(config)# service server1 CSS11503(config-service[server1])# ip address 192.168.60.13 CSS11503(config-service[server1])# port 7010 CSS11503(config-service[server1])# protocol tcp CSS11503(config-service[server1])# active CSS11503(config-service[server1])# service server2 CSS11503(config-service[server2])# ip address 192.168.60.14 CSS11503(config-service[server2])# port 7010 CSS11503(config-service[server2])# protocol tcp CSS11503(config-service[server2])# active
Když máme Service, tak vytvoříme Content rule, ale musíme začít s Owner. Nastavíme VIP adresu, přidáme služby a zvolíme na jakém protokolu a portu posloucháme. Tím se provede i přesměrování z portu 80 na 7010. Opět musíme pravidlo aktivovat.
CSS11503(config-service[server2])# owner servers-test CSS11503(config-owner-content [servers-test])# content servers CSS11503(config-owner-content[servers-test-servers])# vip address 10.10.0.10 CSS11503(config-owner-content[servers-test-servers])# add service server1 CSS11503(config-owner-content[servers-test-servers])# add service server2 CSS11503(config-owner-content[servers-test-servers])# protocol tcp CSS11503(config-owner-content[servers-test-servers])# port 80 CSS11503(config-owner-content[servers-test-servers])# active
Na závěr si vše uložíme.
CSS11503# copy running-config startup-config Working..(\) 100%
Tím by mělo být vše hotovo a náš příklad by měl být funkční. Zmíním pouze pár drobností.
Když chceme provést nějakou změnu na Service nebo Content Rule, tak je musíme nejprve deaktivovat. A samozřejmě následně zas aktivovat.
CSS11503(config-service[server2])# suspend
V našem Content Rule jsme využili defaultní metodu vyvažování, což je Round Robin. Konfigurace se provádí následně.
CSS11503(config-owner-content[portal-servery])# balance roundrobin
Keepalives - ověření funkčnosti služby
Pro to, aby se ověřilo, že daná služba je funkční, se používají pravidelné zprávy tzv. keepalive message. Parametry keepalive můžeme nastavit globálně nebo specificky pro každou službu (ty přepisují globální konfiguraci). Určujeme frekvenci, s jakou se zprávy odesílají, počet chyb, po kterém se služba označí jako down (zprávy se posílají dále a pokud přijde správná odpověď, tak se služba opět začne používat). Typů/protokolů keepalive máme k dispozici několik, od základního pingu (ICMP) přes TCP, FTP, skript po HTTP, kde se kontroluje hlavička zadané stránky a volitelně hash obsahu.
CSS11503(config-service[vmz1portal1])# keepalive frequency 2 CSS11503(config-service[vmz1portal1])# keepalive maxfailure 1 CSS11503(config-service[vmz1portal1])# keepalive retryperiod 2 CSS11503(config-service[vmz1portal1])# keepalive type http CSS11503(config-service[vmz1portal1])# keepalive uri "/portal/dostupnost"
Udržení session - Sticky
Standardně se příchozí požadavky rozhazují dle zvolené metody na servery tak, jak přichází. V řadě webových aplikací ale potřebujeme, aby se klient dostal vždy na ten server, kde se mu vytvořila Session. Proto musíme nastavit vlastnost, která se označuje jako Stickiness. Možností je více, ale asi nejběžnější je podle SessionID v Cookies. Základní konfigurace je jednoduchá, pouze se zapne v Content rule.
CSS11503(config-owner-content[portal-servery])# advanced-balance cookies
Zobrazení informací o sticky provedeme následujícím příkazem. Důležité je, že parametr sticky
je dostupný pouze v konfiguračním módu pravidla.
CSS11503(config-owner-content[portal-servery])# show rule sticky
Balance: Round Robin Advanced Balance: Cookies Sticky Mask: 255.255.255.255 Sticky Inactivity timeout: 0 minutes Sticky No Cookie Found Action: Balance Sticky Server Down Failover: Balance ArrowPoint Cookie Path: / ArrowPoint Cookie Expiration: Browser Exit ArrowPoint Cookie CSS Expired ArrowPoint Cookie Service: Keep Current ArrowPoint Cookie Name: ARPT String Match Criteria: String Range: 1 - 100 String Prefix: "" String Eos-Char: "" String Ascii-Conversion: Enabled String Skip-Len: 0 String Process-Len: 0 String Operation: Match-Service-Cookie Location-Cookie: Not Configured Location-Cookie Expiration: Browser Exit Cookie-Domain: Not Configured
Informace – show příkazy
Potom co máme hotovou konfiguraci, a hlavně když máme problémy, se můžeme podívat na různé údaje. Souhrnné informace o pravidlech a službách. Zde je důležité, aby vše bylo aktivní a živé.
CSS11503# show rule-summary VIP Address Port Prot Url CntRuleName OwnerName Stat Idx --------------- ----- ---- ------------------ -------------- --------- ---- --- 10.10.0.10 80 TCP servers servers-t Act 1 CSS11503# show service summary Service Name State Conn Weight Avg State Load Transitions server1 Alive 0 1 2 0 server2 Alive 0 1 2 0
Nebo se můžeme podívat na detail služby, kde vidíme její parametry a také to, zda tato služba dostává nějaké požadavky.
CSS11503# show service Services (2 entries): Name: server1 Index: 0 Type: Local State: Alive Rule ( 192.168.60.13 TCP 7010 ) Session Redundancy: Disabled Redirect Domain: Redirect String: Keepalive: (ICMP 5 3 5 ) Keepalive Encryption: Disabled Last Clearing of Stats Counters: 06/04/2009 16:14:17 Mtu: 1500 State Transitions: 0 Total Local Connections: 10 Total Backup Connections: 0 Current Local Connections: 0 Current Backup Connections: 0 Total Connections: 10 Max Connections: 65534 Total Reused Conns: 0 Weight Reporting: None Weight: 1 Load: 2
Zobrazení záznamů z Content Service Database (CSD).
CSS11503# show content Content Database: Pieces of content for slot: 1 subslot: 1 ----------------------------------- Total Content: 13 SFP: 1/1 Index: 0 <10.0.1.29> TCP Port 80 Streamed 10.0.1.29/ SFP: 1/1 Index: 1 <10.0.1.29> TCP Port 80 Streamed 10.0.1.29/portalmpsv/zverejneniapz/preSearch.do
Zobrazení kompletní konfigurace
CSS11503# show running-config !Generated on 06/04/2009 16:17:09 !Active version: sg0820201 configure !*************************** GLOBAL *************************** bridge spanning-tree disabled persistence reset remap ssl-l4-fallback disable !************************* INTERFACE ************************* interface 2/1 bridge vlan 10 interface 2/2 bridge vlan 20 interface 2/3 admin-shutdown interface 2/4 admin-shutdown interface 2/5 admin-shutdown interface 2/6 admin-shutdown interface 2/7 admin-shutdown interface 2/8 admin-shutdown !************************** CIRCUIT ************************** circuit VLAN10 description "Clients" circuit VLAN20 description "Servers" ip address 192.168.60.250 255.255.255.0 !************************** SERVICE ************************** service server1 ip address 192.168.60.13 port 7010 protocol tcp active service server2 ip address 192.168.60.14 port 7010 protocol tcp active !*************************** OWNER *************************** owner servers-test content servers vip address 10.10.0.10 add service server1 add service server2 protocol tcp port 80 active
Konfigurace přístupu přes Ethernet Management Port
Pokud chceme přistupovat k management rozhranní přes síť, tak si musíme přiřadit adresu pro tento speciální port. Adresa musí být z jiného subnetu, než jaký je použit jinde na CSS. Po nastavení adresy je třeba provést restart.
CSS11503# conf t CSS11503(config)# boot CSS11503(config-boot)# ip address 192.168.100.174 %% System must be rebooted for IP address to take effect CSS11503(config-boot)# subnet mask 255.255.255.0 %% System must be rebooted for subnet mask change to take effect CSS11503(config-boot)# reboot CSS11503# show boot-config !************************ BOOT CONFIG ************************ ip address 192.168.100.174 subnet mask 255.255.255.0 primary boot-file sg0820201 primary boot-type boot-via-dis
Komentáře
Vieme aj nieco o Check point architekture?
Vraj je celkom zaujimava podarilo sa mi o nej nieco malo nastudovat, no vsetko bolo len teoreticke.
A jedna otazka na zaver. Co musi sietar vediet okrem funkcii switchov, routerov a firewallov?
Napr Monitoring siete. Ci uz pomocou programov ako Nagios, popripade Openview alebo Mrtg.
Co dalsie su take velmi potrebne a cenene znalosti?
Dakujem
@Morgun: No tak zalezi na co se chces specializovat, jak moc to chces do hloubky znat atd. Vezmi si jen funkci routeru a switchu - vsechny ty protokoly, architektury, qos, lan/wan, ap. - na urovni treba CCIE R&S toho mas fakt kopu!
Pak samozrejme zalezi co delas, treba IP telefonie a cely Cisco Unified Communications je obrovska kapitola, nebo treba Wifi a controllery, Mobility sluzby, atd atd atd..
A z bezpecnosti? To je tez obrovsky tema :)
No a monitoring a provisioning je vec, ktera to cely zastresuje, nastroju je kopa .. (!) dalo by se to rozepsat na nekolik mnoho knih :)
@Samuraj: Diky, zajimavy clanek, s CSS switchi jsem se v praxi jeste nesetkal.. coz me privadi jeste k myslence..
@Morgun: ... a co treba sitove architektury pro datova centra? aaaj!? :)