ホームページ > 運用・保守 > Nginx > nginx と keepalived を組み合わせて高可用性を実現する方法

nginx と keepalived を組み合わせて高可用性を実現する方法

WBOY
リリース: 2023-05-12 08:43:11
転載
1273 人が閲覧しました

keepalived の概要

keepalived の機能は、サーバーの状態を検出することです。Web サーバーがダウンしているか、動作障害がある場合、keepalived は検出します。障害のあるサーバーはシステムから削除され、他のサーバーがサーバーの作業を置き換えるために使用されます。サーバーが正常に動作している場合、keepalived はサーバーをサーバー グループに自動的に追加します。これらのタスクはすべて、手動介入なしで自動的に完了します。手動で行う必要があるのは、障害が発生したサーバーを修復することだけです。

システム アーキテクチャ図

nginx と keepalived を組み合わせて高可用性を実現する方法

実装手順

1. 環境構成

##1.1 nginx のインストール

関連する依存関係のインストール


yum install pcre-devel zlib zlib-devel openssl openssl-devel
ログイン後にコピー

アップロード圧縮パッケージを解凍します


tar zxvf nginx-1.12.2.tar.gz
ログイン後にコピー

ディレクトリの作成、構成の検出


mkdir -p /usr/local/nginx
./configure --prefix=/usr/local/nginx
ログイン後にコピー

プリコンパイルとインストール


make && make install
ログイン後にコピー

関連コマンドの開始と停止


cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s start
ログイン後にコピー

1.2 keepalived のインストール

yum install -y keepalived
ログイン後にコピー

2. ホスト構成

keepalived 構成ファイルの変更


vim /etc/keepalived/keepalived.conf
ログイン後にコピー

修正内容は以下の通りです


#新增的配置
vrrp_script chk_http_port {
 script "/shell/nginx_check.sh" #脚本地址
 interval 2 #检测脚本执行的间隔
 weight 2 #比重
}

vrrp_instance vi_1 {
 state master #主服务器为master,从服务器为backup
 interface eth0 #网卡
 virtual_router_id 51 #主、备机的virtual_router_id必须相同
 priority 100 #主、备机不同的优先级,主机优先级较大,备机值较小,默认是100
 advert_int 1
 authentication {
  auth_type pass
  auth_pass 1111
 }
 #虚拟ip地址
 virtual_ipaddress {
  192.168.126.88
 }
}
ログイン後にコピー

スクリプトファイルの作成


mkdir /shell/nginx_check.sh
vim /shell/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
ログイン後にコピー

3. スレーブ設定

キープアライブ設定ファイルの変更


vrrp_instance vi_1 {
  state backup #主服务器为master,从服务器为backup
  interface eth0 #网卡
  virtual_router_id 51 #主、备机的virtual_router_id必须相同
  priority 50 #主、备机不同的优先级,主机优先级较大,备机值较小
  advert_int 1
  authentication {
    auth_type pass
    auth_pass 1111
  }
  #虚拟ip地址
  virtual_ipaddress {
    192.168.126.88
  }
}
ログイン後にコピー

4. サービスの開始

開始


service keepalived start
ログイン後にコピー

仮想 IP アドレスの表示


ip addr
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown 
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up qlen 1000
  link/ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff
  inet 192.168.126.100/24 brd 192.168.126.255 scope global eth0
  inet 192.168.126.88/32 scope global eth0
  inet6 fe80::20c:29ff:fe4f:31ce/64 scope link 
    valid_lft forever preferred_lft forever
ログイン後にコピー

5. ファイアウォール テストをオフにします

ファイアウォールを閉じてください


service iptables stop
#查看防火墙是否开机自启动
chkconfig --list | grep iptables
chkconfig iptables off
ログイン後にコピー

表示するには仮想 IP アドレスにログインしてください


http://192.168.126.88/
ログイン後にコピー

以上がnginx と keepalived を組み合わせて高可用性を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート