Heim  >  Artikel  >  Backend-Entwicklung  >  keepalived nginx erkennt die hohe Verfügbarkeit von nginx

keepalived nginx erkennt die hohe Verfügbarkeit von nginx

WBOY
WBOYOriginal
2016-08-08 09:22:551058Durchsuche

keepalived+nginx erkennt die hohe Verfügbarkeit von Nginx

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

nginx High Availability

nginx implementiert den Lastausgleich des Back-End-Realservers

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


Experimentelle Umgebung: Betriebssystem: Centos 6.4 (Redhat 6.4)leckere Quelle:

1

2

3

4

5

6

7

8

9

10

11

[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]

name=sohu-epel

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

enable=1

gpgcheck=0


拓扑图:

Ich freue mich auf:


IP地址

软件

Master

172.16.22.1(VIP172.16.22.100)

keepalived+nginx

Backup

172.16.22.2(VIP172.16.22.100)

keepalived+nginx

apache1

172.16.22.3

httpd

apache2

172.16.22.4

httpd

IP地址 软件

Master

172.16.22.1( -us">VIP:172.16.22.100)

keepalived+nginx

Backup 172.16.22.2(VIP:172.16.22.100)

keepalived+nginx

Apache1

172.16.22.3

httpd

Apache2

172.16.22.4

httpd

Bei dieser Architektur zu berücksichtigende Punkte

1) Wenn der Master nicht ausgefallen ist, belegt der Master das VIP und Nginx läuft auf dem Master

2) Wenn der Master ausgefallen ist , das Backup belegt den VIP und führt den Nginx-Dienst auf dem Backup aus

3). Wenn der Nginx-Dienst auf dem Master-Server hängt, werden die VIP-Ressourcen hängen bleiben auf den Backup-Server übertragen werden

4), Überprüfen Sie den Gesundheitsstatus des Backend-Servers

Aktivieren Sie den Nginx-Dienst sowohl auf dem Master als auch auf dem Backup, unabhängig vom Master oder Backup. Wenn einer der Keepalived-Dienste stoppt, wandert der VIP zu dem Knoten, auf dem der Keepalived-Dienst noch vorhanden ist

Wenn Sie Nginx verwenden möchten. Wenn der Dienst hängt und die VIP auf einen anderen Knoten wandert, muss dies mithilfe eines Skripts oder eines Shell-Befehls in der Konfigurationsdatei gesteuert werden.

Zunächst muss klar sein, dass Keepalived den Gesundheitsstatus des Backend-Servers auf dieser Architektur nicht erkennen kann Ja, aber der Erkennungsmechanismus von Nginx weist bestimmte Mängel auf. Nachdem ein Back-End-Server ausgefallen ist, verteilt Nginx weiterhin Anfragen an ihn Senden Sie es an einen anderen Server. Wenn dann die Anfrage des Kunden eingeht, verteilt Nginx die Anfrage für eine gewisse Zeit nicht an den ausgefallenen Server, aber nach einer gewissen Zeit sendet Nginx die Verteilungsanforderung trotzdem an den ausgefallenen Server.

1. Keepalived+nginx installieren

Master:

1. Keepalived installieren und nginx kompilieren und installieren

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

[root@jie1 ~]# yum -y install keepalived

[root@jie1 ~]#tar xf nginx-1.4.2.tar.gz

[root@jie1 ~]#yum -y groupinstall "Development tools" "Server  Platform Development"

[root@jie1 ~]#yum -y install 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.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.lock

--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

[root@jie1 nginx-1.4.2]# make && make install

2. Stellen Sie eine Nginx-System-V-Dienstskriptdatei bereit

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

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

63

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

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig:   - 85 15

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /etc/nginx/nginx.conf

# config:      /etc/sysconfig/nginx

# pidfile:     /var/run/nginx.pid

# Source function library.

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

# Source networking configuration.

/etc/sysconfig/network

# Check that networking is up.

"$NETWORKING""no"] && exit0

nginx="/usr/sbin/nginx"

prog=$(basename$nginx)

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

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

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`nginx -V 2>&1 | grep"configure arguments:"sed's/[^*]*--user=([^ ]*).*/1/g'-`

opti -V 2>&1 | grep'configure arguments:'`

foropt in$options; do

if[ `echo$opt | grep'.*-temp-path'` ]; then

value=`echo$opt | cut-d "="-f 2`

if[ ! -d "$value"]; then

# echo "creating" $value

mkdir-p $value && chown-R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit5

[ -f $NGINX_CONF_FILE ] || exit6

make_dirs

echo-n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq0 ] && touch$lockfile

return$retval

}

stop() {

echo-n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq0 ] && rm-f $lockfile

return$retval

}

restart() {

configtest || return$?

stop

sleep1

start

}

reload() {

configtest || return$?

echo-n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null2>&1

}

case""in

start)

rh_status_q && exit0

;;

stop)

rh_status_q || exit0

;;

restart|configtest)

;;

reload)

rh_status_q || exit7

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit0

;;

*)

echo $"Usage:

{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit2

esac

[root@jie1 nginx-1.4.2]# chmod +x /etc/rc.d/init.d/nginx

[root@jie1 nginx-1.4.2]# service nginx start

Starting nginx:                                            [  OK  ]

[root@jie1 nginx-1.4.2]# scp -p /etc/rc.d/init.d/nginx  172.16.22.2:/etc/rc.d/init.d    #把nginx的服务脚本复制到backup上,-p是保持原有的权限

3. Ändern Sie die Konfigurationsdatei

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 keepalived]# vim keepalived.conf

global_defs {

   notification_email {

     root@localhost

   

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn