728x90
우분투에서 HAProxy를 사용하여 고가용성(High Availability, HA)을 구성하는 방법
테스트 환경
- 운영체제 버전 정보
$ lsb_release -d
Description: Ubuntu 22.04.3 LTS
- 시스템 현황
호스트 이름 | 네트워크 인터페이스 | 아이피 주소 | Port(container) |
node01 | eth0 | 172.19.0.3 | 8181(80), 8443(443), 9001(9000) |
node02 | eth0 | 172.19.0.2 | 8182(80), 8444(443), 9002(9000) |
vip | eth0:1 | 172.19.0.10 | domain : ha.sangchul.kr |
HAProxy 패키지 설치
sudo apt-get update
sudo apt-get install -y haproxy
- haproxy 버전 정보
haproxy -v
$ haproxy -v
HAProxy version 2.4.24-0ubuntu0.22.04.1 2023/10/31 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: http://www.haproxy.org/bugs/bugs-2.4.24.html
Running on: Linux 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64
VIP(Virtual IP) 설정
VIP는 고가용성을 제공하기 위해 노드에서 VIP를 활성화 설정합니다.
sudo ip addr add 172.19.0.10/24 dev eth0 label eth0:1
sudo ip addr show eth0:1
HAProxy 구성
HAProxy의 구성 파일(/etc/haproxy/haproxy.cfg)을 수정하여 로드 밸런싱 및 고가용성을 구성합니다.
- haproxy.cfg 편집
vim /etc/haproxy/haproxy.cfg
- node01 haproxy 구성
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend http-in
bind *:80
acl url_admin path_beg /admin
use_backend bk_admin if url_admin
default_backend bk_web
frontend https-in
bind *:443 ssl crt /etc/ssl/ha_sangchul_kr/unified_ha_sangchul_kr.pem
acl url_admin path_beg /admin
use_backend bk_admin if url_admin
default_backend bk_web
backend bk_web
balance roundrobin
server web1 172.19.0.3:8080 check
server web2 172.19.0.2:8080 check
backend bk_admin
balance roundrobin
server web1 172.19.0.3:8080 check
server web2 172.19.0.2:8080 check
listen stats
#bind *:1936
bind *:9000
stats enable
stats uri /haproxy_stats
stats refresh 10s
haproxy -c -f /etc/haproxy/haproxy.cfg -V
- node02 haproxy 구성
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend http-in
bind *:80
acl url_admin path_beg /admin
use_backend bk_admin if url_admin
default_backend bk_web
frontend https-in
bind *:443 ssl crt /etc/ssl/ha_sangchul_kr/unified_ha_sangchul_kr.pem
acl url_admin path_beg /admin
use_backend bk_admin if url_admin
default_backend bk_web
backend bk_web
balance roundrobin
server web1 172.19.0.3:8080 check
server web2 172.19.0.2:8080 check
backend bk_admin
balance roundrobin
server web1 172.19.0.3:8080 check
server web2 172.19.0.2:8080 check
listen stats
bind *:9000
stats enable
stats uri /haproxy_stats
stats refresh 10s
haproxy -c -f /etc/haproxy/haproxy.cfg -V
HAProxy 재시작
sudo systemctl restart haproxy
HAProxy 상태 확인
sudo systemctl status haproxy
HAProxy에 통계 페이지
웹 브라우저에서 http://VIP:9000에 접속하여 HAProxy 통계 페이지를 확인
http://192.168.100.201:9001/haproxy_stats
http://192.168.100.201:9002/haproxy_stats
728x90
'리눅스' 카테고리의 다른 글
우분투에서 로케일 및 문자셋을 변경하는 방법 (0) | 2024.01.31 |
---|---|
우분투에서 Keepalived와 HAProxy를 사용하여 고가용성(High Availability, HA)을 구현하는 방법 (0) | 2024.01.29 |
html2text 명령어 (0) | 2024.01.29 |
HAProxy에서 SSL 인증서를 적용하는 방법 (0) | 2024.01.29 |
[draft] 우분투에서 Keepalived를 사용하여 고가용성(High Availability, HA)을 구성하는 방법 (0) | 2024.01.29 |