본문 바로가기
설치 및 기술 자료/Linux

[Linux] HAProxy를 통한 HA 기본 동작 알아보기

by 주식회사 서버몬 2025. 5. 15.

안녕하세요. 주식회사 서버몬 입니다.

 

서비스의 안정성과 신뢰성을 높이는 것은 기업 생존에 있어 핵심 요소입니다. 사용자가 언제나 안정적인 서비스를 이용할 수 있도록 보장하기 위해서는 고가용성(HA, High Availability) 구성이 필수적입니다.
이번 글에서는 HA의 기본 개념과 동작 방식을 이해하기 위해, 간단한 실습으로 HAProxy와 Keepalived를 활용한 고가용성 환경 구성 방법을 소개하겠습니다.

 

Haproxy + Keepalived

HAProxy는 로드 밸런싱을 통해 트래픽을 분배하고, Keepalived는 장애 발생 시 자동으로 다른 서버로 트래픽을 전환하는 VIP를 관리합니다.

VIP를 사용하면 서버 간 이동이 투명하게 이루어져 서비스 중단 없이 가용성을 유지할 수 있습니다.

 

각 서버의 기본 네트워크 인터페이스는 ens33입니다. (서비스/VIP 수신용)

서비스 트래픽과 관리 트래픽을 독립적으로 운영할 수 있도록 본 실습에서는 ens37 인터페이스를 별도로 추가하고, Apache2 웹 서버는 ens37에 할당된 IP를 통해 접속 가능하도록 구성하였습니다.

HAProxy 백엔드 설정에서도 해당 IP를 기준으로 트래픽을 분산 처리합니다.

 

os - Ubuntu 20.04 LTS

// 설치
apt-get update
apt-get install -y haproxy keepalived apache2
    
// 방화벽 해제
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

 

HA_1

vim /etc/haproxy/haproxy.cfg

frontend ha__1
        bind *:80  //사용 포트
        mode http
        default_backend ha_2  // 모든 트래픽 ha_2 백엔드로 전달

backend ha_2
        mode http 
        balance roundrobin  //로드밸런스 방식 : 라운드로빈
        server web1 168.192.229.21:8080 check  // web서버 1 - 헬스체크 포함
        server web2 168.192.229.22:8080 check  // web서버 2 - 헬스체크 포함

listen stats  // stats라는 이름의 haproxy 모니터링 설정
 bind :9000   // 접속시 사용할 포트
 stats enable
 stats uri /haproxy_stats  // 접속시 사용할 경로

vim /etc/keepalived/keepalived.conf

vrrp_script chk_haproxy {   // 사용자 정의 체크
  script "/usr/bin/killall -0 haproxy"  // haproxy 프로세스 존재 여부 확인
  interval 2  // 2초 간격으로 체크
  fall 2  // 실패 2회 누적시 비정상판정
  rise 1  // 성공 1회 누석지 정상판정
}

