一、簡介
上一篇博文介紹了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 ]] && 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 && 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,如需轉載請自行聯系原作者