RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'My Advanced Linux/HA clustering'에 해당되는 글 2

시스템 구현

LVS Load Balancing method
 NAT 이용한 가상서버
 IP 터널링 이용한 가상서버
 다이렉트 라우팅 이용한 가상서버

 

LVS Direct Routing
 사용자의 요청은 가상 IP 주소를 가진 부하분산서버로 간다
 부하분산서버는 스케줄링 알고리즘에 따라 클러스터에서 실제 서버를 선택
 접속을 기록하는 해시 테이블에 새로운 접속을 추가
 부하분산서버에서 선택한 서버로 직접 패킷을 전송
 리얼서버는 요청을 처리하고 결과를 사용자에게 직접 전송

 

스케줄링 알고리즘
 Round-Robin Scheduling
 Weighted Round-Robin Scheduling
 Least-Connection Scheduling
 Weighted least-Connection Scheduling

 

Technology
1. heartbeat
2. Ldirectord
3. ipvsadm

 

1. Heeartbeat
-  heartbeat 프로토콜을 이용하는 오픈 소스 프로젝트
-  정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급 복 구 프로세스를 수행

- Master 호스트가 서비스를 책임
- Master 호스트에 문제발생시 Hot standby 호스트가 가상 IP를 인계받아 서비스 재계


2. Ldirectord
 리얼서버의 상태를 모니터링 하는 PERL 스크립트
 설정파일에 정해진 URL에 주기적으로 특정문자열 요구
 타임아웃, 응답된 문자열 유효성 등으로 서버상태 결정
 리얼서버의 다운시 IPVS 테이블에서 삭제
 리얼서버 복구시 IPVS 테이블에 재 등록
 라이렉트 라우팅은 Linux Director서버의 IPVS 테이블을 이용해 커널에서 처리
 모든 리얼 서버가 다운 되었을 경우 fall-back 서버가 응답


3. ipvsadm
 2개 이상의 노드를 가진 클러스터링 시스템에서 커널내부의 IPVS 테이블을 설정하고 유지하는 유틸리티
 IPVS테이블은 커널이 로드밸런서로 들어오는 패킷을 각각의 리얼서버 노드로 전달하기 위해 참조
 2개의 프로토콜 지원(TCP, UDP)
 3가지 방식의 패킷 포워딩 방식 지원(NAT, Tunneling, Direct routing)
 4가지 스케줄 알고리즘 지원

 

구축
Network 설정(공통)
/etc/hosts
X.X.X.100 www.dunet.co.kr www virtual ip (VIP)
X.X.X.101 ha1.dunet.co.kr ha1 master
X.X.X.102 ha2.dunet.co.kr ha2 standby
X.X.X.103 node1.dunet.co.kr node1 real server1
X.X.X.104 node2.dunet.co.kr node2 real server2

 

real server 서버들은 VIP를 로컬주소로 인식하도록 설정 되어야 함
- loopback device 에 IP alias 기능을 이용
- /etc/sysconfig/network-scripts/ifcfg-lo:0 스크립트를 다음과 같이 설정

DEVICE=lo:0
IPADDR=X.X.X.100
NETMASK=255.255.255.255
NETWORK=X.X.X.X
BROADCAST=X.X.X.X
ONBOOT=yes
NAME=loopback

 

GATEWAY혼돈을 막기 위해 /etc/sysconfig/network 파일에 아래 항목 추가
GATEWAYDEV=eth0

 

각 real server에서 /etc/ha.d/conf/ldirectord.cf에 포함
Test Page of node1.dunet.co.kr
Test Page of node2.dunet.co.kr


ARP 응답문제
loopback devices에서 Alias된 VIP가 추가된 경우 로컬네트워크의 ARP 요청이 로드밸런서로 가지 않고 리얼 서버가 먼저 응답하므로 부하분산이 되지 않는 문제가 생길 수 있다.


커널 2.2.14 – Hidden Device 기능을 이용
커널 2.4.X  - Hidden patch 필요
커널 2.6.X  - /etc/sysctl.conf 파일에 수정 후 활성화


# ARP hidden configure
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


활성화
# sysctl -p

TIP) 확인법으론 windows나 linux에서 arp -a 명령을 실행. 로드밸런서 서버 맥어드레스가 나오면 정상적으로 셋팅이 된 것이다.

 

Linux Director Server 설정
- kernel 2.4 이상에서는 IPVS기능 사용가능
- Director서버는 반드시 자신에게 접속하는 클라이언트 패킷을 real server로 보낼 수 있는 IPforward기능이 필요


# vi /etc/sysctl.conf
net.ipv.ip_forward = 1 로 변경 후 저장


활성화

# sysctl -p


실행을 위해 /etc/ha.d/conf/ldirectord.cf에 설정파일 필요


# vi /vietc/ha.d/conf/ldirectord.cf
checktimeout=3
checkinterval=1                     # 테스트페이지 요청 주기
fallback=127.0.0.1:80gate         # 모든 리얼서버 다운시 이동할 웹 서버
autoreload=yes
logfile=”/var/log/ldirectord.log”
quiescent=yes
virtual=X.X.X.100:80                # 리얼서버 IP및 포트, 포워딩 방식
   real=X.X.X.103:80 gate 3          - gate = Direct Routing
