이 글의 내용은 haproxy 로드 밸런싱 mysql을 사용하는 방법에 대한 것입니다. 특정 참고 가치가 있으므로 도움이 필요한 친구에게 도움이 되길 바랍니다.
시스템은 마스터-다중-슬레이브 모델입니다. 읽기와 쓰기의 분리는 애플리케이션 수준에서 구현됩니다. 삽입, 삭제, 업데이트 및 변경은 마스터 라이브러리로 이동하여 슬레이브 라이브러리를 선택합니다. 그런 다음 슬레이브 라이브러리에 대한 로드 밸런싱을 수행하고 keepalived를 사용하여 haproxy를 결합했습니다.
더 이상 고민하지 말고 시작해 보세요.
시스템 환경 : centos7
그런데 언제 haproxy 공식 커뮤니티 홈페이지가 차단됐는지 모르겠네요... 아쉽게도 이 주소를 통해 haproxy의 최신 안정 버전을 다운로드 받으실 수 있습니다.
# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.9.tar.gz
친구들이 설치하기 전에 readme 파일을 읽어보는 것이 좋습니다
# cat /usr/src/haproxy-1.8.9/README
haproxy를 설치하세요. 여기에서 접두사 키워드 PREFIX는 설치 디렉터리를 대문자로 지정합니다. 일반적으로 일반 소스 코드 설치의 경우 구성 명령 뒤에 "--prefix" 옵션을 추가하여
# tar -zxf haproxy-1.8.9.tar.gz -C /usr/src/ # cd /usr/src/haproxy-1.8.9/ # make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy # make install PREFIX=/usr/local/haproxy
haproxy 프로그램 사용자 및 구성 파일 디렉터리 생성
# useradd -M -s /sbin/nologin haproxy # mkdir /etc/haproxy
이번 버전에서는 haproxy 구성 파일을 제공하지 않습니다. 수동으로 생성해야 하는 패키지 예제
# touch /etc/haproxy/haproxy.cfg # more /etc/haproxy/haproxy.cfg #global log /dev/log local0 info log /dev/log local1 notice pidfile /var/run/haproxy.pid maxconn 400000 user haproxy group haproxy nbproc 1 daemon #defaults mode http log global option http-server-close option redispatch retries 0 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 300s timeout check 10s maxconn 100000 listen mysql_select bind *:3306 mode tcp balance roundrobin #balance source #option mysql-check user haproxy timeout server 15s timeout connect 15s server mysql162 192.168.5.162:3306 check port 3306 inter 5000 fall 5 server mysql163 192.168.5.163:3306 check port 3306 inter 5000 fall 5 server mysql164 192.168.5.164:3306 check port 3306 inter 5000 fall 5 listen stats mode http bind 0.0.0.0:7979 stats enable stats hide-version stats uri /haproxy?hello stats realm Haproxy\ Statistics stats auth qkc:pwd@123 stats admin if TRUE
기본적으로 haproxy 로그는 시스템의 syslog에 출력되는데, 이는 보기에 그리 편리하지 않습니다. haproxy
로그를 더 잘 관리하기 위해, 일반적으로 생산 라인에서 독립적으로 정의합니다. 정의 방법은 다음과 같습니다.
(1) 로그 구성 옵션에 대해 haproxy.cfg를 수정하고 글로벌에 다음 구성을 추가하고 정보 및 알림 로그를 다른 파일에 기록합니다. .
log /dev/log local0 info log /dev/log local1 notice
(2) rsyslog 구성 수정
관리를 용이하게 하기 위해 haproxy 관련 구성을 /etc/rsyslog.d/haproxy.conf에 독립적으로 정의합니다. 구성의 이 부분은 정보 및 알림 로그를 각각 /var/log/haproxy181/{haproxy181-info.log,haproxy181-notice.log} 파일에 기록합니다. 여기서 "& ~"는 로그가 로그 파일, rsyslog 이 메시지 처리를 중지합니다. 여기에 구성된 구문은 rainerscript 스크립트 언어로 작성되었습니다.
# vim /etc/rsyslog.d/haproxy.conf if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy181/haproxy181-info.log& ~if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy181/haproxy181-notice.log& ~
haproxy.cfg 구성 파일의 구문이 올바른지 확인하세요
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c
문제가 없다면 -c 옵션을 제거하고 haproxy를 시작하세요
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
[root@server181 haproxy]# ss -antulp | grep haproxy tcp LISTEN 0 128 *:3306 *:* users:(("haproxy",pid=3315,fd=4)) tcp LISTEN 0 128 *:7979 *:* users:(("haproxy",pid=3315,fd=6))
haproxy가 자동으로 시작되도록 구성하세요 boot
# chmod +x /etc/rc.d/rc.local # echo '/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg' >> /etc/rc.d/rc.local
Connect 테스트 haproxy
# for i in $(seq 1 10); do mysql -utest -p123456 -h192.168.5.181 -e 'select @@server_id;'; done | egrep '[0-9]' 3306164 3306162 3306163 3306164 3306162 3306163 3306164 3306162 3306163 3306164
그런 다음 서버를 사용하여 haroxy와 동일한 작업을 수행하고 keepalived를 통합하세요. 원격 시스템은 mysql 클라이언트를 사용하여 로드 밸런싱 VIP에 연결하여 로그인한 후 상태 확인, 장애 조치 및 기타 프로젝트 테스트를 하나씩 수행합니다.
요약:
haproxy는 부하가 매우 높은 시나리오에서도 CPU 부하가 매우 낮습니다. 즉, 사용자 공간 점유율은 5%이고 시스템 공간 점유율은 95%입니다. 이는 haproxy 프로세스 소비가 더 많다는 것을 의미합니다. 시스템 공간 소비보다 20배 이상 적습니다. 따라서 OS의 성능 튜닝은 매우 중요합니다. 사용자 공간 점유율이 두 배가 되더라도 CPU 점유율은 10%에 불과합니다. 이는 레이어 7 처리가 성능에 미치는 영향이 제한적인 이유이기도 합니다. 결과적으로 haproxy의 레이어 7 성능은 고급 시스템의 하드웨어 부하 분산 장치를 쉽게 초과할 수 있습니다.
Haproxy의 tcp 프록시 지원 기능을 사용하면 mysql 읽기 라이브러리에 대한 로드 밸런싱도 수행할 수 있으며 성능이 꽤 좋습니다.
위 내용은 haproxy 로드 밸런싱 mysql을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!