DevOps

다중화(Redundancy) - 1. 다중화 개념

게임이 더 좋아 2023. 12. 20. 21:58
반응형
728x170

다중화란?

다중화(Redundancy)란, 장애가 발생하더라도 예비 운용 장비로 시스템의 기능을 지속할 수 있는 것을 말함

-> 즉, 서비스가 중단되지 않게 하는 것임

 

 

다중화의 본질

  1. 장애를 상정
  2. 장애를 대비해 예비 장비 준비
  3. 장애 발생 시, 예비 장비를 운용할 수 있는 운용체제 정비

 

 

장애를 상정하는 여러가지 경우

  • 라우터 장애
    • 라우터의 예비 장비(cold 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 패킷 전송)

 


 

 

 

이러한 기본적인 생각을 가지고 다중화에 대해서 더욱 알아보자

 

반응형
그리드형

'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