real=X.X.X.104:80 gate 2             - masq = Network address translation
service=http                              - ipip = IP Tunneling
  checkport=80
  checktype=connect
  request=”index.html”
  receive=”Test Page”
  scheduler=wlc                    # 스케줄링 방식
  #persistent=600                    - rr, wrr, lc, wlc

- Real Server 동일 사양에서 똑같게 구성
- Director Server 동일하게 구성

 

LVS 각 서버들 httpd 실행
# /etc/rc.d/init.d/ldirectord start
- 부팅 시 자동 실행되지 않게 설정!!!


ipvsadm을 통해 테이블 확인
# ipvsadm - L

장애 로그로 결과를 분석

High Availability Cluster
이 구성은 서비스를 제공하는 Active server 와 장애 발생시 서비스를 이어 받는 Stand-by server로 이루어진다. 가용성 확보는 물론 데이터 상속에 대해서도 관여한다. 데이터 관리 방법에 따라 ‘Shared Disk(공유디스크)’, ‘Data Mirrioring(데이터복제)타입’, ‘Remote Cluster(원격 클러스터)타입’으로 분류된다.

공유디스크 타입
(1) 특징
- 비교적 고가의 외장 공유디스크 필요
- 대용량의 데이터를 취급하는 시스템에 적합
(2) 기본 구성 및 동작
- 정상 동작 수행 중인 상태
- 서버에 장애가 발생하면 스탠바이 서버에서 서비스를 이어받는다.(failover)
- 장애가 발생한 서버의 문제를 조치한다.
- 원래의 서버로 서비스를 원복한다(failback)

데이터복제 타입
(1) 특징
- 고가의 외장 공유 디스크가 필요 없다.
- 데이터의 복제로 인해 소용량의 데이터를 취급하는 시스템에 적합.
(2) 기본 구성 및 동작
- 액티브 서버에서 디스크 읽기는 비 클러스터 구성인 상태와 동일하며, 디스크 쓰기 동작에서 Interconnect 네트워크를 통해 복제가 이루어진다.
- 데이터의 복제는 리얼타임으로 동작하는 Synchronous방식과 원격지의 클러스터 노드의 데이터 복제를 지원하는 Asynchronous방식이 있다.
- 액티브 서버에서 장애가 발생할 경우 스탠바이 서버에서 복제된 데이터를 통해서 어플리케이션이 실행되며 서비스를 이어 받게 된다.

HeartBeat 설정 및 구동
- heartbeast 프로토콜을 이용하는 오픈 소스 프로젝트
- 정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급복구 프로세스를 수행
- 이더넷 카드 혹은 시리얼 케이블을 이용 각각의 호스트를 연결
- Heartbeat 프로토콜로 연결된 호스트들은 가상 IP를 공유
- Master 호스트가 서비스를 책임
- Master 호스트에 문제 발생시 Stand-by 서버로 서비스 계속

Heartbeat 설정
Heartbeat는 3개의 설정 파일을 사용한다.(기본경로 /etc/ha.d/)
- ha.cf : heartbeat 구성에 필요한 기본 설정 파일.
- haresource : 노드간에 공유할 자원과 스크립트 설정 파일.
- authkeys : 노드간의 인증 방법을 설정.

# vi /etc/ha.d/ha.cf
debugfile  /var/log/ha-debug # debugfile 로그 생성 파일  
logfile    /var/log/ha-log        # 로그 생성 파일   
logfacility local0    
keepalive 2                           # 두 노드간 heartbeat 주고받는 주기(초단위)   
deadtime 10                          # 노드가 죽었다고 판단하는 시간(10초후 failover)   
udpport 694                          # UDP heartbeat 패킷을 보낼 포트   
ucast eth1 slaverIPAddress   # UDP heartbeat 보낼 인터페이스  
auto_failback on                   # 장애 노드 복구시 자동 복구 여부 설정   
master node                       # 마스터 노드   
slcave node                        # 슬레이브 노드

# vi /vietc/ha.d/haresource
마스터 노드명            virtual IP          공유 서비스명   
master node         192.168.1.100     httpd

이 후 공유리소스에 대한 링크를 생성한다.
# ln –s /etc/rc.d/init.d/httpd /etc/ha.d/resource.d/httpd

# vi /etc/ha.d/authkeys
auth 1            # 사용할 인증 방식   
1 md5 hello       # 인증 시 보낼 메시지
여기에서 주의 할 점은 보안상 root만 실행할 수 있도록 권한을 주어야한다.
# chmod 600 /etc/ha.d/authkeys

heartbeat 구동과 종료
# service heartbeat start
# service heartbeat stop

※ 이는 간단한 HA만의 설정이다.
이런식의 서버 설정은 하나가 놀고있기 때문에(standby) 자원의 효율면에선 떨어진다고 볼 수있다. standby서버 역시 효율적으로 사용은 다음에 알아보도록 하자.
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/10   »
  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      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)