반응형
728x170
다중화란?
다중화(Redundancy)란, 장애가 발생하더라도 예비 운용 장비로 시스템의 기능을 지속할 수 있는 것을 말함
-> 즉, 서비스가 중단되지 않게 하는 것임
다중화의 본질
- 장애를 상정
- 장애를 대비해 예비 장비 준비
- 장애 발생 시, 예비 장비를 운용할 수 있는 운용체제 정비
장애를 상정하는 여러가지 경우
- 라우터 장애
- 라우터의 예비 장비(cold standby)
- 빈번하게 설정을 변경할 일이 없음
- 라우터의 예비 장비(cold standby)
- 서버 장애
- 서버의 예비 장비 (hot standby)
- 빈번하게 설정이 바뀜
- 서버의 예비 장비 (hot standby)
이 외에도 여러가지 장애가 존재하지만 여기서는 간단하게 2가지만 알아봄
장애 극복
극복을 위해 VIP를 이용함
즉, 웹서비스는 VIP로 제공하게 됨
*VIP : Virtual IP
장애 발생 → VIP를 인계
클라이언트는 정상적으로 다른 웹서버에 접근 가능하게 됨
클라이언트는 어느 장비에 접근하는지 신경쓰지 않는다.
즉, 다중화가 되어있다면 클라이언트는 서버가 비정상적으로 작동하는 것을 모른다.
장애 검출
L3
ICMP 체크
ICMP echo 요청을 보내 응답이 돌아오는지 확인
→
서비스가 정상적인지는 확인 X
장비 상태만 확인 O
L4
특정 포트로 접속하여 접속 가능 여부 체크
→
웹서비스가 다운되어있는지는 확인 O
응답할 수 없는 경우나 에러를 반환하는 경우는 확인 X
L7
실제로 요청을 보내서 응답 체크
→
대부분의 이상을 탐지 O
하지만 서버의 부하 유발 가능성 존재
서비스에 장애가 일어났는지, 장비에 장애가 일어났는지 목적에 따른 헬스체크 필요
#!/bin/sh
VIP="10.0.0.1"
DEV="eth0" # IP 인계에 사용할 네트워크 인터페이스
# 장애 검출 - (장비 장애)
# 제한 : 1회 1초의 타임아웃 핑
healthcheck(){
ping -c 1 -w 1 $VIP > /dev/null
return $?
}
# 장애 극복
# MAC 주소를 획득 -> VIP 주소를 /24 서브넷 마스크 추가 -> VIP와 MAC 주소 연결하여 ARP 패킷 전송
ip_takeover(){
MAC=`ip link show $DEV | egrep -o '([0-9a-f]{2}:){5}{0-9a-f}{2}' | head -n 1 | tr -d :`
ip addr add $VIP/24 dev $DEV
send_arp $VIP $MAC 255.255.255.255 ffffffffffff
}
while healthcheck; do
echo "health ok"
sleep 1
done
echo "fail over"
ip_takeover
* 로컬 서버에서 VIP IP 주소를 인계하면 동일한 IP 주소를 사용하는 다른 장치와 충돌이 발생할 수 도 있음
** LAN에서는 MAC 주소로 통신을 하기 때문에 캐싱된 ARP 테이블을 갱신시켜야함
장애발생 → 장애검출 → 장애극복 (IP 인계 → ARP 패킷 전송)
이러한 기본적인 생각을 가지고 다중화에 대해서 더욱 알아보자
728x90
반응형
그리드형
'DevOps' 카테고리의 다른 글
다중화(Redundancy) - 3 웹 서버의 다중화 (IPVS를 이용한 LB) (1) | 2023.12.21 |
---|---|
다중화(Redundancy) - 2. 웹서버 다중화(LB 없이) (0) | 2023.12.20 |
Redis 백업 (1) | 2023.07.08 |
Logging Application 비교 (0) | 2023.01.21 |
SVN_Command (0) | 2023.01.21 |