haproxy 로드 밸런싱 mysql을 사용하는 방법

坏嘻嘻
풀어 주다: 2018-09-15 15:54:59
원래의
2961명이 탐색했습니다.

이 글의 내용은 haproxy 로드 밸런싱 mysql을 사용하는 방법에 대한 것입니다. 특정 참고 가치가 있으므로 도움이 필요한 친구에게 도움이 되길 바랍니다.

시스템은 마스터-다중-슬레이브 모델입니다. 읽기와 쓰기의 분리는 애플리케이션 수준에서 구현됩니다. 삽입, 삭제, 업데이트 및 변경은 마스터 라이브러리로 이동하여 슬레이브 라이브러리를 선택합니다. 그런 다음 슬레이브 라이브러리에 대한 로드 밸런싱을 수행하고 keepalived를 사용하여 haproxy를 결합했습니다.

haproxy 로드 밸런싱 mysql을 사용하는 방법

더 이상 고민하지 말고 시작해 보세요.

시스템 환경 : 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