CentOS上のPerconaまたはGaleraのHAPRoxy。 Zabbixでの設定と監視





PerconaやGaleraなどのマルチマスターMySQLサーバーのバランサーとしてHAProxyを使用する方法についての非常に短い記事。





この指示は、 Acronisの壁にZabbixを実装する過程で生まれたものです。

審査と私の研究の過程で、彼女は自分の生命の権利を証明し、毎日私たちに安全に忠実に奉仕してくれました。



HAProxyに慣れていない人のために、製品の目的についての引用:

プロジェクトの負荷または出席者の増加に伴い、遅かれ早かれ、垂直スケーリング(メモリ、ディスク速度などのサーバーリソースの増加)は特定の制限に反し、目立った増加はありません。 この場合、水平スケーリングが使用されます-新しいサーバーを追加し、それらの間で負荷を再分散します。

電力の増加に加えて、水平スケーリングはシステムに信頼性を追加します。サーバーの1つに障害が発生した場合、負荷は稼働中のサーバーと負荷の間で分散され、アプリケーションが稼働します。




言葉からアクションまで、インストールと構成は非常に簡単です。









前の記事で、私は純粋なCentOS 6.4で実行した予備操作を詳細に説明しました。私の推奨事項もここに関連します。すべてのパッケージは、 前の記事の推奨事項を考慮して示されます。



リポジトリが接続され、システムが最新の状態になっているため、HAProxyインストールに移動します。



#haproxyを置く

yum install haproxy mariadb-client php-mysql php-cli -y




#設定を書く

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.old


[root @ rs-haproxy〜]#nano /etc/haproxy/haproxy.cfg

グローバル

デーモン

maxconn 4096



#デバッグ情報を表示したい場合、この項目はコメントする価値があります

静かな



#そしてこの反対、コメント解除

#デバッグ



ユーザーhaproxy

グループhaproxy



#このソケットをzabbixの監視に使用します

stats socket / var / run / haproxy



pidfile /var/run/haproxy.pid



デフォルト

モードhttp

オプションtcplog

グローバルログ

オプションdontlognull再試行3オプションredispatch

maxconn 2000

contimeout 5000

clitimeout 50000

srvtimeout 50,000

オプションtcplog



#サーバー上の有効なアドレスとhaproxyがリッスンするポートを指定します

MySQLをリッスンしているアドレスをリッスンします-:3306



モードtcp



#roundrobin-すべてのサーバーに順番に書き込みます。これは読み取りモードでは適切ですが、この方法でデータベースに書き込むと問題が発生する可能性があります

#ラウンドロビンのバランス



#leastconnこのモードは、haproxyをフェールオーバープロキシとして使用する場合に最適に機能します。最後に動作しているサーバーのみを使用します。

バランス最小



#httpchkは、haproxyが各リクエストを送信する前にサーバーの準備状況をチェックするようにします

オプションhttpchk



#以下は、サーバー、ポート、および実行可能性を確認するために接続が行われるポートのリストです。

サーバーアドレスアドレス:3306チェックポート50005インター12000上昇3下降3

サーバーアドレスアドレス:3306チェックポート50005インター12000上昇3下降3



#バックアップフラグ付きのサーバーは、他のサーバーが利用できない場合にのみ使用されます

サーバーアドレスアドレス:3306チェックポート50005インター12000上昇3下降3バックアップ




では、perconaまたはgaleraのサーバーに移りましょう。



#データベースをチェックするメカニズムを設定します。これには、xinetdが必要です

yum install -y xinetd




[root @ xtrabackup-node-01〜]#nano /etc/xinetd.d/mysqlchk

#デフォルト:オン

#説明:mysqlchk

サービスmysqlchk

{

無効化=いいえ

フラグ= REUSE

socket_type =ストリーム



#上記で指定した検証ポート

ポート= 50005



待機=いいえ

ユーザー=誰も

サーバー= / usr / bin / clustercheck

log_on_failure + = USERID



#MySQLサービスステータスチェックが許可されるアドレス

only_from = 10.100.100.0/24



per_source = UNLIMITED

}




#このエントリを追加することは非常に重要です。そうしないと失敗します

root @ xtrabackup-node-01〜]#nano / etc / services

mysqlchk 50005 / tcp#mysqlchk




#スタートアップにサービスを追加して開始する

chkconfig xinetd on

/etc/init.d/xinetd start




#検証ポートへのアクセスを許可

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 50005 -j ACCEPT

サービスiptables保存




#clustercheck権限を追加

GRANT PROCESS ON *。* TO 'clustercheckuser' @ 'localhost' IDENTIFIED BY 'clustercheckpassword!';

特権をフラッシュします。




#すべてがうまくいったかどうかを確認してください。

[root @ xtrabackup-node-01〜]#/ usr / bin / clustercheck

HTTP / 1.1 200 OK

コンテンツタイプ:テキスト/プレーン

接続:閉じる

コンテンツの長さ:40



