Linux HAProxy HA 구성하기
[CentOS] Linux HAProxy로 Load Balancing 하기 [HTTP / HTTPS / DNS]
[CentOS] Linux HAProxy 통계 확인 및 L4 LB 하기 [mariaDB]
- HAProxy에 대하여 간단하게 알아보았다. 이제는, HA 구성으로 Proxy Server의 이중화를 구성한다.
1. HAProxy & Keepalived 설치
1.1) HAProxy
yum -y install keepalived haproxy
- HAProxy와 Keepalived를 설치한다.
2. Keepalived 구성
2.1) Master Keepalive 파일 설정
cd /etc/keepalived/
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER # 현재 접속한 Proxy Server의 VRRP 상태 지정
interface ens33 # 현재 접속한 Proxy Server의 Interface
virtual_router_id 51
priority 200 # 현재 접속한 Proxy Server의 VRRP 우선 순위 값
advert_int 1 # VRRP 광고 간격 (기본값 1초)
authentication { # VRRP Authentication 인증 설정 블록
auth_type PASS # VRRP Authentication Method (PASS / AH)
auth_pass 1111 # VRRP Authentication String
}
unicast_src_ip 192.168.1.251 #현재 접속한 Proxy Server의 IP
unicast_peer {
192.168.1.252 # Backup Proxy Server의 IP
}
virtual_ipaddress {
192.168.1.254/24 # HA VRRP IP
}
track_script {
chk_haproxy
}
}
2.2) Master Keepalive 실행 및 확인
systemctl restart keepalived && systemctl enable keepalived
2.3) Master Keepalive IP 확인
ip -brief address show
- Master Server의 실제 IP와 Virtual IP를 확인한다.
2.4) Backup Keepalive 파일 설정
cd /etc/keepalived/
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS # VRRP Authentication Method (PASS / AH)
auth_pass 1111 # VRRP Authentication String
}
unicast_src_ip 192.168.1.252 #현재 접속한 Proxy Server의 IP
unicast_peer {
192.168.1.251 # Backup Proxy Server의 IP
}
virtual_ipaddress {
192.168.1.253/24 # HA VRRP IP
}
track_script {
chk_haproxy
}
}
2.5) Backup Keepalive IP 확인
ip -brief address show
- Backup Server의 실제 IP를 확인한다.
systemctl restart keepalived && systemctl enable keepalived
3. HAProxy 구성
3.1) HAProxy 설정
vim /etc/haproxy/haproxy.cfg
- Master & Backup Server 모두 파일을 수정한다.
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
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 which proxys to the backends
#---------------------------------------------------------------------
frontend FE-WEB-LB
bind *:80
mode http
default_backend BE-WEB-LB
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend BE-WEB-LB
mode http
option httpchk GET /
http-check expect status 200
#default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
balance roundrobin
server app1 192.168.1.150:80 check
server app2 192.168.1.151:80 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
listen stats *:9000 #통계 페이지 접속 웹 페이지 포트 번호
mode http
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats realm HAProxy Statistics
stats uri /monitor #통계 페이지 접속 웹 페이지 저장 디렉토리
stats auth admin:admin #통계 페이지 접속 시 필요한 Login 정보
systemctl start haproxy && systemctl enable haproxy
- HAProxy를 실행한 뒤, 접속해본다.
4. HAProxy 를 통한 LB 확인
4.1) LB 확인
- Virtual IP를 통하여 접속했고, Windows에서 운영 중인 IIS Server에 Roundrobin 방식으로 접근할 수 있다.
- 또한, Master 역할을 담당하고 있는 Master Proxy Server에서 지속적으로 VRRP 광고를 보내어 VRRP Health Check를 진행하고 있다. 이때, Master Proxy Server에서 Keepalived를 중지하였을 때를 최하단에서 기록해두었다. 그리고, Authentication String 값이 패킷에서 노출이 되었다. 이를 AH(Authentication Header)로 암호화하여 송/수신할 때 String 값이 노출되지 않도록 할 수 있다. 이 또한 최하단에 기록해두었다.
4.2) HAProxy 통계 보고서 확인
- IP:9000/monitor를 입력하여, Master Proxy Server로 접속이 가능하다.
- IP:9000/monitor를 입력하여, Backup Proxy Server로 접속이 가능하다.
- Virtual IP를 입력하여 접속할 경우, Master의 권한을 가지고 있는 Server로 접속이 된다. 또한, 접속 시 User와 Password를 요구하는 것을 패킷으로 확인할 수 있으며, 포트 번호 또한 확인 가능하다.
4.3) HAProxy 이중화 확인
- Master Proxy Server에서 Keepalived를 중지하였을 때, Master의 권한이 Backup Proxy Server로 이관되어서, 장애 발생으로 변경된 Master Proxy Server가 지속적으로 VRRP 광고를 진행한다. 하지만, Keepalived를 중지하였기 때문에, VRRP Protocol에 대한 응답을 받을 수 없다. 하지만, Master로 전환된 기 Backup Proxy Server가 살아있기 때문에 동일하게 외부에서 192.168.1.253으로 접근하여도 웹으로의 통신이 가능하며 LB 또한 가능하다.
4.4) VRRP Auth String 암호화
cd /etc/keepalived/
vim keepalived.conf
- Master에서만 인증 방식과 값을 변경하여 저장 후 재시작하였다. 변경된 점은 다음의 사진과 같이, 서로 자기 자신이 Master가 된 것처럼 광고 패킷을 송신하는데, 서로의 방식과 값이 일치하지 않아서 계속 찾고 있는 것이다.
authentication{
auth_type AH
auth_pass TIENE@@15
}
- 양쪽 모두 동일하게 변경한 후에는 정상적으로 VRRP Health Check가 진행되었다.
'IT > ㄴ Linux' 카테고리의 다른 글
[CentOS] Zabbix Agent 추가 및 살펴보기 [2/2] (0) | 2023.09.15 |
---|---|
[CentOS] Zabbix 모니터링 서버 설치하기 [1/2] (0) | 2023.09.15 |
[CentOS] Linux HAProxy 통계 확인 및 L4 LB 하기 [mariaDB] (0) | 2023.09.11 |
[CentOS] Linux HAProxy로 Load Balancing 하기 [HTTP / HTTPS / DNS] (0) | 2023.09.11 |
[CentOS] Linux SNMP 사용하기 [SNMP Tester / PRTG] (0) | 2023.09.07 |