달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'load balancer'에 해당되는 글 1

  1. 2011.02.25 IPVS 이용한 Load Balancer

IPVS 기능은 ipvsadm, keepalived 를 사용하여 구축한다.
전체적인 구성은 다음 그림과 같다.


1. Load Balancer 서버에 설치 하는 내역은 다음과 같다.
    ipvsadm, keepalived 설치이다. 설치 진행 내역은 다음과 같다. 참고로 현재 keepalived 최신 버전은 1.2.2 이나 
    설치시 버그가 나는 관계로 1.2.1 버전을 사용하였다.

[root@Keep-LB keepalived]# yum -y install ipvsadm

[root@Keep-LB keepalived]# yum -y install kernel-headers kernel-devel

[root@Keep-LB keepalived]# wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz

[root@Keep-LB keepalived]# ./configure --with-kernel-dir=/lib/modules/$(uname -r)/build

[root@Keep-LB keepalived]# make && make install

[root@Keep-LB keepalived]# cd /etc/sysconfig
[root@Keep-LB keepalived]# ln -s /usr/local/etc/sysconfig/keepalived .
[root@Keep-LB keepalived]# cd /etc/rc3.d/
[root@Keep-LB keepalived]# ln -s /usr/local/etc/rc.d/init.d/keepalived S100keepalived
[root@Keep-LB keepalived]# cd /etc/init.d/
[root@Keep-LB keepalived]# ln -s /usr/local/etc/rc.d/init.d/keepalived .
[root@Keep-LB keepalived]# cd /usr/local/etc/keepalived
[root@Keep-LB keepalived]# cp keepalived.conf keepalived.conf.bak


[root@Keep-LB keepalived]# cat keepalived.conf
virtual_server_group example {
 192.168.25.9 80
 }

virtual_server group example {
 lvs_sched      rr
 lvs_method     NAT
 protocol       TCP
 virtualhost    health

 real_server 10.0.0.249 80 {
  weight 1
  HTTP_GET {
   url {
    path /health.html
    status_code 200
   }
   connect_prot 80
   connect_timeout 5
  }
 }

 real_server 10.0.0.248 80 {
  weight 1
  HTTP_GET {
   url {
    path /health.html
    status_code 200
   }
   connect_prot 80
   connect_timeout 5
  }
 }
}

[root@Keep-LB keepalived]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
아래줄과 같이 변경
net.ipv4.ip_forward = 1
[root@Keep-LB keepalived]# 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

keepalived 실행시 다음과 같은 error가 발생 한다.
Starting keepalived: /bin/bash: keepalived: command not found

에러 메시지 처리는 다음과 같이 하였다.
keepalived 실행 파일의 명령어 라인을 다음과 같이 바꾸었다.

start() {
echo -n $”Starting $prog: ”
daemon /usr/local/sbin/keepalived ${KEEPALIVED_OPTIONS}

그리고 생성 되지 않은 /etc/keepalived 또한 링크로 생성하였다.
[root@Keep-LB keepalived]# ln -s /usr/local/etc/keepalived/ /etc/keepalived

[root@Keep-LB keepalived]# service keepalived start



2. WEB 서버 2대에 대하여 다음과 같은 설정을 진행한다.
    서버의 기본 GateWay를 10.0.0.251로 변경한다.
    헬스 체크 페이지를 만든다. -> path /health.html 라고 설정되어 있으므로 health.html 이라는 페이지를 만들어 준다.
    작동 확인용 기본 페이지를 만든다. -> index.html 페이지를 생성하여 각 각의 서버를 구분할수 있게 한다.
    마지막으로 /etc/sysctl.conf 파일의 내용 중 net.ipv4.ip_forward = 0 찾아서 net.ipv4.ip_forward = 1 로 변경 해준다.
    그리고 변경 값의 적용을 위하여 sysctl -p 명령을 사용하여 적용 한다.
    물론 두대의 웹서버에는 기보적으로 웹서버가 설치되어 구동되어야 한다.

이제 전체 구성이 완료 되었다. Load Balancer 서버에서 전체 구성의 확인을 하고 실제 동작 여부를 테스트 하면 된다.

ipvsadm 을 이용해 구성을 확인 한 것이다.

 [root@Keep-LB ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.25.9:80 rr
  -> 10.0.0.248:80                Masq    1      0          0
  -> 10.0.0.249:80                Masq    1      0          0



로그 파일을 확인 하여 keepalived 정상 작동을 확인 한다.

[root@Keep-LB ~]# tailf /var/log/messages | grep Keepalived_healthcheckers
Feb 24 15:39:13 Keep-LB Keepalived_healthcheckers: Netlink reflector reports IP 192.168.25.9 added
Feb 25 07:31:27 Keep-LB Keepalived_healthcheckers: Terminating Healthchecker child process on signal
Feb 25 07:31:27 Keep-LB Keepalived_healthcheckers: Terminating Healthchecker child process on signal
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Netlink reflector reports IP 192.168.25.9 added
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.251 added
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Netlink reflector reports IP 10.0.0.251 added
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Registering Kernel netlink reflector
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Registering Kernel netlink command channel
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Configuration is using : 14268 Bytes
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Activating healtchecker for service [10.0.0.249:80]
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Activating healtchecker for service [10.0.0.248:80]
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Configuration is using : 14268 Bytes
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Activating healtchecker for service [10.0.0.249:80]
Feb 25 07:31:28 Keep-LB Keepalived_healthcheckers: Activating healtchecker for service [10.0.0.248:80]



:
Posted by Se Story