Percona XtraDBクラスターノードが同期されます。




#さて、haproxyホストからの動作を確認しましょう

[root @ rs-haproxy〜]#telnetアドレス50005

住所を試しています...

アドレスに接続しました。

エスケープ文字は「^]」です。

HTTP / 1.1 200 OK

コンテンツタイプ:テキスト/プレーン

接続:閉じる

コンテンツの長さ:40



Percona XtraDBクラスターノードが同期されます。

外部ホストによって接続が閉じられました。





できた! すべてのpercona / galeraノードでこの操作を行う必要があります



ZabbixでのMYSQLのHAProxyモニタリング





#これはスクリプトのメインツールです。インストールしてください

yum install -y socat




#zabbixのsudoをまだ設定していない場合は設定します

usermod -s / bin / bash zabbix

echo 'zabbix ALL =(ALL)NOPASSWD:ALL' >> / etc / sudoers

sed -i 's / Defaults \ requiretty /#Defaults \ requiretty / g' / etc / sudoers




#スクリプト用のフォルダーを作成する

mkdir -p / etc / zabbix / scripts /

chmod 750 / etc / zabbix /スクリプト/




#実際にスクリプト自体

rm -f /etc/zabbix/scripts/haproxy.mysql

nano /etc/zabbix/scripts/haproxy.mysql



if [[ -z $1 || -z $2 ]]; then servers=`echo "show stat" | sudo socat /var/run/haproxy stdio | sed 's/,/\ /g' | awk '{print $2}' | grep -v -e "pxname" -e '^$'` if [[ -n ${servers} ]]; then JSON="{ \"data\":[" for DEV in ${servers}; do JSON=${JSON}"{ \"{#SRV}\":\"${DEV}\"}," done JSON=${JSON}"]}" echo ${JSON} fi exit 0 else server="$2" # echo $server if [ ${1} = "qcur" ]; then # echo $1 echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}"| sed 's/,/\ /g' | awk '{print $3}' exit 0 fi if [ ${1} = "qmax" ]; then echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}" | sed 's/,/\ /g' | awk '{print $4}' exit 0 fi if [ ${1} = "scur" ]; then echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}" | sed 's/,/\ /g' | awk '{print $5}' exit 0 fi if [ ${1} = "smax" ]; then echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}" | sed 's/,/\ /g' | awk '{print $6}' exit 0 fi if [ ${1} = "econ" ]; then echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}" | sed 's/,/\ /g' | awk '{print $14}' exit 0 fi if [ ${1} = "qlimit" ]; then echo "show stat" | sudo socat /var/run/haproxy stdio | grep "MySQL,${server}" | sed 's/,/\ /g' | awk '{print $26}' exit 0 fi fi
      
      







スクリプト自体が利用可能なサーバーを検出し、それらをzabbixに渡します

これを確認してください:



[root @ rs-haproxy〜]#echo "show stat" | sudo socat / var / run / haproxy stdio | sed 's /、/ \ / g' | awk '{print $ 2}' | grep -v -e "pxname" -e '^ $'

前線

10.100.100.246

バックエンド




#zabbix-agentの最小設定

エコータイムアウト= 30 >> /etc/zabbix/zabbix_agentd.conf

echo Include = / etc / zabbix / zabbix_agentd.d / >> /etc/zabbix/zabbix_agentd.conf




#新しいスクリプトを実行する権利を適用します

chown zabbix:zabbix -R / etc / zabbix / scripts /

chmod + x /etc/zabbix/scripts/haproxy.mysql




#zabbixにUserParameterを渡します

mkdir -p /etc/zabbix/zabbix_agentd.d/

rm -f /etc/zabbix/zabbix_agentd.d/haproxy.mysql.conf

/etc/zabbix/zabbix_agentd.d/haproxy.mysql.confをタッチします


echo 'UserParameter = haproxy.mysql [*]、/ etc / zabbix / scripts / haproxy.mysql "$ 1" "$ 2"' >> /etc/zabbix/zabbix_agentd.d/haproxy.mysql.conf




次に、スクリプトが正しく機能するかどうかを確認します。

su zabbix


#これが自動サーバー検出の仕組みです

bash-4.1 $ /etc/zabbix/scripts/haproxy.mysql

{「データ」:[{"{#SRV}": "FRONTEND"}、{"{#SRV}": "10.100.100.246"}、{"{#SRV}": "バックエンド"}、]}




#データを要求する

bash-4.1 $ /etc/zabbix/scripts/haproxy.mysql qcur FRONTEND

115





すべて順調に進んでいるようです! サービスを再起動してログを楽しむ

/etc/init.d/zabbix-agent restart && tail -f -n 100 /var/log/zabbix/zabbix_agentd.log




これは、テンプレートがhaproxyの下でどのように見えるかです





ここで、zabbixにインポートするためのテンプレートをダウンロードできます



ご清聴ありがとうございました!




All Articles