準備作業:
192.168.16.128
192.168.16.129
2 台の仮想マシン。 nginxのインストール
nginxのインストール
yumソースファイルの更新:
rpm -ivh http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo
nginxのインストール:
yum -y install nginx
操作コマンド:
systemctl start nginx; #启动nginx systemctl stop nginx; #停止nginx
高可用性とは何ですか?
高可用性 HA (高可用性) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、システムがサービスを提供できない時間を短縮することを指します。デザイン。システムが常にサービスを提供できる場合、可用性は 100% ですが、予期しない状況が発生することがあります。したがって、サービスの障害を可能な限り減らすように努めることしかできません。
問題は解決しましたか?
実稼働環境では、外部サービスを提供するリバース プロキシとして nginx がよく使用されますが、nginx にはいつかサーバーのダウンタイムなどの障害が発生することは避けられません。 nginx がダウンすると、外部から提供されたすべてのインターフェイスにアクセスできなくなります。
サーバーが 100% 利用可能であることを保証することはできませんが、この悲劇を回避する方法を見つける必要があります。現在、私たちは keepalived を使用して nginx
の高可用性を実現しています。
デュアル マシン ホット バックアップ ソリューション
このソリューションは、国内企業の間で最も一般的な高可用性ソリューションです。デュアル マシン ホット バックアップとは、実際には1 台のサーバーはサービスを提供しており、もう 1 台は特定のサービスを待機状態にあり、一方のサーバーが利用できない場合、もう一方のサーバーが代わりにサービスを提供します。
キープアライブとは何ですか?
keepalived ソフトウェアは元々、LVS クラスタ システム内の各サービス ノードのステータスを管理および監視する LVS 負荷分散ソフトウェア用に設計されましたが、その後、高可用性を実現するために vrrp (仮想ルーター) が追加されました。プロトコル、仮想ルーター冗長化プロトコル)機能。したがって、キープアライブは、LVS ソフトウェアを管理できるだけでなく、他のサービス (nginx、haproxy、mysql など) の高可用性ソリューション ソフトウェアとしても使用できます。メカニズム
keepalived 高可用性サービス間のフェイルオーバー転送は、vrrp を通じて実装されます。
keepalived サービスが正常に動作している場合、メイン マスター ノードは継続的に (マルチキャスト) ハートビート メッセージをバックアップ ノードに送信し、バックアップ ノードがまだ生きていることを伝えます。 、ハートビート メッセージを送信できず、スタンバイ ノードはマスター ノードからのハートビートを検出し続けることができないため、独自の引き継ぎプログラムを呼び出して、マスター ノードの IP リソースとサービスを引き継ぎます。プライマリ マスター ノードが回復すると、バックアップ ノードはプライマリ ノードの障害時に引き継いだ IP リソースとサービスを解放し、元のバックアップの役割に戻ります。
実装プロセス
keepalived のインストール
yum -y install keepalivedホスト (192.168.16.128) keepalived 設定ファイルを変更する yum インストールにより、/etc/keepalived に設定ファイルが生成されます:
vi keepalived.confkeepalived.conf:
#检测脚本 vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动 interval 2 #(检测脚本执行的间隔,单位是秒) weight 2 #权重 } #vrrp 实例定义部分 vrrp_instance vi_1 { state master # 指定keepalived的角色,master为主,backup为备 interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡 virtual_router_id 66 # 虚拟路由编号,主从要一直 priority 100 # 优先级,数值越大,获取处理请求的优先级越高 advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数) #授权访问 authentication { auth_type pass #设置验证类型和密码,master和backup必须使用相同的密码才能正常通信 auth_pass 1111 } track_script { chk_http_port #(调用检测脚本) } virtual_ipaddress { 192.168.16.130 # 定义虚拟ip(vip),可多设,每行一个 } }
Virtual_ipaddress は vip で構成でき、vip を通じてサービスにオンラインでアクセスできます。
#サーバーのネットワーク カードに応じてインターフェイスを設定する必要があります。通常の表示方法は ip addr です。
認証設定バックアップ マシンへの認可アクセスにも同じ設定が必要です。
バックアップ マシン (192.168.16.129) のキープアライブ構成ファイルを変更します。
#keepalived.conf:#检测脚本 vrrp_script chk_http_port { script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动 interval 2 #(检测脚本执行的间隔) weight 2 #权重 } #vrrp 实例定义部分 vrrp_instance vi_1 { state backup # 指定keepalived的角色,master为主,backup为备 interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡 virtual_router_id 66 # 虚拟路由编号,主从要一直 priority 99 # 优先级,数值越大,获取处理请求的优先级越高 advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数) #授权访问 authentication { auth_type pass #设置验证类型和密码,master和backup必须使用相同的密码才能正常通信 auth_pass 1111 } track_script { chk_http_port #(调用检测脚本) } virtual_ipaddress { 192.168.16.130 # 定义虚拟ip(vip),可多设,每行一个 } }検出スクリプト:
#!/bin/bash #检测nginx是否启动了 a=`ps -c nginx --no-header |wc -l` if [ $a -eq 0 ];then #如果nginx没有启动就启动nginx systemctl start nginx #重启nginx if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行vip转移 killall keepalived fi fiスクリプト認証:chmod 775 check_nginx_pid.sh説明: スクリプトは承認されている必要があります。承認されていない場合は、アクセス権限がありません。ここでは、2 つのサーバーが実行されています。
vip(virtual_ipaddress:192.168.16.130),
vip を通じてサービスに直接アクセスします。本番環境で。 nginx の失敗をシミュレートする:2 つのサーバーがデフォルトでアクセスする nginx html ページを変更します。
192.168.16.130
にアクセスし、VIP 経由でアクセスすると、ページには192.168.16.128
が表示され、サービスが現在メイン サーバーによって提供されていることを示します。この時点で
192.168.16.128メインサーバーは次のコマンドを実行します:
systemctl stop nginx; #停止nginxvipに再度アクセスし(
192.168.16.130)、この時点ではまだページが表示されます:
192.168.16.128
ここで、
192.168.16.128 サーバーを直接閉じ、ここで vip (
192.168.16.130
192.168.16.129## が表示されることがわかります。 # その時点で、keepalived
は自動的にフェイルオーバーし、エンタープライズ レベルの実稼働環境向けの高可用性ソリューションが確立されます。 keepalived
にはメールによるリマインダーなどの多くの機能がありますが、それらは利用できません。ドキュメントを読むには公式 Web サイトにアクセスしてください。
以上が本番環境で Nginx 高可用性を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。