본문 바로가기
I T/Network

리눅스 L4 서버 (로드밸런싱) 이중화 셋팅

by 루솨 2015. 8. 30.

L4 까지 셋팅 ( 브릿지 , 바이패스카드 ,bpctl )


/etc/ha.d/ 이 디렉토리가 존재하지 않는다면 ldirectord, ha.d 등등 설치 해준다.
        "yum install heartbeat*"
        설치하고 나면 /etc/ha.d/ 가 생성된거 확인할수있다.

        아래 명령어로 파일생성
        "touch /etc/ha.d/ldirectord.cf"


        "/etc/init.d/ldirectord start"  데몬실행

        실행시 아래와 같이 에러날경우  "yum install heartbeat" 로 설치한번 더해주면 에러않남
        "[root@localhost public_html]# /etc/init.d/ldirectord status /etc/init.d/ldirectord: line 33: /etc/ha.d/shellfuncs: 그런 파일이나 디렉토리가 없음"


        "/etc/init.d/ldirectord start"  데몬다시실행


        아래 명령어도 실행해서 있는지 확인해본다.
        "ipvsadm -ln"        그리고 /etc/ha.d/ldirectord.cf 에 해당내용 기입후 ipvsadm -ln 로 했을대 

                                    적용이 않될경우 yum 으로      perl을 깔아주면 적용이 될것이다.



 L4 이중화를 할려면  기본적인 L4 외에 /etc/ha.d/ 로 가보면  여러가지의 파일중


 authkeys  , ha.cf  , haresources , ldirectord.cf  요 네가지 파일만 셋팅해주면됨
 authkeys   L4이중화 인증키
ha.cf       이중화 컨픽?
haresources        각 L4 서버의 가상IP 경로 너주는곳
ldirectord.cf     L4 컨픽

192.168.1.49 /28 이며

관리IP
192.168.1.61 LVS1번   마스터서버
192.168.1.62 LVS2번   슬레이브
가상화IP
192.168.1.59      클라리언트서버1
192.168.1.60      클라이언트서버2

 

-------------------------------------------------------------------------------------------------------

vi /etc/ha.d/authkeys         각 LVS 서버에  파일생성후 저장  아래 명령어 의미는 모르겠음.
auth 1
1 crc

------------------------------------------------------------------------------------------------------
vi /etc/hosts   에  해당 LVS1 과 LVS2 추가

192.168.1.61 LVS1
192.168.1.62 LVS2
-----------------------------------------------------------------------------------------------------
vi /etc/sysconfig/network        각 LVS1 과 LVS2 에  추가

NETWORKING=yes
HOSTNAME=LVS1   or LVS2
NOZEROCONF=yes

hostname 변경
----------------------------------------------------------------------------------------------------

vi /etc/ha.d/ha.cf

LVS1  셋팅
keepalive 2
deadtime 5
warntime 10
initdead 10
logfile /var/log/ha-log
auto_failback on
ucast br0 192.168.1.62              -------->  이중화할 다른 LVS IP를 넣어주어야 한다.
node LVS1
node LVS2

LVS2 셋팅
keepalive 2
deadtime 5
warntime 10
initdead 10
logfile /var/log/ha-log
auto_failback on
ucast br0 192.168.1.61
node LVS1
node LVS2
-----------------------------------------------------------------------------------------------------------

vi haresources                            LVS1 과 LVS2에 동시적 셋팅

LVS1 192.168.1.59/255.255.255.240/192.168.1.63          --------> 각 가상IP로 쓸부분과 넷마스크값
LVS1 192.168.1.60/255.255.255.240/192.168.1.63                      브로드캐스트 주소값을 넣어준다.
-------------------------------------------------------------------------------------------------------------------------------------------

 vi /etc/ha.d/ldirectord.cf

checktimeout=7
checkinterval=10
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no

####

#virtual=192.168.1.60:80                          ( 가상IP 및 포트)
#    scheduler=sh
#    checktype=connect
#    protocol=tcp
#    real=192.168.1.xx:80 masq 1                (    분배서버 리얼IP )
#    real=192.168.1.xx:80 masq 1

#virtual=192.168.1.60:443                          (  가상IP및 포트 , 443 은 ssl(보안웹))
#    scheduler=sh
#    checktype=connect    or ping           ( 해당 포트가 안열려 있거나 열려 있어도 실제 가동이 안되는 포트라면  ping 으로 체크후 분배 )
#    protocol=tcp
#    real=192.168.1.xx:443 masq 1
#    real=192.168.1.xx:443 masq 1

