안녕하세요. 주식회사 서버몬 입니다.
서비스의 안정성과 신뢰성을 높이는 것은 기업 생존에 있어 핵심 요소입니다. 사용자가 언제나 안정적인 서비스를 이용할 수 있도록 보장하기 위해서는 고가용성(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 / 윈도우서버설치 / 윈도우서버컴퓨터 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이스트 시큐리티 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 임베디드 / 저가서버 / 저렴한서버 / 정품서버 / 정품서버옵션 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 케어팩 / 타워서버 / 타워형서버 / 팔로알토 / 페도라설치 / 프로라이언트
'설치 및 기술 자료 > Linux' 카테고리의 다른 글
[Linux] systemd 서비스 등록 및 타이머 자동 실행 (0) | 2025.05.21 |
---|---|
[Linux] SSH 버전 업그레이드: 보안을 지키는 가장 확실한 방법 (0) | 2025.05.12 |
[Linux] Docker Scout 기반 이미지 보안 진단 (0) | 2025.04.25 |
[Linux] Wazuh 설치 및 agent 연동 (0) | 2025.04.24 |
[Linux] Rocky 9.5 - VNC서버 설치 및 원격 연결 (0) | 2025.04.10 |
댓글