vrrp_instance VI_1 {
 state MASTER
 interface ens33       // 서버 네트워크 인터페이스
 virtual_router_id 51  // vrrp 그룹 id
 priority 200          // 우선순위값 지정
 advert_int 1          // vrrp 패킷 송신간격 1초 단위로 설정
 authentication {      // virtual router 인증수단 설정
 auth_type PASS        // 인증타입 : 비밀번호 
 auth_pass Servermo    // 비밀번호 설정 -> vrrp 51그룹의 비밀번호가 동일해야함
}
virtual_ipaddress {
 172.16.10.223/24      // virtual ip 설정 (서브넷값 입력 필요)
}
track_script {         // vrrp_script 결과 추척해 우선순위 조정 or Failover 트리거 활용
 chk_haproxy           // chk_haproxy weight -50 > 우선위 -50 | 별도 조건 미설정 > vrrp_script 수행 명시
}

cd /var/www/html/index.html
echo 'Haproxy 1 node' > index.html 
cat index.html 
> Haproxy 1 node

vim /etc/apache2/ports.conf
Listen 192.168.229.21:8080  // haproxy가 80번 포트 사용으로 80 -> 8080으로 수정
...

vim /etc/apache2/sites-available/000-default.conf 
<VirtualHost 192.168.229.21:8080>  // haproxy가 80번 포트 사용으로 80 -> 8080으로 수정
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com
...

 

HA_2

vim /etc/haproxy/haproxy.cfg

frontend ha__1
        bind *:80  // 사용 포트
        mode http
        default_backend ha_2  // 모든 트래픽 ha_2 백엔드로 전달

backend ha_2
        mode http 
        balance roundrobin  //로드밸런스 방식 : 라운드로빈
        server web1 168.192.229.21:8080 check  // web서버 1 - 헬스체크 포함
        server web2 168.192.229.22:8080 check  // web서버 2 - 헬스체크 포함

listen stats  // stats라는 이름의 haproxy 모니터링 설정
 bind :9000   // 접속시 사용할 포트
 stats enable
 stats uri /haproxy_stats  // 접속시 사용할 경로

vim /etc/keepalived/keepalived.conf

vrrp_script chk_haproxy {   // 사용자 정의 체크
  script "/usr/bin/killall -0 haproxy"  // haproxy 프로세스 존재 여부 확인
  interval 2  // 2초 간격으로 체크
  fall 2  // 실패 2회 누적시 비정상판정
  rise 1  // 성공 1회 누석지 정상판정
}

vrrp_instance VI_1 {
 state BACKUP
 interface ens33       // 서버 네트워크 인터페이스
 virtual_router_id 51  // vrrp 그룹 id
 priority 200          // 우선순위값 지정
 advert_int 1          // vrrp 패킷 송신간격 1초 단위로 설정
 authentication {      // virtual router 인증수단 설정
 auth_type PASS        // 인증타입 : 비밀번호 
 auth_pass Servermo    // 비밀번호 설정 -> vrrp 51그룹의 비밀번호가 동일해야함
}
virtual_ipaddress {
 172.16.10.223/24      // virtual ip 설정 (서브넷값 입력 필요)
}
track_script {         // vrrp_script 결과 추척해 우선순위 조정 or Failover 트리거 활용
 chk_haproxy           // chk_haproxy weight -50 > 우선위 -50 | 별도 조건 미설정 > vrrp_script 수행 명시
}

cd /var/www/html/index.html
echo 'Haproxy 1 node' > index.html 
cat index.html 
> Haproxy 1 node

vim /etc/apache2/ports.conf
Listen 192.168.229.22:8080  // haproxy가 80번 포트 사용으로 80 -> 8080으로 수정
...

vim /etc/apache2/sites-available/000-default.conf 
<VirtualHost 192.168.229.22:8080>  // haproxy가 80번 포트 사용으로 80 -> 8080으로 수정
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com
...

 

 

HAProxy 모니터링

모든 서비스 실행 후 모니터링 페이지에 접속하시면 위 사진과 같은 화면을 보실 수 있습니다.

이 페이지에서는 각 서버의 상태, 세션 수, 트래픽 처리량, 에러 및 경고 내역 등을 실시간으로 확인할 수 있습니다.

특히, Status 컬럼을 통해 서버의 정상 동작 여부를 쉽게 파악할 수 있고, LastChk를 통해 마지막 상태 점검 시점을 확인할 수 있어 장애 발생 시 신속한 대응이 가능합니다.

모니터링 페이지에서 확인할 수 있듯이, 모든 웹 서버가 정상적으로 작동하며 설정한 라운드로빈(1:1) 방식으로 트래픽이 균등하게 분산되고 있는 걸 확인 할 수 있습니다.

 

하나의 서버가 다운되면 HAProxy는 해당 서버의 프로세스 상태를 자동으로 체크하여, 정상 작동 중인 서버로만 트래픽을 전달합니다.
또한, HAProxy 모니터링 페이지를 통해 각 서버의 상태를 실시간으로 확인할 수 있어 서비스 장애를 빠르게 감지하고 대응할 수 있습니다.

 

이처럼 HAProxy는 장애 감지와 트래픽 분산을 자동으로 처리하여, 서비스의 안정적인 운영을 돕습니다.

따라서 고가용성을 위한 이중화 구성은 단순한 장애 대응을 넘어, 서비스의 연속성과 신뢰성을 보장하는 핵심 요소라 할 수 있습니다.

 


HA 솔루션 선택을 위한 고려사항

실무 환경에서는 고도화된 HA 솔루션과 통합 관리 도구를 활용해 장애 감지와 대응을 자동화하며, 실시간 모니터링과 로그 분석을 통해 문제를 신속하게 파악할 수 있습니다.

또한, 다양한 환경과 트래픽 조건에 맞춘 맞춤형 설정이 가능하여 서비스 가용성을 극대화하고, 운영 효율성과 안정성도 함께 높일 수 있습니다.

 

고가용성을 위한 이중화는 시스템 안정성뿐만 아니라 비즈니스 연속성 확보에도 중요한 역할을 합니다.

트래픽 부하 분산과 장애 발생 시 자동 장애 조치(Failover) 기능을 제공하여 서비스의 지속적인 운영을 보장합니다.

 

대부분의 HA 솔루션은 장애 감지(Health Check), 자동 장애 조치(Failover), 프로세스 상태 감시 및 수동 up/down 제어 기능을 기본적으로 제공합니다.

따라서 운영체제, 데이터베이스, 애플리케이션 종류 등 사용 환경에 맞는 HA 솔루션을 신중히 선택하는 것이 중요하며,

이중화를 통해 안정적인 시스템 환경을 구축하는 것은 사용자 경험 향상과 기업 신뢰성 확보에 핵심적인 전략이라 할 수 있습니다.

 

 

 

 

 

 

 

1U서버 / 2U서버 / AI서버 / alyac / APC / APC UPS / backup / carepack / centos / chakramax / cuda / DAS / DB / DB서버 / defog / DEFOG랙 / dell5820 / dell5820t / dell7920 / dellpoweredge / dellr240 / dellr340 / dellr350 / dellr450 / dellr540 / dellr630 / dellr640 / dellr740 / dellr750 / dellserver / dellt40 / dellt440 / dellt5820 / dell서버 / DELL서버CPU / DELL서버RAID컨트롤러 / DELL서버SAS하드디스크 / DELL서버가격비교 / DELL서버가격비교견적 / DELL서버견적 / DELL서버구매 / DELL서버디스크교체 / DELL서버메모리 / dell서버서버몬 / DELL서버펌웨어 / DELL서버하드디스크구매 / dell옵션 / dell워크스테이션 / dl20 / dl20gen10 / dl20gen11 / dl360 / dl360gen10 / dl360gen11 / dl380 / dl380g10 / dl380gen10 / dl380gen11 / ECC메모리 / EDFOG랙가격 / embedded / est security / ESTSOFT / FIRMWARE / GPU / gpu서버 / gpu타워형서버 / greenlake / HA솔루션 / HP GPU / hp hdd / hpdl20 / HPDL20Gen10 / hpdl360 / hpdl360gen10 / hpdl380 / hpdl380g10 / HPDL380Gen10 / HPE / HPE GPU / hpe hdd / hpe rok / HPE Service Pack for Proliant / HPE SPP / hpe ssa / hpedl20 / hpedl20gen10 / hpedl360gen10 / hpe서버 / HPE서버CPU / HPE서버RAID컨트롤러 / HPE서버SAS하드디스크 / HPE서버가격비교 / HPE서버가격비교견적 / HPE서버견적 / HPE서버구매 / HPE서버드라이버설치 / HPE서버디스크교체 / HPE서버메모리 / HPE서버비용 / hpe서버소음 / HPE서버펌웨어 / HPE서버하드디스크구매 / hpe옵션 / hpe정품 / hpgen10 / hpml30 / hpserver / hpz2 / hpz4 / hpz4g4 / hpz6g4 / hpz8g4 / hp마이크로서버 / hp서버 / hp서버cto / hp서버pc / HP서버메모리 / hp서버소음 / hp서버컴퓨터 / HP서버파워 / HP서버펌웨어 / HP서버하드디스크 / hp옵션 / hp워크스테이션 / hp정품 / hp프로라이언트 / HYPER BACKUP / ibm서버 / ilo / Intelligent Provisioning / internetdisk / KVM / KVM 기술지원비(비용) / KVM 설치비 / L2스위치 / L3스위치 / LENONO서버SAS하드디스크 / lenovop620 / lenovor650 / LENOVO서버 / LENOVO서버CPU / LENOVO서버RAID컨트롤러 / LENOVO서버가격비교 / LENOVO서버가격비교견적 / LENOVO서버견적 / LENOVO서버구매 / LENOVO서버디스크교체 / LENOVO서버메모리 / LENOVO서버하드디스크구매 / LENOVO펌웨어업데이트 / Linux / ML30 / ml30gen10 / ml30gen11 / ML350GEN10 / ml350gen11 / ML360 / MS CSP / MSSQL / MSSQL 기술지원비(비용) / MSSQL 설치비 / MYSQL / MySQL 기술지원비(비용) / MySQL 설치비 / NAS / NVIDIA / Office 365 / oneview / orange / OS설치 / PA-410 / PA-440 / paloalto / poweredger740 / poweredger750 / precision5820 / QUADRO / r240 / r250 / r340 / r360 / r440 / r550 / r650 / r660 / r740 / r750xs / r760 / r760xs / RAID / redhat / RHEL설치 / RMS랙 / rocky / s100i / securedisk / server / serverpc / smart storage administrator / SPP / sql server / sr250 / sr650 / SYNOLOGY / SYNOLOGY나스 / t150 / t360 / UPS / UPS기술지원 / UPS납품 / UPS설치 / V3 / veeam / vroc / windows server / Windows서버설치 / XEON서버 / z8g4 / 가상서버 / 가성비서버 / 기술지원비(비용) / 나스기술지원 / 나스설치지원 / 네트워크스위치 / 네트워크장비 / 더블테이크 / 데이터베이스 / 델5820 / 델서버 / 델서버비용 / 델서버펌웨어업데이트 / 델옵션 / 델워크스테이션 / 델컴퓨터워크스테이션 / 디포그 / 디포그랙 / 디포그랙가격 / 딥러닝 / 딥러닝pc / 딥러닝서버 / 랙 / 랙(RACK) 기술지원비(비용) / 랙(RACK) 설치비 / 랙납품설치 / 랙설치 / 레노버p620 / 레노버서버 / 레노버워크스테이션 / 레노보서버 / 레노보서버펌웨어 / 레드헷설치 / 레이드 / 레이드구성 / 록키리눅스 / 리눅스 / 리눅스 기술지원비(비용) / 리눅스 설치비 / 리눅스서버 / 리눅스서버설치 / 리눅스서버트러블슈팅 / 리눅스트러블슈팅 / 문서보안 / 문서중앙화 / 미니서버 / 미니서버랙 / 미니서버렉 / 미디어서버 / 방화벽 / 방화벽 기술지원비(비용) / 방화벽 설치비 / 방화벽엔지니어 / 백업 / 백업 기술지원비(비용) / 백업 서버 / 백업서비스 / 백업솔루션 / 보안솔루션 / 보안솔루션구매 / 보안솔루션설치 / 보안툴 / 빔백업 / 샤크라맥스 / 서버 / 서버 기술지원비(비용) / 서 버 랙마운트비용 / 서버 설치비 / 서버 장애조치비용 / 서버CPU / 서버MEMORY / 서버OS설치 / 서버pc / 서버가격 / 서버가속기 / 서버견적 / 서버교체 / 서버구매 / 서버구입 / 서버구축 / 서버기술지원 / 서버납품 / 서버디스크장애처리 / 서버랙 / 서버렉 / 서버렉마운트 / 서버메모리 / 서버 몬 / 서버몬기술지원 / 서버백업 / 서버보안 / 서버부품 / 서버엔지니어 / 서버옵션 / 서버용GPU / 서버용PC / 서버용그래픽카드 / 서버용메모리 / 서버 / 컴퓨터 / 서버용하드디스크 / 서버재고 / 서버컴 / 서버컴퓨터 / 서버트러블슈팅 / 서버판매 / 서버하드 / 서버호스팅 / 스위치 / 스위치 기술지원비(비용) / 스위치 설치비 / 스토리지 / 스토리지 기술지원비(비용) / 스토리지 랙마운트비용 / 스토리지 설치비 / 스토리지 장애조치비용 / 스토리지납품설치 / 스토리지서버 / 시놀로지DS918 / 시놀로지HyperBackup / 시놀로지나스 / 시놀로지나스백업 / 시놀로지하이퍼백업 / 시큐어디스크 / 안랩 / 알약 / 앱서버 / 오피스 365 / 우분투설치 / 워크스테이션 / 워크스테이션pc / 워크스테이션컴퓨터 / 윈도우서버 / 윈도우서버2016 / 윈도우서버2019 / 윈도우서버2022 / 윈도우서버설치 / 윈도우서버컴퓨터 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이스트 시큐리티 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 임베디드 / 저가서버 / 저렴한서버 / 정품서버 / 정품서버옵션 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 케어팩 / 타워서버 / 타워형서버 / 팔로알토 / 페도라설치 / 프로라이언트

댓글