# /usr/sbin/piranha-passwd
New Password:
Verify:
Updating password for user piranha
깔끔하게 서버 리부팅한번 해주고 ps -ef를 통해 piranha 데몬이 떠있는것을 볼수있다.
piranha 데몬 실행 스톱은
# /etc/init.d/piranha-gui start/stop/restart 이다
혹 데몬재시작시 서버네임관련된 에러가 뜬다면 /etc/sysconfig/ha/conf/httpd.conf 에서
적당한곳에 ServerName 을 적어주자 일반적인 httpd.conf와 똑같다.
[98]Address 이런 에러가 뜬다면
# netstat -anp | grep piranha 에서 해당 데몬을 죽여버리자
LISTEN 2167/piranha_gui
# kill -9 2167
이제 웹으로 접속을 해보자 포트는 3636이다. 웹접속이 안된다면 호스트pc방화벽이나 서버의 iptables등 설정을 확인해보자
웹설정을 통해 lvs세팅을 할수가있다.
global setting -
Primary server public IP : lvs서버의 공인ip (lvs서버의 실제 ip)
Primary server private IP : nic가 두개이고 공인과 사설로 분리할경우 사설ip
Use network type : 네트워크 타입설정
http://wiki.kldp.org/Translations/html/Virtual_Server-KLDP/index.htm 에 자세한 의미가 나와있다.
nat방식으로 하면 리얼서버엔 특별히 설정할것이 없지만
DR방식으로 하면 리얼서버에 설정해주는 부분이 있다.
/etc/sysctl.conf 에서
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# for ipvs
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
# endof ipvs
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# sysctl -p -- 적용
redundancy - lvs서버에 대한 이중화 설정이다.
virtual servers - (lvs서버의 가상ip)
Name : 가상서버를 구별할 이름
Application port: 서비스에 사용할 포트
Device: vip 에서 사용할 네트워크 장치
Re-entry Time: 실제 서버에 고장일 난 경우 활성 LVS 라우터가 고장난 실제 서버를 다시 클러스터로 불러오기 위해 시도하는 초단위 주기
Service timeout: 실제 서버가 활동을 멈춘 후 고장으로 판단되어 클러스터에서 제거될 때까지의 초단위 주기
Persistence: 클라이언트로부터의 요청을 서비스하는 도중에 서버 관리자가 가상 서버로의 지속성 연결을 할 경우 연결
타임아웃 제한이 만료되기 전에 허용되는 비활성 시간(초)
real server - (로드밸런싱이 되어질 웹서버들)
이렇게 웹에서 설정한 부분이 /etc/sysconfig/ha/lvs.cf 파일에 고스란히 저장이된다.
이제 LVS를 시작해보자
# /etc/init.d/pulse start
ps -ef를 통해 관련 프로세스 떠있는지 보자 pulse, lvs, nanny 등
해당로그는 /var/log/messages에 쌓인다.
레드햇 계열은 piranha로 인해 LVS와 HA 두가지 설정을 할수 있다.
@@이번엔 ipvsadm을 이용하여 구축 해보도록 하자
가상서버ip : 192.168.21.119
리얼서버ip : 192.168.21.100, 192.168.21.108
# yum install ipvsadm 으로 설치할수있다
설치가 되있다면 확인해보자
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
lvs서버에서 가상ip를 설정해주자 (현재 사용중인 실제 ip말고 가상으로 사용할 ip)
# ifconfig eth0:1 192.168.21.119 netmask 255.255.255.0 up --디바이스명이 eth0일때 가상디바이스 eth0:1를 만든다
# ifconfig --확인
재부팅시 디바이스가 자동으로 올라오게 하려면
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 파일을 만들어주자 내용은
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.21.119
NETMASK=255.255.255.0
# /etc/sysctl.conf
net.ipv4.ip_forward=0 -- 1로 변경해주자
# sysctl -p
ipvsadm 설정해주자
# ipvsadm -A -t 192.168.21.119:80 -s wlc
-A : 서비스를 추가한다는 옵션
-t : tcp 서비스 추가 / ?u : udp, -f : fire wall
-IP:80 : ip/port
-s : 스케줄러 방식 선언
-wlc : weighted least-connection 알고리즘, -wrr : weighted round-robon, -rr, -lc
알고리즘에는 몇가지방식이 더있다.
Round robin -순차적 방식
-서버의 연결 대수나 반응시간 고려되지 않음
Weighted round robin -가중치 기반 라운드 로빈
-서버마다 서로 다은 가중치를 지정
-서로 다른 시스템 운영시 효과적
-스케줄링 과부하가 적어 많은 서버 운영가능
-요청에 대한 부하가 많을 시 서버사이에 동적인 불균형 상태 발생 가능
Least-connection -가장 접속이 적은 서버로 연결
-각 서버의 실제 접속한 숫자를 세어야 하는 동적 스케줄링
-접속부하가 큰 경우 효과적
-시스템이 다양할 시 부하분산 효과적이지 못함
-실제는 TCP의 TIME_WAIT 상태 때문에 아주 좋은 성능을 내기는 힘듬
Weighted least-connection -가중치 기반 최소 접속 스케줄링
-최소 접속 스케줄링의 일부분으로 각 실서버에 성능 가중치 할당
다음은 리얼서버에 arptables_jf 와 디바이스를 설정해주자
먼저 # yum install arptables_jf 설치해주자
Real Server에도 가상 IP를 설정해 주어야 하는데, 이렇게 되는 경우 클라인트가 가상 IP를 요청했을 때 동일 네트워크에 Virtual IP를 2개 이상 갖고 있기 때문에 경우에 따라서 Real Server에서 응답을 주는 경우가 있다고 한다. 이렇게 되면 로드밸런싱이 되지 않기 때문에 arptables_jf를 이용해서 응답하지 않도록 해줘야 한다.
# arptables -A IN -d 192.168.21.119 -j DROP
# arptables -A OUT -d 192.168.21.119 -j mangle --mangle-ip-s 192.168.21.100
# service arptables_jf save
# chkconfig arptables_if on
192.168.21.108 서버에도 위와같이 설정해주자 당연히 뒤에 아이피는 108로 변경해야된다.
arptables_if 를 설치하지 않고 단순히 커널파라미터 값을 변경해도 될것같은데?
/etc/sysctl.conf 에서
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# for ipvs
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
# endof ipvs
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
리얼서버에서 가상서버ip를 설정해주자
# ifconfig eth0:1 192.168.21.119 netmask 255.255.255.0
재부팅시 디바이스가 자동으로 올라오게 하려면
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 파일을 만들어주자 내용은
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.21.119
NETMASK=255.255.255.0
이제 LVS서버에서 리얼서버ip추가해주자
# ipvsadm -a -t 192.168.21.119:80 -r 192.168.21.100 -g -w 5
# ipvsadm -a -t 192.168.21.119:80 -r 192.168.21.108 -g -w 2
-a : 서비스를 추가한다는 옵션, -e : edit, -d : delete
-r : real server
-w 5 : 가중치 5, -w 1 : 가중치 1
-g : 다이렉트 라우팅으로
# service ipvsadm save
# chkconfig ipvsadm on
음 어렵다 어려워 사실 이러니 저러니해도 L4스위치 중고라도 장만해서 사용하는게 가장 안심이 되는게 사실인거같다.