[출처] L4 DSL Mode 설정하기|작성자 미친푸우
참고하시기 바랍니다.
1) 패킷이 들어올 때는 L4스위치나 로드 밸런서(Load Balancer)를 통해서 들어오지만,
2) 패킷이 나갈 때는 L4스위치나 로드 밸런서(Load Balancer)를 거치지 않고 바로 나가는 구성이다.
ㅇ O/S 별 L4스위치 DSR서비스 구성과 관련하여 서버에서 설정내역은 다음과 같습니다.
1. IBM AIAX Unix의 Loopback Interface 설정은 지난주에 설정하였던 명령어와 동일합니다.
– 설정 : ifconfig lo0 alias X.X.X.X(L4스위치의 VIP) x0ffffffff (255.255.255.255를 뜻하는 호스트와 동일) –a (NOARP 옵션)
– 삭제 : ifconfig lo0 delete X.X.X.X(L4스위치의 VIP) x0ffffffff
#ifconfig lo0 delete 123.123.123.123
보통 수많은 서버를 가지고 서비스를 하는 업체라면 L4 스위치가 한대이상 존재할 것입니다.
L4 스위치한대만으로도 엄청나게 빠른 속도로 많은 량의 분산처리를 위한 라우팅을 완벽하게 해내죠.
L4란 OSI 7계층을 공부하시면서 들오보셨을 텐데 Layer 4 라우팅을 하는 스위치라는 뜻입니다.
L4 스위치의 라우팅 모드중에 DSR(Direct Server Return)이라는 평범하지 않은 모드가 있습니다.
말그대로 서버에서 결과를 바로 리턴한다는 뜻이지요.
어떤것인지 다음의 그림을 보면서 설명 드리겠습니다.
우선 평범한 SLB(Server Load Balancer) 에 대해 설명 드리겠습니다.
외부에 공개되는 아이피입니다.
10.1.1.x 대의 아이피들은 잘 아시겠지만 내부 네트워크입니다.
웹서버들에게 접근할 수 없다는 것을 알 수 있습니다.
DSR용 구조라 설명이 좀 복잡합니다;;
설명을 적으면서 계속 잘못되었다는 생각이 들지만
중요한점은 클라이언트의 Request와 서버의 Response가 둘다 L4를 거쳐간다는것만 알아주시면 됩니다.
리턴은 서버에서 클라이언트에게 바로 리턴합니다. L4를 거치지 않습니다.
어떤 차이가 있는지 보이시나요? 답장은 L4를 거치지 않고 바로 클라이언트에게 전송됩니다.
클라이언트의 컴퓨터는 답장을 받았지만 잘못된 패킷으로 인지하고 버려버리게 됩니다.
이렇게 함으로써 잘못된 Loopback주소를 브로드캐스팅 하는것을 막을 수있습니다.
1. Linux에서 (CentOS, RHEL)
1) /etc/sysconfig/network-scripts/ifcfg-lo:0 를 설정한다. ifcfg-lo 파일을 복사해서 설정하면 쉽게 할 수 있다.
[ 형식 ]
DEVICE=lo:0
IPADDR=< VIP >
NETMASK=255.255.255.255
NETWORK=< 네트웍대역 >
BROADCAST=< Broadcast IP >
ONBOOT=yes
[ 설정 예 ]
DEVICE=lo:0
IPADDR=192.168.123.20
NETMASK=255.255.255.255
NETWORK=192.168.123.0
BROADCAST=192.168.123.255
ONBOOT=yes
2) /etc/sysctl.conf 에 다음을 추가한다. (커널 2.6)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
3) 쉘에서 loopback 설정은 다음과 같이 한다.
# sysctl net.ipv4.conf.lo.arp_ignore=1
# sysctl net.ipv4.conf.lo.arp_announce=2
# sysctl net.ipv4.conf.all.arp_ignore=1
# sysctl net.ipv4.conf.all.arp_announce=2
#
# ifconfig lo:0 192.168.123.20 netmask 255.255.255.255
2. FreeBSD에서
1) /etc/rc.conf 에 다음 설정을 추가한다.
ifconfig_lo0_alias0=”inet 192.168.123.20 netmask 255.255.255.255″
2) /etc/sysctl.conf 에 net.inet.ip.check_interface 을 0으로 설정하거나, 설정 자체를 없앤다. (default값은 0)
net.inet.ip.check_interface=0
3) 부팅 후 ifconfig을 확인한다. 리눅스와 다르게, loopback 설정이 눈에 잘 띄지 않으니 자세히 살펴봐야 한다.
# ifconfig또는 ifconfig lo0
… 생략 …
lo0: flags=8049
inet 127.0.0.1 netmask 0xff000000
inet 192.168.123.20 netmask 0xffffffff <– loopback 설정이 되어 있다.
4) 부팅없이 쉘에서 loopback IP를 추가, 삭제하는 방법
– 추가 : ifconfig lo0 inet 192.168.123.20 netmask 255.255.255.255 alias
– 삭제 : ifconfig lo0 inet 192.168.123.20 netmask 255.255.255.255 delete
- HOME
- NETWORK
L4 DSL Mode 설정하기
L4스위치 DSR 설정관련 자료입니다.
DSR(Direct Server Return)구성은
#ifconfig lo0 alias 123.123.123.123 netmask 255.255.255.255 up
위와 같은 네트워크 구조가 있다고 합시다. 위의 구조는 전형적인 DSR을 위한 구조이지만
편의를 위해 L3 스위치의 아이피는 표시하지 않았습니다. 123.123.123.123은
저 아이피를 통해 웹서비스에 접속할 수 있습니다.
이것을 보시면 외부 인터넷에서 L4를 거치지 않고는
일반적인 로드밸런싱은 다음과 같은 방법으로 이루어 집니다.
SLB 접속 :
Internet → A → L3 Switch → B → L4 Switch → C → L3 Switch → D → Web Server 1 → D → L3 Switch → C → L4 Switch → B → L3 Switch → A → Internet
하지만 DSR구조는 L4가 서버들의 로드밸런싱은 하지만
그렇다면 다음과 같은 방법으로 이루어 지겠죠.
DSR 접속 :
Internet → A → L3 Switch → B → L4 Switch → C → L3 Switch → D → Web Server 1 → D → L3 Switch → A → Internet
하지만 여기서 서버에 추가적인 설정이 필요합니다.
클라이언트는 분명히 123.123.123.123으로 Request를 보냈기 때문에 마찬가지로 123.123.123.123으로부터 Response가 돌아와야 합니다.
하지만 10.1.1.2아이피를 가지고 있는 서버가 반환을 하였죠.
이래선 통신이 제대로 되질 못하죠. 해결 방법은 서버의 Loopback 주소를 변경하면 됩니다.
이때 주의할것인 서브넷마스크가 255.255.255.255여야 한다는겁니다.
loopback용 IP(L4의 DSR구성시에 VIP에 해당)가 192.168.123.20이라고 할 때 설정 예이다.