2017-02-28 5 views
0

私のnginxはNFS経由でマウントされた/wwwからのリクエストを処理します。ルートフォルダでnginxフェールオーバーを実行するには?

また、/www2もありますが、これはNFSでも、別の(バックアップ)サーバーからマウントされています。それは/wwwと同じファイルを持っています。

にはどうすれば/WWWが壊れている場合nginxのは、自動的に/www2/WWWからルートディレクトリをフェイルオーバーすることができますか?

"root /"と "try_files/www/ethaniel $ uri/www2/ethaniel $ uri"を設定しようとしましたが、動作しませんでした。 nginxの設定ファイルを経由して

server { 
    listen 80; 
    server_name .ethaniel.com; 
    root /www/ethaniel; 

    location/{ 
     index index.php; 
     autoindex off; 
    } 

    location ~* ^.+\.(php)$ { 
     include /etc/nginx/fastcgi.conf.include; 
    } 
} 

答えて

0

そのない可能性がありますが、常にスクリプトは次のことができます。ここでは

は私の設定です。

#!/bin/sh 

#check nfs mount status 
df -P -T /storage-pool/nfs-1 | tail -n +2 | awk '{print $2}' | grep nfs | wc -l > /root/status/nfs-1 
df -P -T /storage-pool/nfs-2 | tail -n +2 | awk '{print $2}' | grep nfs | wc -l > /root/status/nfs-2 

#give time to fetch nfs content 
sleep 5 

CHECK_FILE_1=`cat /root/status/nfs-1` 
CHECK_FILE_2=`cat /root/status/nfs-2` 

CHECK_NGINX_1=`grep 'nfs-1' /etc/nginx/sites-enabled/default.conf | wc -l` 
CHECK_NGINX_2=`grep 'nfs-2' /etc/nginx/sites-enabled/default.conf | wc -l` 

if [ $CHECK_FILE_1 -ne 1 ] && [ $CHECK_NGINX_1 -eq 1 ] && [ $CHECK_FILE_2 -eq 1 ] 
    then 
    sed -i 's/nfs-1/nfs-2/g' /etc/nginx/sites-enabled/default.conf 
     nginx -t && echo 'move to nfs-2' 
     nginx -s reload 

elif [ $CHECK_FILE_2 -ne 1 ] && [ $CHECK_NGINX_2 -eq 1 ] && [ $CHECK_FILE_1 -eq 1 ] 
    then 
    sed -i 's/nfs-2/nfs-1/g' /etc/nginx/sites-enabled/default.conf 
     nginx -t && echo 'move to nfs-1' 
     nginx -s reload 

elif [ $CHECK_FILE_1 -ne 1 ] && [ $CHECK_FILE_2 -ne 1 ] 
     then 
     echo 'All nfs-server down' 

else 
    echo 'OK' 

fi 

環境に合わせてパスを変更してください。

関連する問題