1. 목표

두 개의 DB 서버를 HAProxy를 활용해 로드밸런싱

로드 밸런서 동작 원리

서버 앞 단에서 사용자들을 분산 시키는 서비스 혹은 장치
로드밸런서에 redirect 할 IP들을 설정한 후
로드 밸런서의 IP로 접속을 시도하면 설정해놓은 IP로 규칙에 따라 redirect
이를 통해 서비스의 분산 처리가 가능

2. 네트워크 설정

같은 Gateway 안에서 로드밸런서의 IP를 설정

3. HA Proxy 설정

패키지 설치

dnf install -y haproxy

설정 파일 수정

vim /etc/haproxy/haproxy.cfg

mode를 http에서 tcp로 수정

bind를 sql 기본 포트인 3306으로 수정
backend app에 연결할 DB IP와 port 입력

여기까지 진행하고 haproxy를 실행하면 semanage 보안 문제로 에러 발생!

semanage를 위한 패키지 설치

dnf install -y policycoreutils-python-utils

semanage 설정 변경

semanage boolean -m --on haproxy_connect_any

haproxy가 3306 port에 대한 응답을 하는지 확인

ss -nltp | grep 3306

방화벽 설정까지 하면 완료

firewall-cmd --add-port=3306/tcp
firewall-cmd --add-port=3306/tcp --permanent

4. 테스트

로드밸런서 IP로 DB 접속 시도

mysql -u web_user -p -h 192.168.10.20

첫 번째 시도 결과 db1의 데이터가 보이는 모습

두 번째 시도 결과 db2의 데이터가 보이는 모습

성공적으로 DB 로드밸런싱 성공!

0개의 댓글