ホームページ バックエンド開発 PHPチュートリアル keepalived+nginxはnginxの高可用性を実現します

keepalived+nginxはnginxの高可用性を実現します

Aug 08, 2016 am 09:22 AM
keepalived nbsp nginx quot root

keepalived+nginxはnginxの高可用性を実現します

============================ === ===

nginxの高可用性

nginxはバックエンドリアルサーバーの負荷分散を実現します

============== ==== =================


実験環境: OS : Centos 6.4(redhat 6.4)yum 出典:123

4

5

6

7

8

9

10

11

[ centos ]

name =sohu-centos
有効にする=1gpgcheck=0
baseurl=http: // ミラー.sohu .com/centos/

[centos]

name=sohu-centos

baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch

gpgcheck=1

enable=0

gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6

[epel]

有効にする =0 code>🎜🎜gpgkey=http: 🎜🎜 [エペル]🎜

name=sohu-epelname=sohu-epel

baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/

enable=1

gpgcheck=0


baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/


拓扑图:

拓扑图的规划:

地址软件)keepalived+nginx172.16.22.100)キープアライブ+nginx 172.16.22.3httpd172.16 .22.4

IP

マスター172.16.22.1(

VIP

172.16.22.100

バックアップ

172.16.22.2(VIP)

apache1

apache2

🎜🎜🎜httpd🎜🎜🎜🎜🎜

このアーキテクチャで考慮すべき問題

1)、マスターがダウンしていない場合、マスターはVIPを占有し、nginxはマスター上で実行されます

2 )、マスターがダウンしている場合、バックアップは VIP を捕捉し、バックアップ上で nginx サービスを実行します

3) マスター サーバー上の nginx サービスがハングすると、VIP リソースはバックアップ サーバーに転送されます

4)、検出 バックエンド サーバーの健全性ステータス

マスターとバックアップの両方で nginx サービスが有効になっており、キープアライブ サービスのいずれかが停止すると、VIP はそのノードにドリフトします。 keepalived サービスはまだ存在します。

nginx サービスをハングアップさせ、vip を別のノードにドリフトさせたい場合は、スクリプトを使用するか、構成ファイルでシェル コマンドを使用して制御する必要があります。

まず、このアーキテクチャでは keepalived がバックエンド サーバーの健全性ステータスを検出できないことを明確にする必要があります。バックエンド サーバーの健全性ステータスの検出は nginx によって判断されますが、nginx の検出メカニズムは確実です。欠陥があるため、特定のバックエンド サーバーがダウンした後も、nginx はバックエンド サービスが一定時間内に応答できない場合、そのサーバーにリクエストを送信し、顧客のリクエストが来ると待機します。しばらくの間、リクエストはダウンしたサーバーに配信されませんが、一定時間が経過すると、nginx はダウンしたサーバーに配信リクエストを送信します。 1. keepalived+nginx x

をインストールします。

1

2

3 4

5

67

8

91011

12

1314

15

1617

18

19

2021

22

23

24

25

26

27

28

[root@jie1 〜]

# yum -y インストール keepalived

[root@jie1 ~]

#tar xf nginx-1.4.2.tar.gz

[root@jie1 ~]

#yum -y groupinstall "開発ツール" "サーバー プラットフォーム開発"

[root@jie1 ~]

#yum -y pcre-devel をインストールします

[root@jie1 〜]# cd nginx-1.4.2

[root@jie1 nginx-1.4.2]# groupadd nginx

[root@jie1 nginx-1.4.2]# useradd -r -g nginx nginx

[root@jie1 nginx-1.4.2]#./configure

--prefix=/usr

--sbin-path=/usr/sbin/nginx

--conf-path=/etc/nginx/nginx--prefix=/usr

--error-log-path=/var/log/nginx/error

--sbin-path=

--http-log-path=/var/log/nginx/access/usr/sbin/nginx

--pid-path=/var/run/nginx/nginx--conf-path=

/etc/ nginx /nginx🎜🎜.conf 🎜🎜🎜🎜--error-log-path=🎜🎜/var/log/nginx/error🎜🎜.log 🎜🎜🎜🎜--http-log-path=🎜🎜/var/log/nginx/access🎜🎜.log 🎜🎜🎜🎜--pid-path=🎜🎜/var/run/nginx/nginx🎜🎜.pid  🎜🎜

--lock-path=/var/lock/nginx.ロック

--user=nginx

--group=nginx

--with-http_ssl_module

--with-http_flv_module

--with-http_stub_status_module

--with-http_gzip_static_module

--http-client-body-temp-path=/var/tmp/nginx/client/

--http-proxy-temp-path=/var/tmp/nginx/proxy/

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi

--http-scgi-temp-path=/var/tmp/nginx/scgi

--with-pcre--http-client-body-temp-path=

🎜/var/tmp/nginx/client/🎜🎜🎜🎜🎜🎜--http-proxy-temp-path=🎜🎜/var/tmp/ nginx/proxy/🎜🎜🎜🎜🎜🎜--http-fastcgi-temp-path=🎜🎜/var/tmp/nginx/fcgi/🎜🎜🎜🎜🎜🎜--http-uwsgi-temp-path=🎜🎜/ var/tmp/nginx/uwsgi🎜🎜🎜🎜🎜🎜--http-scgi-temp-path=🎜🎜/var/tmp/nginx/scgi🎜🎜🎜🎜🎜🎜--with-pcre🎜🎜

[root@jie1 nginx-1.4.2]# 作る&&作るインストール

2. nginx system Vサービススクリプトファイルを提供します

1

2

3

4

5

6

7

8

9

10

11

12

13

1 4

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

3 0

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

6 3

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

[root@jie1 nginx-1.4.2]# vim /etc/rc.d/init.d/nginx

