이 글의 내용은 haproxy 로드 밸런싱 mysql을 사용하는 방법에 대한 것입니다. 특정 참고 가치가 있으므로 도움이 필요한 친구에게 도움이 되길 바랍니다.
시스템은 마스터-다중-슬레이브 모델입니다. 읽기와 쓰기의 분리는 애플리케이션 수준에서 구현됩니다. 삽입, 삭제, 업데이트 및 변경은 마스터 라이브러리로 이동하여 슬레이브 라이브러리를 선택합니다. 그런 다음 슬레이브 라이브러리에 대한 로드 밸런싱을 수행하고 keepalived를 사용하여 haproxy를 결합했습니다.
더 이상 고민하지 말고 시작해 보세요.
시스템 환경 : centos7
그런데 언제 haproxy 공식 커뮤니티 홈페이지가 차단됐는지 모르겠네요... 아쉽게도 이 주소를 통해 haproxy의 최신 안정 버전을 다운로드 받으실 수 있습니다.
1
# wget https:
//www.haproxy.org/download/1.8/src/haproxy-1.8.9.tar.gz
로그인 후 복사
친구들이 설치하기 전에 readme 파일을 읽어보는 것이 좋습니다
1
# cat /usr/src/haproxy-1.8.9/README
로그인 후 복사
haproxy를 설치하세요. 여기에서 접두사 키워드 PREFIX는 설치 디렉터리를 대문자로 지정합니다. 일반적으로 일반 소스 코드 설치의 경우 구성 명령 뒤에 "--prefix" 옵션을 추가하여
1
2
3
4
# 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 프로그램 사용자 및 구성 파일 디렉터리 생성
1
2
# useradd -M -s /sbin/nologin haproxy
#
mkdir
/etc/haproxy
로그인 후 복사
이번 버전에서는 haproxy 구성 파일을 제공하지 않습니다. 수동으로 생성해야 하는 패키지 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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를 수정하고 글로벌에 다음 구성을 추가하고 정보 및 알림 로그를 다른 파일에 기록합니다. .
1
2
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 스크립트 언어로 작성되었습니다.
1
2
3
4
5
# 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 구성 파일의 구문이 올바른지 확인하세요
1
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c
로그인 후 복사
문제가 없다면 -c 옵션을 제거하고 haproxy를 시작하세요
1
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
로그인 후 복사
1
2
3
[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
1
2
#
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
1
2
3
4
5
6
7
8
9
10
11
#
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!