複数のnginxマスターとスレーブがあり、そのうちの1つがダウンしていますが、どのように対処しますか?
nginx + keepalivedを実装する
キープアライブの一般的なコマンド
service keepalived start
service keepalived stop
アクティブおよびスタンバイのnginxとkeepalivedを起動します。
メインのnginxがダウンしている場合は、keepalivedのkeepalived.confを使用してnginxを監視し
ます。サーバーノードを自動的に切り替えます
。2つのkeeplivedの仮想IPは同じです。メインのkeeplivedがダウンしている場合、仮想IPが割り当てられますスレーブサーバー
のnginxアクティブおよびスタンバイ自動再起動を
構成しますステップ3:構成ファイルを変更します:vim /etc/keepalived/keepalived.conf
Keepalived.conf構成ファイルの説明:
(1)マスター
! Configuration File for keepalived
global_defs {
router_id bhz005 ##标识节点的字符串,通常为hostname
}
keepalivedは、スクリプトを定期的に実行し、スクリプトの実行結果を分析して、vrrp_instanceの優先度を動的に調整します。ここでの重みは、以下の優先度に関連しています。チェックスクリプトを1回実行すると、重みは-20になり、100-20から80に変更されます。マスターの優先度は80で、バックアップの優先度よりも低くなります。優先度90の場合、アクティブ/スタンバイの自動切り替えが実行されます。
スクリプトの実行結果が0で、重み構成の値が0より大きい場合、それに応じて優先度が高くなります。
スクリプトの実行結果が0でなく、重み構成の値が0未満の場合、それに応じて優先度が低くなります。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
interval 2 ##检测时间间隔
weight -20 ## 如果条件成立则权重减20(-20)
}
仮想ルートVI_1をカスタム識別子として定義します。
vrrp_instance VI_1 {
state MASTER ## 主节点为MASTER,备份节点为BACKUP
## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth6)
interface eth6
virtual_router_id 172 ## 虚拟路由ID号
mcast_src_ip 192.168.1.172 ## 本机ip地址
priority 100 ##优先级配置(0-254的值)
Nopreempt ##
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {
auth_type PASS
auth_pass bhz ## 真实生产环境下对密码进行匹配
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.170 ## 虚拟ip(vip),可以指定多个
}
}
(2)からのバックアップ
! Configuration File for keepalived
global_defs {
router_id bhz006
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth7
virtual_router_id 173
mcast_src_ip 192.168.1.173
priority 90 ##优先级配置
advert_int 1
authentication {
auth_type PASS
auth_pass bhz
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.170
}
}
(3)nginx_check.shスクリプト:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
(4)マスターのkeepalived構成ファイルをマスターマシンの/ etc / keepalived /フォルダーにコピーし(172)、バックアップのkeepalived構成ファイルをバックアップの/ etc / keepalived /フォルダーにコピーする必要があります。 machine(173)最後に、nginx_check.shスクリプトを2台のマシンの/ etc / keepalived /フォルダーにコピーします。
(5)nginx_check.shスクリプトの承認。実行可能権限を付与します。chmod+ x /etc/keepalived/nginx_check.sh(6)2
台のマシンでnginxを起動した後。両方のマシンでキープアライブを開始します
/usr/local/nginx/sbin/nginx
service keepalived start
ps -ef | grep nginx
ps -ef | grep keepalived
テストできます。最初に2台のマシンのipaコマンドを確認すると、仮想IPがあり、1台のマシンのkeepalivedを停止してから、次のコマンドをテストできます:service keepalivedstop。現在停止しているマシンは使用できなくなり、keepalivedは自動的に別のマシンに切り替わります。
Nginxはddosトラフィック攻撃を解決しますか?
#1秒あたりのIPリクエストの数を制限するlimit_req_zone $ binary_remote_addr zone = one:10m rate = 1r / s; #
同じIPによって同時に作成される接続
の数を制限するlimit_conn_zone $ binary_remote_addr zone = addr:10m;
nginxを採用-keeplived(複数ユニット)
Tomcatがダウンしていますか?(複数ユニット)
proxy_connect_timeout 1;接続時間
proxy_read_timeout1;このコマンドは、プロキシサーバーとの読み取りタイムアウト時間を設定します。これは、nginxがリクエストへの応答を取得するまで待機する時間を決定します。
proxy_send_timeout 1;この指定は、アップストリームサーバーにリクエストを送信するためのタイムアウト期間を設定します。
Tomcatがダウンしていますか?(単一ユニットの場合)
監視用のshell.shスクリプトを作成する必要があります
#!/ bin / shtomcat
プロセスIDを取得します/ usr / local /
tomcatTomcatID = $(ps -ef | grep tomcat | grep -w'tomcat '| grep -v'grep' | awk '{print KaTeX parse error:Expected' EOF '、got'} 'at position 2:2} ̲')tomcat startup program(this ...(date + '%F%H:%M:%S' )] "
if [[ KaTeX parse error:Expected'EOF '、got'# 'at position 18:…mcatID]]; then#̲ここでTOMCATプロセス... TomcatIDかどうかを判断するには、ページのチェックを続けます。 。」
起動が成功したかどうかを確認します(成功した場合、ページはステータス「200」を返します)??
TomcatServiceCode = $(curl -I -m 10 -o / dev / null -s -w%{http_code} $ WebUrl)
if [ T omcat Service C ode − eq 200]; thenecho "[info]ページのリターンコードはTomcatServiceCode-eq 200];その後、echo "[info]ページのリターンコードはT o m c a t S e r v i c e C o d e−e q 2 0 0 ] ;T H E N - E C H O " [ I N- F O ] pが直面しているリターン・バックのコードをあるTomcatServiceCode、Tomcatは...通常、成功したテストページを起動し、"
他
エコー「[エラー] Tomcatのページフォルト、ノート... 。ステータスコードTomcatサービスコード、エラーログはTomcatServiceCodeに出力され、エラーログはT o m c a t S e r v i c e C o d e 、間違った間違った日志がいる失われたうちにGetPageInfo「
エコー」[エラー]エラーページビュー、「Tomcatの再起動を開始した
キル-9 $ TomcatID#は、元のTomcatプロセスを殺す
SLEEPを3
RM -rf $ TomcatCache#クリーンアップTomcatのキャッシュ
SタルトT omcatfielseecho "[エラー] Tomcatプロセスが存在しません!Tomcatが自動的に再起動を開始します..." echo "[情報] StartTomcat fi else echo" [エラー] Tomcatプロセスが存在しません!Tomcatが自動的に再起動を開始します... "echo 「[情報]S T A R&LT T T O M C A T F I E L S E E C H O 」[ E R&LT R&LT O R&LT ] T O M C A Tに処理しない存在に!T O M C A Tが離間開始から移動重い開始。。。「E C H O" [ i n f o ] StartTomcat、お待ちください..."
#rm -rf $ TomcatCache
$ StartTomcat
fi
echo "------------------------ -------” ??
}