Server Load Balancing Alteon Web Switch Moon Sang Won swmoon@encom.co.kr
목 차 Server Load Balancing 의 필요성 Server Load Balancing 의 이해 목 차 Server Load Balancing 의 필요성 Server Load Balancing 의 이해 Server Load Balancing 기본구성 Terminology Load Balancing Algorithm Server Load Balancing Processing Server Load Balancing Configuration Information / Statistics View 점검사항 Redundancy SLB 구현사례
Server load Balancing의 필요성 Internet Server Traffic 의 급증 - Internet 응답속도 지연 - Server 효율성 저하 - Service 신뢰성 상실 Internet Traffic 극복 - Server Load Balancing 필요성 제기
Server load Balancing의 이해 DNS Roundrobin을 이용한 Server Load Balancing L4를 통한 Server Load Balancing - TCP session관리가 Layer 4 장비를 통하여 가능하게 됨에 따라 다양하고 확실한 Load Balancing 구현 - Client가 웹브라우저 상에서 URL을 입력하여 DNS로 하여금 얻어지는 Ip address값 (L4에서는 Virtual IP :VIP 이라고 말한다.) 을 통하여 L4의 Virtual Server로 접속하게 된다. - Virtual Server로 접속하게된 http request는 Vip로 mapping되어있는 실제 서버들(real server)의 Group으로 matching시켜주게 된다. - Server group으로 Matching 시키는 기법은 L4가 가지고 있는 여러 가지 분산 알고리즘에 의해 작동하게 되는데 사이트의 성격에 따라 알맞게 선택하여 주면 된다.
Server Load Balancing의 기본구성 Gateway 210.219.67.126 Internet L4 interface 210.219.67.120 Virtual IP 210.219.67.124 Real 1 210.219.67.121 Real 3 210.219.67.123 Real 2 210.219.67.122
Terminology VIP, VMAC, Vport RIP, RMAC, Rport CIP, CMAC, Cport Session - Virtual Server IP address, Virtual MAC address, TCP/UDP port RIP, RMAC, Rport - Real Server IP address, Real MAC address, TCP/UDP port CIP, CMAC, Cport - Client IP address, Client MAC address, TCP/UDP port Session - TCP conection, UDP session, IP flow
Terminology Client ports Server ports Health Check - Client processing을 적용할 수 있는 switch port - 각각의 session을 server로 할당 / VIP를 RIP로 변환 Server ports - Server processing을 적용할 수 있는 switch port / RIP를 VIP로 변환 Health Check - Server의 이상유무를 수시로 점검하는 기능 ( http, tcp, ftp, icmp ...)
Load Balancing Algorithm Round Robin - Real server로 session을 순차적을 맺어주는 방식 Least Connection - real server의 open 세션 수를 고려한 다음, 가장 적은 수의 open session을 가진 real server로 session을 맺어 주는 방식. - 각 real server들이 서로 상이한 resource와 connection에 부수되는 시간과 데이터 양이 서로 다른 환경에서 활용할 수 있다.
Load Balancing Algorithm Hash - Clients와 Server 간에 한번 성립된 session을 계속해서 유지해 주는 방식으로 특정 client는 특정 server로만 접속하게 된다. - clients source IP address (32 bit) 값을 real server의 대수 로 나눈 나머지 값으로 connection할 server 결정 Minimum Missies - Hash Algorithm과 거의 유사 - 역시 clients source IP address (32 bit) 값을 real server의 대수로 나눈 나머지 값으로 connection할 server 결정 - 그러나, 이 Algorithm은 Cache Redirection에 주로 사용하도록 권장
Existing session entry? Server Load Balancing processing Client Processing - VIP (Virtual IP address)를 RIP (Real IP address)로 변환하는 작업 1. Translate VMAC:VIP:Vport to RMAC:RIP:Rport 2. Forward to real server 1. Select Server 2. Place Entry in Session Table yes no Existing session entry? Client port? egress port
Server Load Balancing processing Server Processing - RIP (Real IP address)를 VIP (Virtual IP address)로 변환하는 작업 Service Mapping Table Frame IP SA and source UDP/TCP port matches a configured RIP:Rport? Translate RIP:Rport to VIP:Vport yes Filtering Server port?
Server Load Balancing Configuration setup시 기본 구성요소 - interface IP address / mask / broad - default gateway - Virtual Ip address / Virtual port / group - Real Ip address - Group / Metric / Health Check - SLB port Client processing, server processing - SLB on/off Alteon L4 command [Main Menu] ; L4 booting시 최초 menu info - Information Menu stats - Statistics Menu cfg - Configuration Menu oper - Operations Command Menu boot - Boot Options Menu maint - Maintenance Menu diff - Show pending config changes [global command] apply - Apply pending config changes [global command] save - Save updated config to FLASH [global command] revert - Revert pending or applied changes [global command] exit - Exit [global command, always available] >> Main#
Server Load Balancing Configuration interface IP address / mask / broad >> Main# /cfg/ip/if 1 ------------------------------------------------------------ [IP Interface 1 Menu] addr - Set IP address mask - Set subnet mask broad - Set broadcast address ena - Enable IP interface cur - Display current interface configuration >> IP Interface 1# ma 255.255.255.128/addr 210.219.67.120/broad 210.219.67.127/ena >> IP Interface 1# cur Current interface 1: 210.219.67.120, 255.255.255.128, 210.219.67.127, vlan 1, enabled default gateway >> IP Interface 1# /cfg/ip/gw 1 [Default gateway 1 Menu] ena - Enable default gateway cur - Display current default gateway configuration >> Default gateway 1# addr 210.219.67.128/ena >> Default gateway 1# cur Current default gateway 1: addr 210.219.67.126, intr 2, retry 8, arp disabled, enabled
Real Ip address Group / Metric / Health Check >> Default gateway 1# /cfg/slb/re 1 [Real server 1 Menu] rip - Set IP addr of real server ena - Enable real server cur - Display current real server configuration >> Real server 1 # rip 210.219.67.121/ena >> Real server 1 # ../re 2 >> Real server 2 # rip 210.219.67.122/ena >> Real server 2 # ../re 3 >> Real server 3 # rip 210.219.67.123/ena Group / Metric / Health Check >> Real server 3 # /cfg/slb/gr 1 ------------------------------------------------------------ [Real server group 1 Menu] metric - Set metric used to select next server in group health - Set health check type add - Add real server cur - Display current group configuration >> Real server group 1# add 1/add 2/add 3/metric leastconn/health tcp >> Real server group 1# cur Current real server group 1: name , metric leastconns, backup none, realthr 0 health tcp, content real servers: 1: 210.219.67.121, enabled, name , weight 1, timeout 10, maxcon 200000 backup none, inter 2, retry 4, restr 8 2: 210.219.67.122, enabled, name , weight 1, timeout 10, maxcon 200000 3: 210.219.67.123, enabled, name , weight 1, timeout 10, maxcon 200000 backup none, Inter 2, retry 4, restr 8 remote disabled, proxy enabled, submac disabled
Vitual Ip address / Virtual port / group >> Default gateway 1# /cfg/slb/vi 1 ------------------------------------------------------------ [Virtual Server 1 Menu] service - Virtual Service Menu vip - Set IP addr of virtual server ena - Enable virtual server cur - Display current virtual configuration >> Virtual Server 1# vip 210.219.67.124/ena >> Virtual Server 1# service Enter virtual port: 80 [Virtual Server 1 http Service Menu] group - Set real server group number cur - Display current virtual service configuration >> Virtual Server 1 http Service# gr 1 Current real server group: 1 New pending real server group: 1 >> Virtual Server 1# ../cur Current virtual server 1: 0.0.0.0, disabled, ftpp disabled virtual ports: http: rport http, group 1, frags real servers: 1: 210.219.67.121, weight 1, enabled, backup none 2: 210.219.67.122, weight 1, enabled, backup none 3: 210.219.67.123, weight 1, enabled, backup none
SLB on/off Client processing, server processing >> Layer 4# po 1 ------------------------------------------------------------ [SLB port 1 Menu] client - Enable/disable client processing server - Enable/disable server processing cur - Display current port configuration >> SLB port 1# client enable >> SLB port 1# ../po 2 >> SLB port 2# server enable >> SLB port 2# ../po 3 >> SLB port 3# server enable >> SLB port 3# ../po 4 >> SLB port 4# server enable SLB on/off >> SLB port 4# /cfg/slb/ >> Layer 4# . [Layer 4 Menu] real - Real Server Menu group - Real Server Group Menu virt - Virtual Server Menu filt - Filtering Menu port - Layer 4 Port Menu gslb - Global SLB Menu url - URL Resource Definition Menu sync - Config Synch Menu adv - Layer 4 Advanced Menu on - Globally turn Layer 4 processing ON off - Globally turn Layer 4 processing OFF cur - Display current Layer 4 configuration >> Layer 4# on
Information / statistics View - Telnet or Console ; Server Load Balancing을 위한 Setting이 끝난 후에 Telnet / Console / Web Browser를 통하여 다양한 정보를 확인할 수 있다. Link Information ; 각 port의 link상태를 확인할 수 있다. >> Information# li ------------------------------------------------------------------ Port Speed Duplex Flow Ctrl Link ---- ----- -------- --TX-----RX-- ------ 1 100* full* yes yes up 2 100 full yes yes up 3 100 full yes yes up 4 100 full yes yes up 5 100 full yes yes up 6 10/100 any yes yes down 7 10/100 any yes yes down 8 10/100 any yes yes down * = value set by configuration; not autonegotiated. ARP Information ; port에 물려있는 장비들의 Mac address값을 확인 할 수 있다. >> Information / Address Resolution Protocol# d IP address Flags MAC address VLAN Port Referenced ports --------------- ----- ----------------- ---- ---- ---------------- 210.219. 67.121 P 00:50:8b:69:82:57 1 2 1-8 210.219. 67.122 00:50:8b:69:82:56 1 4 empty 210.219. 67.123 00:50:8b:69:82:d9 1 3 empty 210.219. 67.124 P 4 00:60:cf:42:70:ee 1-8 210.219. 67.126 00:e0:2b:df:99:00 1 1 empty
IP Information ; L4의 Interface상태 / gateway 상태를 확인할 수 있다. >> Information# ip Interface information: 1: 210.219.67.120, 255.255.255.128, 211.196.157.127, vlan 1, up Default gateway information: metric strict 1: 210.219.67.126, up Server Load Balancing Information ; Virtual server, real server의 구성 및 상태를 확인 할 수 있다. >> main# /information/slb/dump Real server state: 2: 210.219. 67.121, 00:50:8b:69:82:d9, vlan 1, port 2, health 4, up 2: 210.219. 67.122, 00:50:8b:69:82:d8, vlan 1, port 3, health 4, up 2: 210.219. 67.123, 00:50:8b:69:82:d7, vlan 1, port 4, health 4, up Virtual server state: 2: 210.219. 67.124, 00:60:cf:44:1a:ae virtual ports: http: rport http, group 1, backup none real servers: 1: 210.219. 67.121, backup none, up 2: 210.219. 67.122, backup none, up 3: 210.219. 67.123, backup none, up
Group Session Statistics Port Statistics ; port에서의 frame error 또는 collision등을 확인할 수 있다. >> Port Statistics# bridg ------------------------------------------------------------------ Bridging statistics for port 1: dot1PortInFrames: 0 dot1PortOutFrames: 0 dot1PortInDiscards: 0 dot1TpLearnedEntryDiscards: 0 dot1BasePortDelayExceededDiscards: 0 dot1BasePortMtuExceededDiscards: 0 dot1StpPortForwardTransitions: 0 >> Port Statistics# ethernet Ethernet statistics for port 1: dot3StatsAlignmentErrors: 0 dot3StatsFCSErrors: 0 dot3StatsSingleCollisionFrames: 0 dot3StatsMultipleCollisionFrames: 0 dot3StatsSQETestErrors: 0 dot3StatsDeferredTransmissions: 0 dot3StatsLateCollisions: 0 dot3StatsExcessiveCollisions: 0 dot3StatsInternalMacTransmitErrors: 0 Group Session Statistics ; Group으로 load balancing 되어지는 session수를 확인할 수 있다. >> Statistics # slb >> Server Load Balancing Statistics# gr 1 Real server group 1 stats: Current Total Highest Real IP address Sessions Sessions Sessions Octets ---- --------------- -------- ---------- -------- --------------- 1 210.219. 67.121 1456 3455624 55675 62316 2 210.219. 67.122 2345 12344476 67896 165356559 3 210.219. 67.123 2565 24564476 67896 165356559 5891 35676700 123411 165418875
statistics View - Web Interface - L4를 통하여 server 상태/ session 상태 등을 web browser를 통하여도 확인할 수 있다. Web Interface Login Message [그림 1] L4 interface ip를 web browser 입력 시 또는 Login Message
Alteon H/W Information [그림 2] Login 후 Alteon 장비에 대한 기본 Information
Port Statistics [그림 3] Port의 상태표시
Session Statistics [그림 4] 각 Server로의 Session 상태 표시
참고사항 1) Virtual IP 로 ping test에 대한 응답이 없고 service가 되지 않음. Router 또는 Switch에서 L4장비로 들어오는 port에 Client process가 "Enable" 되어 있는지 확인한다. → SLB port Client processing, server processing 참조 2) Virtual IP 로 ping test에 대한 응답은 있는데 service가 되질 않는다. Virtual IP로 setting한 값이 중복되어 사용되고 있는지 확인한다. 만일 중복되어 사용되고 있다면 어느 한쪽 IP address를 변경하여 사용하도록 한다. ※ Virtual Ip에 대하여 L4로 service하기 이전에 다른 장비로 service하고 있었다면 L4 설치이후에 L4 상단에 존재하는 Router 또는 Switch의 ARP table을 반드시 Clear 시켜주어야 한다.
3) grouping 되어있는 Real Server들이 Up / Down을 반복. L4장비에는 grouping 되어있는 real server 들에 대해 규칙적으로 Health Check 수행 Health Check는 default로 매2초마다 4회씩 server에게 TCP, Http, Icmp, ftp ... 등으로 신호를 보내어 응답이 없으면 서버가 down 된 것으로 간주하여 분산처리에서 제외시킴 Up/ Down을 반복한다면 server들의 deamon이 불안하여 발생할 수 있으 며, interface / port 의 불량으로 인하여 발생할 수도 있다. ※ server들의 service deamon에 이상이 없고 up/down을 반복할 경우 health check를 tcp → http → icmp 등으로 변경해보고 service를 check해보도록 하고, health check time과 횟수를 조금 늘려보는 방법도 시도해 볼만하다.
4) 특정 Server에 문제가 발생하여 서비스가 비정상적으로 작동. 여러대의 server를 Load Balancing하도록 setting 되어있는 site 에서 한 대 또는 다수의 server에 문제가 발생하였을 경우에 비정상적으로 작동할 수 있다. 즉, 문제가 있는 server로 session connection이 맺어진 clients들에게는 service 가 제대로 수행되지 않는 것으로 인식할 수 밖에 없다. ※ 문제가 있다고 판단되는 Server를 차례대로 Operational → Offline으로 변경하여 Server를 점검토록 한다. ( Offline 적용방법은 Web Interface Dashboard mode에서 real server로 정의된 숫자를 click 하면 Operational → Offline으로 변경할 수 있다. 이때 반드시 화면 밑단의 Submit button 과 상단의 apply를 click 해주어야 한다.
SLB Redundancy 구현사례 HSRP : 203.236.43.1 StandBy Active 서버1 서버2 Spanning tree Root Bridge Catalyst A Catalyst B HSRP : 203.236.43.1 FailOver StandBy Active 대표ip : 203.236.43.156 서버1 서버2
Port 구성도 Active Standby 1 2 3 4 5 6 7 8 Router A 서버1 서버2 서버3 서버4 Etho Etho Etho Etho failover Standby 1 2 3 4 5 6 7 8 Router B 서버1 서버2 서버3 서버4 Eth1 Eth1 Eth1 Eth1 현재 Active 되어있는 장비쪽 port에 interface(Eth0)가 모두 enable되있으며, router와 L4 또는 L4와 server로 연결되어있는 port down시 standby 경로로 통하여 무정지 service 구현
① ② 이중화 경로 이상유무 시험 * Test 1 - ①번 port 제거 X ; port down되었을 때 이중화 경로를 통하여 정상 수행되는지를 점검한다 Forwarding Root Bridge Catalyst A Catalyst B HSRP : 203.236.43.1 Blocking ① X Forwarding FailOver StandBy Active ② 대표 ip : 203.236.43.156 서버2 서버1 결과 : ①번 port down시 root bridge에 의하여 spanning tree 작동, catalyst B를 통하여 정상 수 행한다. 정상 작동 되는 데에 걸리는 시간은 30초 정도이며, spanning tree에 의한 blocking ↔ forwarding되는 시간이다. 그러나 L4 Active를 통하여 여전히 packet이 흐르는 이유는 L4장비에 물려있는 Ethernet interface는 정상작동하고 있으므로 Vrrp 가 정상적으로 Active로 인식하고 있기 때문이다.
① ② * Test 2 - ①번 port 복구 및 ②번 port 제거 X HSRP : 203.236.43.1 StandBy Forwarding Root Bridge Catalyst A Catalyst B HSRP : 203.236.43.1 Forwarding ① Blocking FailOver StandBy Active ② X Eth1 Eth0 대표ip : 203.236.43.156 서버2 서버1 결과 : ①번 port 복구 시 priority 값이 높은 Catalyst A 쪽으로 port가 다시 forwarding되어 L4 Active로 packet이 흐르며 전환되는 시간은 spanning tree에 의하여 30초 정도 가 소요된다. ①번 port 복구 후 ②번 제거 시 Eth0가 자동적으로 disable되고 Eth1이 enable되어진다. 이때 서버1 에 대한 경로를 Standby가 Active되어지며 packet은 Standby를 통하여 전송 된다. 이후에 ②번port를 복구한다 해도 Eth0으로 자동복구 되어지지는 않는다.
① ② * Test 3 - ②번 port 복구 HSRP : 203.236.43.1 Active Standby 서버2 서버1 Root Bridge Forwarding Catalyst A Catalyst B HSRP : 203.236.43.1 Fowarding ① Blocking FailOver Active Standby ② Et1 Et0 대표ip : 203.236.43.156 서버2 서버1 결과 : 앞장에서 거론된 바와 같이 ②번 port를 다시 복구하게 된다 하더라도 Eth0가 자동 적으로 enable되지는 않는다. 위 경우에는 Active와 Standby가 뒤바뀌어 작동하게 된다. 최초의 구성대로 진행하고자 할 경우에는 강제적으로 Eth1을 disable하던가 port가 down되면 원 상태로 구성되어진다.
Thank you