간단하다.
keepalived 설치 및 설정 후 haproxy를 설치하고 설정을 마치면 된다.
위 그림과 같은 구조를 만들었을 경우 master 노드로 설정된 호스트가 가상 IP를 가지고 있다가
마스터노드의 keepalived가 다운되거나, 호스트 자체가 다운되는 경우 자연스레 백업 노드로 연결이 넘어가게된다.
알아도 삶에 도움 1도 안되는 얕고 잡스러운 지식, 그리고 쓸데 없는 이야기.
간단하다.
keepalived 설치 및 설정 후 haproxy를 설치하고 설정을 마치면 된다.
위 그림과 같은 구조를 만들었을 경우 master 노드로 설정된 호스트가 가상 IP를 가지고 있다가
마스터노드의 keepalived가 다운되거나, 호스트 자체가 다운되는 경우 자연스레 백업 노드로 연결이 넘어가게된다.
HAProxy는 여러 서버에 대해 요청을 확산시키는 TCP 및 HTTP 기반 애플리케이션들을 위해 고가용성 로드밸런서와 리버스 프록시를 제공하는 자유-오픈 소스 소프트웨어이다. C 프로그래밍 언어로 개발되어 있으며 빠르고 효율적인 것으로 유명하다.
공식 사이트 참조
haproxy를 통해 부하를 분산하는 등의 용도로 서비스 효율을 높일 수 있다.
여기에서 다운 받아도 되며, yum epel-release에 포함되어 있으므로 epel-release 리포지터리 추가 후 yum 이나 dnf 명령 등을 통해 설치할 수 있다.
sudo dnf install -y haproxy 마지막 메타자료 만료확인 7:58:42 이전인: 2022년 07월 28일 (목) 오전 12시 23분 23 초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 구조 버전 레포지터리 크기 ================================================================================ 설치 중: haproxy x86_64 1.8.27-4.el8 appstream 1.4 M 연결 요약 ================================================================================ 설치 1 꾸러미 총계 내려받기 크기: 1.4 M 설치된 크기 : 4.2 M ...중략... 설치되었습니다: haproxy-1.8.27-4.el8.x86_64 완료되었습니다!
서비스가 구동 될 모든 서버에 설치해준다.
자동으로 서비스가 구동될 수있도록 서비스를 등록 해준다.
sudo systemctl enable haproxy.service 또는 sudo service haproxy start
기본적으로 /etc/haproxy/haproxy.cfg 가 존재한다.
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 #--------------------------------------------------------------------- # status web 설정 # haproxy 서비스 상태, 백엔드 서비스의 상태 등을 웹을 통해 확인할 수 있다. # 필수는 아니다. #--------------------------------------------------------------------- listen hastats mode http bind *:8088 stats enable stats show-legends stats uri /hastat # 서버 주소가 192.168.0.1이라면 http://192.168.0.1/hastat으로 접속한다. stats auth admin:admin # hastats 웹에 접속 시 인증으로 제한하려면 계정과 패스워드를 지정한다. #--------------------------------------------------------------------- # 프론트 엔드 설정 # 프론트 엔드에서 설정한 포트로 연결이 들어올 경우 백엔드로 보낸다 #--------------------------------------------------------------------- # 외부에서 haproxy를 통해 연결을 시도할 때 사용하는 포트 frontend kubeproxy bind *:16443 default_backend kubeproxy mode tcp #--------------------------------------------------------------------- # 백엔드 설정 # 프론트엔드에서 defaultbackend 타겟으로 설정 된 백엔드 정보 #--------------------------------------------------------------------- backend kubeproxy balance roundrobin # Balance Option # Roundrobin : 순차적으로 분배 # static-rr : 서버에 부여된 가중치에 따라서 분배 # leastconn : 접속수가 가장 적은 서버로 분배 # source : 운영중인 서버의 가중치를 나눠서 접속자 IP 해싱(hashing)해서 분배 # uri : 접속하는 URI를 해싱해서 운영중인 서버의 가중치를 나눠서 분배 (URI의 길이 또는 depth로 해싱) # url_param : HTTP GET 요청에 대해서 특정 패턴이 있는지 여부 확인 후 조건에 맞는 서버로 분배 (조건 없는 경우 round_robin으로 처리) # hdr : HTTP 헤더에서 hdr(<name>)으로 지정된 조건이 있는 경우에 대해서만 분배 (조건없는 경우 round robin 으로 처리) # rdp-cookie : TCP 요청에 대한 RDP 쿠키에 따른 분배 mode tcp option tcp-check option tcplog # 외부에서 16443 포트로 연결을 시도하면 아래의 서버에 순차적으로 연결해준다. server storage01 192.168.0.1:6443 check server storage02 192.168.0.2:6443 check server storage03 192.168.0.3:6443 check frontend web-console bind *:18080 default_backend web-console mode tcp backend web-console balance roundrobin mode tcp option tcp-check option tcplog server storage01 192.168.1.1:8080 check server storage02 192.168.1.2:8080 check server storage03 192.168.1.3:8080 check
백엔드로 동작할 모든 서버에 동일한 설정 파일을 넣어준다.
haproxy 웹 서비스를 통해 정보 확인이 가능한다.
댓글을 달려면 로그인해야 합니다.