ホームページ >運用・保守 >Linuxの運用と保守 >haproxy 負荷分散 mysql の使用方法

haproxy 負荷分散 mysql の使用方法

坏嘻嘻
坏嘻嘻オリジナル
2018-09-15 15:54:592983ブラウズ

この記事の内容は、haproxy ロード バランシング mysql の使用方法に関するものです。必要な方は参考にしていただければ幸いです。

システムは 1 マスター、複数のスレーブ モデルで、読み取りと書き込みの分離はアプリケーション レベルで実装され、挿入、削除、更新、および変更はマスター ライブラリに移行します。奴隷図書館。次に、スレーブ ライブラリの負荷分散を行い、keepalived を使用して haproxy を結合しました。

haproxy 負荷分散 mysql の使用方法

早速、始めましょう。

システム環境: centos7

そうは言っても、haproxy の公式コミュニティ Web サイトがいつブロックされたのかはわかりません...残念ながら、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 はインストール ディレクトリを指定します。使用するのは大文字です。通常、ソース コードを通常にインストールする場合は、configure コマンドの後にオプション「--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 オプションを削除して、 start 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 を設定します

# chmod +x /etc/rc.d/rc.local
# echo '/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg' >> /etc/rc.d/rc.local

テストのために 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 に接続し、ログインし、ヘルス チェック、フェイルオーバー、その他のプロジェクト テストを 1 つずつ実行します。

概要:

haproxy は、非常に高負荷のシナリオであっても、中規模の負荷では CPU 負荷が非常に低く、ユーザー スペース占有率が 5%、システム スペース使用率が 95% であることも非常に一般的です。これは、haproxy プロセスの消費量がシステム スペース消費量の 20 分の 1 以上少ないことを意味します。したがって、OSのパフォーマンスチューニングは非常に重要です。ユーザー空間の占有率が 2 倍になっても、CPU 占有率はわずか 10% であり、これもレイヤー 7 処理がパフォーマンスに与える影響が限定的である理由の説明になります。その結果、haproxy のレイヤー 7 パフォーマンスは、ハイエンド システム上のハードウェア負荷分散デバイスを容易に超える可能性があります。

tcp プロキシをサポートする haproxy の機能により、mysql 読み取りライブラリの負荷分散も実行でき、非常に優れたパフォーマンスを発揮します。

以上がhaproxy 負荷分散 mysql の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。