2015.09.16 18:23
개요
LVS(Linux Virtual Server)
한대의 서버로 운영하기 힘들경우 서버를 추가하여 접속자를 Load Balanceing 하여 운영하는 시스템 입니다.
Load Balanceing 하는 방법은 L4 스위치사용, DNS 라운드로빈등 여러 방법이 있으며, 여기서는 IPVSADM + Keepalived 를 이용하여 구축 해보겠습니다.
1. 시스템구성
OS : CentOS 6.7 64bit
VIP : 192.168.137.2
WEB서버 1 : 192.168.137.3
WEB서버 2 : 192.168.137.4
2. IPVSADM 설치 과정
- ipvsadm 설치
yum install ipvsadm -y =============================================================================================================== Package Arch Version Repository Size =============================================================================================================== Installing: ipvsadm x86_64 1.26-4.el6 base 42 k Installing for dependencies: libnl x86_64 1.1.4-2.el6 base 121 k Transaction Summary =============================================================================================================== Install 2 Package(s) Total download size: 162 k Installed size: 431 k Downloading Packages: (1/2): ipvsadm-1.26-4.el6.x86_64.rpm | 42 kB 00:00 (2/2): libnl-1.1.4-2.el6.x86_64.rpm | 121 kB 00:00 ----------------------------------------------------------------------------------------------------------------------------------- Total 49 kB/s | 162 kB 00:03 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : libnl-1.1.4-2.el6.x86_64 1/2 Installing : ipvsadm-1.26-4.el6.x86_64 2/2 Verifying : ipvsadm-1.26-4.el6.x86_64 1/2 Verifying : libnl-1.1.4-2.el6.x86_64 2/2 Installed: ipvsadm.x86_64 0:1.26-4.el6 Dependency Installed: libnl.x86_64 0:1.1.4-2.el6 Complete! |
- 가상 VIP Ethernet 설정 (WEB서버 1, WEB서버 2 동일설치)
- 가상 VIP Ethernet 설정 vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 DEVICE=eth0:1 BOOTPROTO=static IPADDR=192.168.137.2 ONBOOT=yes |
- Load Balance 사용하기 위한 설정
vi /etc/sysctl.conf # Controls source route verification net.ipv4.conf.default.rp_filter = 0 위의 0 부분을 1로 변경 한후 저장 sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 |
3. KeepAlived 설치 및 설정
- 설치
yum install keepalived -y |
- 설정
vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { ywc@hostway.co.kr } notification_email_from ywc@hostway.co.kr smtp_server localhost smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance LVS { state Slave interface eth0 virtual_router_id 10 priority 50 advert_int 1 } virtual_server 192.168.137.2 80 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.137.3 80 { TCP_CHECK { connect_timeout 3 } } real_server 192.168.137.4 80 { TCP_CHECK { connect_timeout 3 } } } |
4. 실행 및 실행 모니터링
- 데몬 실행 등록
chkconfig ipvsadm on
chkconfig keepalived on
- 2번에서 설정한 eth0:1 up
ifup eth0:1 up
- 데몬 재실행
/etc/init.d/ipvsadm restart
/etc/init.d/keepalived restart
- 실행 모니터링
위에 설정한 VIP : 192.168.137.2로 웹페이지 호출
[root@TEST01 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.137.2:http rr
-> 192.168.137.3:http Local 1 0 0
-> 192.168.137.4:http Route 1 0 0
VIP 192.168.137.2 로 접속시 WEB서버 1, WEB서버 2로 Load Balanceing 되는것을 확인 할 수 있습니다.
이 중에 WEB서버 1에서 WEB 데몬이 Down 되었을 시에는 자동으로 WEB서버 2에서 서비스가 가능합니다.
[root@TEST01 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.137.2:http rr
-> 192.168.137.4:http Route 1 0 2
위와 같이 서비스 순단없이 넘어 갈 수 있습니다.
keepalived.conf 파일의 자세한 내용은 추후 다시 정리하여 올리도록 하겠습니다.