天天看點

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,如需轉載請自行聯系原作者

繼續閱讀