#virtual=192.168.1.59:40271                   ( 특정포트 시  고객 해당 iptables 및 방화벽에 해당 포트가 열려 있어야 하며  가동중이여야 분배가 가능 )
#    scheduler=rr
#    checktype=ping
#    protocol=tcp
#    real=192.168.1.xx:40271 gate 1          
#    real=192.168.1.xx:40271 gate 1
#    real=192.168.1.xx:40271 gate 1

#virtual=192.168.1.59:40272
# scheduler=rr
# checktype=ping
# protocol=tcp
# real=192.168.1.xx:40272 gate 1
# real=192.168.1.xx:40272 gate 1
# real=192.168.1.xx:40272 gate 1

------------------------------------------------------------------------------------------------------------
 L4 경우 iptables 룰에 인해 네트웍 이상이 있을수 있으니
i
ptables 삭제  

rm /etc/sysconfig/iptables                iptables 삭제
vim /etc/sysconfig/iptables                iptables 내용이 지워졌는지 확인

브릿지는 직접 셋팅 할것이므로  기냥 삭제

rm /etc/init.d/bridge
rm /etc/rc3.d/S96bridge
-----------------------------------------------------------------------------------------------------------

네트웍설정 ( br0 에 관리IP셋팅    , 바이패스 eth1 , eth2 은  브릿지 형태로 셋팅  ( eth0은 끌거임)

cd /etc/sysconfig/network-scripts/

vi ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
IPADDR=192.168.1.62
NETMASK=255.255.255.240
GATEWAY=192.168.1.49

****주의  HWADDR  ( 맥주소는 확실하게 기입해야됨  ip link 치면 해당 장치별 맥주소가 있음 그걸
                                  해당 eth1  과 eth2 에 대입 )
vi ifcfg-eth1
DEVICE=eth1
HWADDR=00:e0:ed:0b:2d:2c
ONBOOT=yes
BRIDGE=br0                <--------- 이걸 추가해줘야함

vi ifcfg-eth2
DEVICE=eth2
HWADDR=00:e0:ed:0b:2d:2d
ONBOOT=yes
BRIDGE=br0

eth0 확실히 충돌날 여지가 없는지 재 확인  eth0 번 빼도 됨.
각 디바이스마다  재대로 설정되었는지 두번 세번 확인.
----------------------------------------------------------------------------------------------------------------

vi /etc/rc.d/rc.local                   에 추가

bpctl eth1 set_bypass_wd 4000              4초의 카운터
bpctl eth1 set_wd_autoreset 1000          1초 마다 리셋         ( 4초의 카운터를 세다가 0이되면 바이패스  서버가 매 카운터당 바이패스 모드로 갈수있기 떄문에
                                                                                            1초마다 리셋  , 서버다운이나 리부팅됐을시 카운터가 리셋이 안되기 때문에 바이패스로 자동전환되는 명령어 )
--------------------------------------------------------------------------------------------------------------


bpctl eth1 get_bypass                현재 상태 확인

ntsysv        실행후  iptables 시작체크 되어있는거 지우기

chkconfig --add ldirectord                     ldirectord    체크된거 확인

reboot   후

chmod 600 /etc/ha.d/authkeys           권한 변경

/etc/init.d/heartbeat start              실행

watch ifconfig       로 테스트및 확인
--------------------------------------------------------------------------------------------------------
 DR, 또는 RR  방식일경우  클라이언트 서버에서도 따로 셋팅을 해줘야함

해당 클라이언트서버에 접속후 ( 분배 받는 서버 )

vi /etc/sysctl.conf                  젤 하단에  추가

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

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0                  ifcfg-lo:0  을 사용

vi ifcfg-lo:0  열어서 안에 내용을 이런식으로 셋팅

DEVICE=lo:0
IPADDR=192.168.1.59                               ( 해당 L4 가상iP 입력)
NETMASK=255.255.255.255                       ( 32비트 입력 )
ONBOOT=yes
NAME=loopback

ifup ifcfg-lo:0  으로   네트웍재시작 없이  루프백:0  올리기

------------------------------------------------------------------------------------------------------------
해당 고객 방화벽 점검

netstat -anlp                           해당 분배 포트에 관해 열려 있는지 확인
iptables -vnL          확인

--------------------------------------------------------------------------------------------

LVS 서버에서 각 클라이언트서버와 포트가 분배상황에 올라와있는지 체크 . 끝.


'I T > Network' 카테고리의 다른 글

CIDR 변환 표  (0) 2015.08.30
리눅스 커널 바이패스  (0) 2015.08.30
mrtg log파일 시간알아내기.  (0) 2015.08.30
DNS Amplification Attacks  (0) 2015.08.30
NMAP 옵션 정리  (0) 2015.08.30