Keepalived+LVS+Nginx負載均衡之高可用

系統整體設計是採用Nginx做負載均衡,若出現Nginx單機故障,則導致整個系統無法正常運行。針對系統架構設計的高可用要求,我們需要解決Nginx負載均衡出現單機故障時,系統正常運行的需求。所以系統架構引入Keepalived組件,實現系統高可用。

一、Keepalived介紹

Keepalived是分散式部署系統解決系統高可用的軟體,結合LVS(Linux Virtual Server)使用,其功能類似於heartbeat,解決單機宕機的問題。

二、Keepalived技術原理

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。通過VRRP協議結合LVS,對組群伺服器監控情況,若master出現宕機情況,則將VIP漂移到backup機上。實現了分散式系統高可用。可以理解為:keepalived是LVS的管理軟體,根據監控情況,將宕機伺服器從ipvsadm移除掉。

三、Keepalived+LVS+Nginx實現系統高可用

 

伺服器 IP地址 說明
虛擬IP 192.168.1.120:80
主機 192.168.1.104:80
備機 192.168.1.103:80
Web站點A 192.168.1.101:8081 不同埠
Web站點B 192.168.1.101:8082 不同埠

 

1、安裝ipvsadm,CentOS7自帶安裝包,通過yum進行安裝。實現系統支持LVS

1 yum install ipvsadm

2、安裝Keepalived軟體,並將keepalived設置開機啟動

1 yum install Keepalived
1 systemctl enable keepalived

3、進行Keepalived.conf配置,如果是MASTER機,將state BACKUP改為state MASTER。

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

vim /etc/keepalived/keepalived.conf

#配置的內容

! Configuration File for keepalived

 

global_defs {

notification_email {

xxx@126.com #收到通知的郵件地址

}

notification_email_from XX@126.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

 

vrrp_script monitor_nginx{

script “/usr/local/etc/keepalived/script/monitor_nginx.sh”

interval 1

weight -15

}

 

vrrp_instance VI_1 {

state BACKUP

interface eno16777736

virtual_router_id 51

priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.120

}

track_script {

monitor_nginx

}

}

 

virtual_server 192.168.1.120 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

persistence_timeout 50

protocol TCP

 

real_server 192.168.1.103 80 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

 

real_server 192.168.1.104 80 {

weight 5

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

4、配置監控shell腳本

1

2

3

4

5

6

7

8

9

10

(1)創建:vim /usr/local/etc/keepalived/script/monitor_nginx.sh<br><br>(2)SHELL文件內容<br>#!/bin/bash

if [ “$(ps -ef | grep “nginx: master process”| grep -v grep )” == “” ]

then

systemclt start nginx.service

sleep 5

if [ “$(ps -ef | grep “nginx: master process”| grep -v grep )” == “” ]

then

killall keepalived

fi

fi

以上完成相關配置,nginx和web服務以上一篇博客內容一致。如下對功能進行驗證測試。

 

 

四、實現測試展示

1、訪問系統情況:通過VIP(192.168.1.120)訪問系統頁面。因為設置了輪詢調度,所以刷新頁面訪問不同站點。

 

2、將 MASTER(192.168.1.104)關機前後,查看相關VLS情況:

(1)關機前:

(2)關機後:

我們看到將104伺服器從 LVS移除掉。此時則將後續請求轉發到103伺服器。

 

3、關機後,BACKUP伺服器 keepalived日誌顯示無法連接104,並移除掉

 

5、開機後,將自動檢測到伺服器正常,並加入LVS中。

 

 

 

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營