본문 바로가기
Linux/이중화

이중화 개념 및 Keepalive

by laarkjung 2024. 3. 15.

개요

현재 사내에는 Postgresql, keepalive를 사용하여 이중화를 구성 중


이중화(Duplication)

무중단 서비스를 위한 것으로 Active-Active, Active-Standby 등으로 구성

전체 시스템이 멈추는 것을 방지함

장애 처리(Failover) <=> 장애 복구(Failback)

예비 시스템(Slave)으로 자동 전환되는 기능

고가용성(High Availability)

서버, 네트워크 등이 오랜 기간 동안 지속적으로 서비스되는 성질 의미

절체(전환)

일본말로 절체라고 하며, 전환이라는 순 우리말을 쓰자.

WAL : Write Ahead Logging

복제 기능 중 하나

데이터 무결성을 보장하는 표준 방법 (데이터의 일관성, 정확성 유지)

쿼리가 실행되어 데이터가 변경되기 전, 해당 변경 내용을 로그에 미리 담아두고 쿼리 실행

이전으로 복구가 필요할 때, 이 로그를 기준으로 복구

pg_xlog 디렉터리에 쌓임

3가지의 복제 기능

Physical Replication 

DB 동기화 시 파일 단위로 전송하는 기능

Standby서버에서는 Write작업 불가능

  • Log Shipping(로그 파일 단위 전송)
    • Primary의 정해진 크기의 아카이브 파일을 Standby 서버로 전송해서 반영
    • WAL파일 자체를 전송하여 반영
    • 장애 발생 시 수동으로 동기화해야 한다는 단점(postgresql 10버전 이후로 지원하지 않음)
  •  
    • 실시간으로 StandbyWAL을 전송
    • Master에는 WAL sender가 실행되고, Slave에는 WAL reciever가 실행된다.
  • Streaming Replication(실시간 전송)

Logical Replication

게시자 서버(Master)의 변경사항을 Synchronization worker가 감지하여 구독자 서버(Slave)에 전달하는 방식

DB Schema, Sequence, DDL 작업에 대한 복제는 지원하지 않는 단점


Keepalived

Master인지 Slave인지 정의해 주는 역할

Linux Virtual Server configuration로 알려진 Linux SystemVRRP로 구현

Load balancingHigh Availability를 위한 Framework

High Availability is achieved by the Virtual Redundancy Routing Protocol(VRRP)

Health checking for LVS systems

/etc/keepalived/keepalived.conf 파일로 설정 

아래 그림처럼 VIP를 통해 사용자가 접근

 

설치 

yum install keepalived or apt-get install keepalived

구동

/etc/rc.d/init.d/keepalived.init start

Logging

/var/log/message 

 

VRRP(Virtual Router Redundancy Protocol)

: 가상 라우터 다중화 / 장애 복구 프로토콜

 

Failover / virtualization을 위해 구현된 Protocol

여러 대의 라우터를 그룹으로 묶어 하나의 가상 IP 주소 부여

Master로 지정된 라우터 장애 시 VRRP 그룹 내의 Backup 라우터가 Master로 자동 전환되는 프로토콜

VIP를 소유한 장비가 Master, 나머지가 Slave

LVS(Linux Virtual Server)

Load balancing software of Linux kernel-based operating system.

Balance IP load across real server.

Load Balance 

종류는 OSI 7계층에 따라 나뉜다.(L4, L7)

  • L4 로드 밸런서 – IP주소, 포트 번호 이용
  • L7 로드 밸런서 – HTTP 헤더, 쿠키 등 사용자 요청을 기준으로 트래픽 분산

Scale up(기존 하드웨어 성능 향상), Scale out(기존 기능과 같은 서버 증설) 방식

구현 알고리즘 : 라운드 로빈(RR), IP 해시, 최소 연결, 최소 응답 시간 등

HAProxy

하드웨어 기반 L4, L7 스위치를 대체하기 위한 SW 솔루션

TCP, HTTP 기반 애플리케이션을 위해 고가용성 로드밸런서와 프록시 제공, Reverse Proxy 사용

nginx와 비교할 수 있음

  • Proxy – 클라이언트가 다른 네트워크 서비스에 간접적으로 접속할 수 있게 하는 것
    • Forward Proxy : 클라이언트(내부망) -> 프락시 서버 -> 인터넷
    • 서버에게 클라이언트의 정보 감추는 역할
  • Reverse Proxy : 클라이언트 -> 인터넷 -> 프락시 서버 -> 내부망 서버
    • 서버가 어느 서버인지 감출 수 있음

 

 

참고

https://keepalived.readthedocs.io/en/latest/introduction.html

 

Introduction — Keepalived 1.2.15 documentation

Docs » Introduction Edit on GitHub Introduction Load balancing is a method of distributing IP traffic across a cluster of real servers, providing one or more highly available virtual services. When designing load balanced topologies, it is important to ac

keepalived.readthedocs.io