#!/bin/sh

#!/bin/sh

#

# nginx - このスクリプトは nginx デーモンを開始および停止します

##

# chkconfig: - 85 15

# 説明: Nginx は HTTP(S) サーバー、HTTP(S) リバース

# プロキシと IMAP/POP3 プロキシ サーバー

# プロセス名: nginx

# 設定: /etc/nginx/nginx.conf

# 設定: /etc/sysconfig/nginx

# pidfile: /var/run/nginx.pid

# ソース関数ライブラリ

/etc/rc.d/init.d/functions。 

/etc/rc.d

/init/etc/sysconfig/network

.d

/functions

"$NETWORKING""no"# ソースネットワーク構成

。 nginx="/usr/sbin/nginx"

prog=$(basename$nginx)

NGINX_C/code>"/etc/nginx/nginx.conf"

/etc/sysconfig/network🎜🎜🎜🎜# ネットワークが起動していることを確認してください。🎜🎜🎜🎜[ 🎜"$NETWORKING"🎜🎜= 🎜「いいえ」🎜🎜] && exit0🎜🎜🎜🎜nginx=🎜"/usr/sbin/nginx"🎜🎜🎜🎜prog=$(🎜ベース名🎜🎜$nginx)🎜🎜🎜🎜NGINX_C/code>"/etc/nginx/nginx.conf"🎜🎜

[ -f /etc/sysconfig/nginx/etc/sysconfig/nginx] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

/etc/sysconfig/nginx

lockfile=

/var/lock/subsys/nginx

make_dirs() {grep# 必要なディレクトリを作成しますsed-`user=`nginx -V 2>&1 | 

grep

" の設定 引数:"grep| sed`

foropt in$options; do's/[^*]*--user=([^ ]*).*/1/g'

🎜-`🎜🎜🎜🎜オプティ -V 2>&1 | 🎜grep🎜🎜の設定 引数:'🎜🎜`🎜🎜🎜🎜foropt 🎜in🎜🎜$options; 🎜if[ `エコーecho$opt | grepgrep'.*-temp-path''.*-temp-path'` ]; then

value=`echothencut-d "="value=`エコー

$opt | ifカット-d "$value"]; then"="

-f 2`

mkdir[ ! -d "$value"chown]; その後

🎜🎜# echo "作成中" $value🎜🎜🎜mkdir🎜🎜-p $value && 🎜chown🎜🎜-R $user $value🎜🎜

fifi

fi

done

}

fi

完了

}

start() {

make_dirs

echo[ -x $nginx ] ||出口5

[ -f $NGINX_CONF_FILE ] || exit6

make_dirsretval=$?

echo

エコー-n $touch$lockfile

return$retval

}

「開始」 $prog: "

デーモン $nginx -c $NGINX_CONF_FILE

echoretval=$?

エコー

[ $retval -eq0 ] && 🎜touch🎜🎜$lockfile🎜🎜🎜return🎜🎜🎜🎜}🎜🎜🎜stop() {🎜🎜🎜エコー🎜🎜-n $🎜🎜「停止中」 $prog: "🎜🎜🎜🎜killproc $prog -やめます🎜🎜

retval=$?

echoretval=$?

エコーrm[ $retval -eq0 ] &&

rm

return$retval

}-f $lockfile

return

$retval

return$?

stop

sleep1

start

}}

restart() {

configtest || return$?

echoreturn$?

stop

sleep1RETVAL=$?

echo

🎜🎜start🎜🎜🎜🎜}🎜🎜🎜🎜reload() {🎜🎜🎜🎜configtest || 🎜return🎜🎜$?🎜🎜🎜echo🎜🎜-n $🎜🎜「リロード中」 $prog: "🎜🎜🎜🎜killproc $nginx -HUP🎜🎜🎜🎜RETVAL=$?🎜🎜🎜エコー🎜🎜

}

force_reload() {

restart

}再起動

configtest() {

}$nginx -t -c $NGINX_CONF_FILE

rh_status() {

}ステータス $prog

rh_status_q() {/dev/null2>&1

}

case""in

start)

rh_status >/dev/null2

>&1

;;

stop)

ケース

"$1"

;;

restart|configtest)

🎜🎜🎜start)🎜🎜🎜🎜rh_status_q && exit0🎜🎜🎜🎜$1🎜🎜🎜🎜;;🎜🎜🎜🎜stop)🎜🎜🎜🎜rh_status_q || exit0🎜🎜🎜🎜$1🎜🎜🎜🎜;;🎜🎜🎜🎜restart|configtest)🎜🎜

;;

reload)$1

;;

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

リロード)

rh_status_q || exit7

;;

*)

echo$$1

exit2

esac

;;

force-reload)

force_reload

;;🎜🎜🎜🎜ステータス)🎜 🎜🎜🎜rh_status🎜🎜🎜🎜;;🎜🎜 🎜🎜condrestart|try-restart)🎜🎜🎜🎜rh_status_q || exit0🎜🎜🎜🎜;;🎜🎜🎜🎜*)🎜🎜🎜echo🎜🎜$🎜🎜"使用法: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"🎜🎜🎜🎜exit2🎜🎜🎜開始 nginx: nginx-1.4.2]# scp -p /etc/rc.d/init.d/nginx 172.16.22.2:/etc/rc.d/init.d #nginx サービス スクリプトをバックアップにコピーします。 -p は元の権限を維持することを意味します

3. 設定ファイルを変更します

1

2 3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

[root@jie1 〜]# cd /etc/keepalived/

[root@jie1 キープアライブ]# vim keepalived.conf

global_defs {

notification_email {

   

root@localhost

     root@localhost

   🎜🎜 🎜

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

See all articles