두 개의 DB 서버를 HAProxy를 활용해 로드밸런싱
로드 밸런서 동작 원리
서버 앞 단에서 사용자들을 분산 시키는 서비스 혹은 장치
로드밸런서에 redirect 할 IP들을 설정한 후
로드 밸런서의 IP로 접속을 시도하면 설정해놓은 IP로 규칙에 따라 redirect
이를 통해 서비스의 분산 처리가 가능
같은 Gateway 안에서 로드밸런서의 IP를 설정
패키지 설치
dnf install -y haproxy
설정 파일 수정
vim /etc/haproxy/haproxy.cfgmode를 http에서 tcp로 수정
bind를 sql 기본 포트인 3306으로 수정
backend app에 연결할 DB IP와 port 입력
여기까지 진행하고 haproxy를 실행하면 semanage 보안 문제로 에러 발생!
semanage를 위한 패키지 설치
dnf install -y policycoreutils-python-utilssemanage 설정 변경
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
로드밸런서 IP로 DB 접속 시도
mysql -u web_user -p -h 192.168.10.20첫 번째 시도 결과 db1의 데이터가 보이는 모습
두 번째 시도 결과 db2의 데이터가 보이는 모습
성공적으로 DB 로드밸런싱 성공!