天天看点

Nginx高可用集群实战

  一、简介 

    上一篇博文介绍了keepalived的高可用集群,其实使用nginx做前端代理,负载均衡照样可以实现双主或主备模式的高可用集群比起keepalived基于lvs的dr配置更为简单易学,下面是本人所理解的nginx高可用集群。此实验拓扑图类似keepalived拓扑,把图中keepalived字样换成nginx即可,我就不画了,有意者可重画。 

实验拓扑图:

    二、nginx主备模式高可用

    配置nginx的upstream模块,让其反代到后端主机,后端主机配置和keepalived中雷同即可。

1

2

3

4

5

<code>  </code><code>upstream websrvs {</code>

<code>        </code><code>server 10.1.10.5:80;    </code><code>#后端主机real server01</code>

<code>        </code><code>server 10.1.10.6:80;     </code><code>#后端主机real server02</code>

<code>        </code><code>server 10.1.10.2:80 backup; </code><code>#当后端主机均不能响应时此主机响应应急页面</code>

<code>    </code><code>}</code>

    配置keepalived配置文件,实现VIP地址漂移

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

<code>! Configuration File </code><code>for</code> <code>keepalived</code>

<code>global_defs {</code>

<code>notification_email {</code>

<code>root@localhost</code>

<code>}</code>

<code>notification_email_from keepalived@localhost</code>

<code>smtp_server 127.0.0.1</code>

<code>smtp_connect_timeout 30</code>

<code>router_id node1</code>

<code>vrrp_mcast_group4 224.0.100.18</code>

<code>vrrp_script chk_down {</code>

<code>script </code><code>"[[ -f /etc/keepalived/down ]] &amp;&amp; exit 1 || exit 0"</code>

<code>interval 1</code>

<code>weight -5</code>

<code>vrrp_script chk_nginx {</code>

<code>script </code><code>"killall -0 nginx &amp;&amp; exit 0 || exit 1"</code>

<code>vrrp_instance VI_1 {</code>

<code>state MASTER</code>

<code>interface eno16777736</code>

<code>virtual_router_id 57</code>

<code>priority 100</code>

<code>advert_int 1</code>

<code>authentication {</code>

<code>auth_type PASS</code>

<code>auth_pass 98181111</code>

<code>virtual_ipaddress {</code>

<code>10.1.10.7</code><code>/16</code> <code>dev eno16777736</code>

<code>track_script {</code>

<code>chk_down</code>

<code>chk_httpd</code>

<code>notify_master </code><code>"/etc/keepalived/notify.sh master"</code>

<code>notify_backup </code><code>"/etc/keepalived/notify.sh backup"</code>

<code>notify_fault </code><code>"/etc/keepalived/notify.sh fault"</code>

实现图:

模拟单台后端主机无法提供服务及其全部宕机实验结果如下:

<a href="http://s3.51cto.com/wyfs02/M00/89/94/wKiom1gXUXnw0U-3AABDTIyfNt8550.png" target="_blank"></a>

    上诉结果可看出,此实验成功的展示了主备模式下的nginx反代,实现高可用。此实验课检测nginx的健康状态及其主备模式的切换时发邮件给管理员。

    三、nginx主主模式高可用

    配置keepalived配置文件,实现VIP地址漂移,和上诉主备相似

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

<code>vrrp_mcast_group4 224.0.120.18</code>

<code>vrrp_script chk_down { </code><code>#检测此文件下是否存在down这个文件,灰度模式下上线时可使用此</code>

<code>vrrp_script chk_nginx { </code><code>#检测nginx的健康状态信息</code>

<code>virtual_router_id 53</code>

<code>auth_pass 9818sss1</code>

<code>chk_nginx</code>

<code>vrrp_instance VI_2 {</code>

<code>state BACKUP</code>

<code>virtual_router_id 54</code>

<code>priority 98</code>

<code>auth_pass 9818rss1</code>

<code>10.1.10.77</code><code>/16</code> <code>dev eno16777736</code>

此时,nginx上keepalived均启动结果如图:

<a href="http://s1.51cto.com/wyfs02/M02/89/95/wKiom1gXWHjQQjrZAACWiViHvhM098.png" target="_blank"></a>

模拟后端主机宕机及其恢复正常结果类似keepalived如图所示:

<a href="http://s4.51cto.com/wyfs02/M02/89/93/wKioL1gXWMWDyyWfAABCFHQMR3U704.png" target="_blank"></a>

 到此,nginx的高可用集群均已实现,做实验的方法和keepalived有很多相似之处。

本文转自chengong1013 51CTO博客,原文链接:http://blog.51cto.com/purify/1867871,如需转载请自行联系原作者

继续阅读