成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LVS+Keepalived+Nginx基于DR模式構(gòu)建高可用方案

IT那活兒 / 2322人閱讀
LVS+Keepalived+Nginx基于DR模式構(gòu)建高可用方案





◆ 一、簡  介 





 1.負載均衡的類型



負載均衡可以采用硬件設(shè)備(例如常常聽見的F5),也可以采用軟件負載

商用硬件負載設(shè)備成本通常較高(一臺幾十萬甚至上百萬),所以一般情況下會采用軟件負載.

軟件負載解決的兩個核心問題是:選誰、轉(zhuǎn)發(fā),其中最著名的是lvs .



 2.lvs 是什么?



英文全稱是Linux Virtual Server,即Linux 虛擬服務(wù)器

Linux2.4內(nèi)核以后,LVS已經(jīng)是 Linux標(biāo)準(zhǔn)內(nèi)核的一部分

可以將請求分發(fā)給后端真實服務(wù)器處理


提供了多種調(diào)度算法

輪詢調(diào)度(Round-RobinScheduling)

加權(quán)輪詢調(diào)度(WeightedRound-Robin Scheduling)

最小連接調(diào)度(Least-ConnectionScheduling)

加權(quán)最小連接調(diào)度(WeightedLeast-Connection Scheduling)

基于局部性的最少鏈接(Locality-BasedLeast Connections  Scheduling)

目標(biāo)地址散列調(diào)度(DestinationHashing Scheduling)

源地址散列調(diào)度(SourceHashing Scheduling)

最短預(yù)期延時調(diào)度(ShortestExpected Delay Scheduling)

不排 隊 調(diào) 度 ( Never Queue Scheduling )對應(yīng):rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq


有三種轉(zhuǎn)發(fā)規(guī)則

NAT:簡單理解,就是數(shù)據(jù)進出都通過LVS,性能不是很好。

TUNL:簡單理解:隧道 

DR:最高效的負載均衡規(guī)則 



 3.lvs 的體系結(jié)構(gòu)



最前端的負載均衡層,用Load Balancer 表示

中間的服務(wù)器集群層,用Server Array 表示

最底端的數(shù)據(jù)共享存儲層,用Shared Storage 表示

在用戶看來,所有的內(nèi)部應(yīng)用都是透明的,用戶只是在使用一個虛擬服務(wù)器提供的高性能服務(wù) 



 4.keepAlived 是什么?



因為所有的請求都要經(jīng)過負載均衡,所以負載均衡必然是非常重要,不能掛掉,說白了就是要 keep the lvs alived。

提供的功能就是可以配置2 臺LVS,一臺主機,一臺備機。并且檢測任何一個節(jié)點是否還活著。 


(1)定義

keepalived是集群管理中保證集群高可用的一個服務(wù)軟件,其功能類似于heartbeat,用來防止單點故障。

(2)工作原理

將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務(wù)的

vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該vip),master會發(fā)組播,當(dāng)backup收不到vrrp包時就認為master宕掉了,

這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當(dāng)master。這樣的話就可以保證路由器的高可用了。

(3)VPPR協(xié)議

keepalived是以VRRP協(xié)議為實現(xiàn)基礎(chǔ)的,VRRP全稱VirtualRouter Redundancy Protocol,即虛擬路由冗余協(xié)議。

虛擬路由冗余協(xié)議,可以認為是實現(xiàn)路由器高可用的協(xié)議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個

master和多個backup,master上面有一個對外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該vip),master

會發(fā)組播,當(dāng)backup收不到vrrp包時就認為master宕掉了,這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當(dāng)master



5.lvs 的優(yōu)點?



抗負載能力強,因為lvs 工作方式的邏輯是非常之簡單,而且工作在網(wǎng)絡(luò)4 層僅做請求分發(fā)之用,沒有流量,所以在效率上基本不需要太過考慮。

有完整的雙機熱備方案,當(dāng)節(jié)點出現(xiàn)故障時,lvs會自動判別,所以系統(tǒng)整體是非常穩(wěn)定的。

基本上能支持所有應(yīng)用,因為lvs 工作在 4層,所以它可以對幾乎所有應(yīng)用做負載均衡,包括http、數(shù)據(jù)庫等等。



 6.lvs 負載均衡機制



lvs是四層負載均衡,也就是說建立在OSI 模型的第四層——傳輸層之上

傳輸層上有TCP/UDP,lvs支持 TCP/UDP的負載均衡

因為LVS 是四層負載均衡,因此它相對于其它高層負載均衡的解決辦法,比如 DNS 域名輪流解析、應(yīng)用層負載的調(diào)度、客戶端的調(diào)度等,它的效率是非常高的

lvs的轉(zhuǎn)發(fā)可以通過修改 IP地址實現(xiàn)(NAT模式)

lvs的轉(zhuǎn)發(fā)還可以通過修改直接路由實現(xiàn)(DR模式)



 7.lvs 與 nginx對比?



負載度   lvs 優(yōu)于nginx 

穩(wěn)定度   lvs 優(yōu)于nginx

服務(wù)器性能要求lvs 優(yōu)于 nginx

網(wǎng)絡(luò)層數(shù)的效率lvs 優(yōu)于 nginx

功能多少  nginx 優(yōu)于lvs 





◆  、部  署 




   1、部署環(huán)境準(zhǔn)備


各個軟件及其版本信息如下:

軟件

版本

Centos系統(tǒng)

Nginx1.16.0

LVSipvsadm-1.27-7.el7.x86_64

Keepalivedkeepalived.x86_64 0:1.3.5-8.el7_6

節(jié)點分配及角色如下:

節(jié)點

192.192.192..154 lvs master

192.192.192..155 lvs slave

192.192.192..150 nginx1

192.192.192..151 nginx2

同時特別注意這里設(shè)置的VIP地址為:192.192.192..100,VIP也即虛擬的IP地址,即當(dāng)外部請求所訪問的IP地址.


 
   2、部署架構(gòu)


基于上述的環(huán)境,部署的架構(gòu)如下:

特別注意:

由于是采用DR模式,也即當(dāng)用戶請求發(fā)送到VIP時,LVS會根據(jù)所設(shè)置的負載均衡算法將請求轉(zhuǎn)發(fā)到具體的Nginx服務(wù)器(RealServer)上,而當(dāng)具體的Nginx服務(wù)器處理完后是直接將結(jié)果返回給用戶。所以在具體的Nginx服務(wù)器是要設(shè)置回環(huán)的IP,即在lo網(wǎng)卡上設(shè)置VIP的地址。


     
   3、部署程序


(1)首先在lvsmaster節(jié)點和slave節(jié)點關(guān)閉防火墻以及安裝lvs和keepalived

關(guān)閉lvsmaster和slave節(jié)點上的訪火墻:

systemctlstop firewalld

systemctldisable firewalld

yuminstall ipvsadm

yuminstall keepalived


(2)在nginx1和nginx2節(jié)點上安裝nginx:

#添加nginx的yum源

rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安裝

yuminstall nginx

安裝完成nginx后,編輯其默認頁面,加上特定的信息,這樣才能判斷請求到底是哪個nginx處理的,即:

vi/usr/share/nginx/html/index.html

對于nginx1加上150字樣,nginx2加上151字樣,即:

當(dāng)直接訪問nginx1時,效果為:當(dāng)直接訪問nginx2時,效果為

(3)在lvsmaster節(jié)點和lvsslave節(jié)點配置keepalived信息:

首先配置lvsmaster節(jié)點:

編輯如下文件:

[root@c6-yz-htsb-sc01~]# cat /etc/keepalived/keepalived.conf

!Configuration File for keepalived

#全局配置

global_defs{

#郵件通知信息

#  notification_email {

#定義收件人

#    [email protected]

#    [email protected]

#    [email protected]

#  }

#定義發(fā)件人

#  notification_email_from [email protected]

#SMTP服務(wù)器地址

#  smtp_server 192.168.200.1

#  smtp_connect_timeout 30

#路由器標(biāo)識,一般不用改,也可以寫成每個主機自己的主機名

router_id LVS_DEVEL

#  vrrp_skip_check_adv_addr

#  vrrp_strict

#  vrrp_garp_interval 0

#  vrrp_gna_interval 0

}



#定義用于實例執(zhí)行的腳本內(nèi)容,比如可以在線降低優(yōu)先級,用于強制切換

vrrp_scriptchk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

#一個vrrp_instance就是定義一個虛擬路由器的,實例名稱

vrrp_instanceVI_1 {

#定義初始狀態(tài),可以是MASTER或者BACKUP

state MASTER

#工作接口,通告選舉使用哪個接口進行

interface eth0

#虛擬路由ID,如果是一組虛擬路由就定義一個ID,如果是多組就要定義多個,而且這個虛擬

#ID還是虛擬MAC最后一段地址的信息,取值范圍0-255

virtual_router_id 51

#如果你上面定義了MASTER,這里的優(yōu)先級就需要定義的比其他的高

priority 100

#通告頻率,單位為秒

advert_int 1

mcast_src_ip=134.134.134.154

#通信認證機制,這里是明文認證還有一種是加密認證

authentication {

auth_type PASS

auth_pass 1111

}


#設(shè)置虛擬VIP地址,一般就設(shè)置一個,在LVS中這個就是為LVS主機設(shè)置VIP的,這樣你就不用自己手動設(shè)置了

virtual_ipaddress {

#IP/掩碼 dev配置在哪個網(wǎng)卡

134.134.134.163

}

#追蹤腳本,通常用于去執(zhí)行上面的vrrp_script定義的腳本內(nèi)容

track_script {

chk_nginx

}

}

#定義LVS集群服務(wù),可以是IP+PORT;也可以是fwmark數(shù)字,也就是防火墻規(guī)則

#所以通過這里就可以看出來keepalive天生就是為ipvs而設(shè)計的

virtual_server134.134.134.163 80 {

delay_loop 6

# 算法

lb_algo rr

# LVS的模式

lb_kind DR

#子網(wǎng)掩碼,這個掩碼是VIP的掩碼

nat_mask 255.255.255.0

#持久連接超時時間

persistence_timeout 50

#定義協(xié)議

protocol TCP


#后端應(yīng)用服務(wù)器 IPPORT

real_server 134.134.134.154 80 {

# 權(quán)重

weight 1

# 針對應(yīng)用服務(wù)器做健康檢查的方法

TCP_CHECK {

# 連接超時時間

connect_timeout 3

# 嘗試次數(shù)

nb_get_retry 3

# 每次嘗試之間間隔幾秒

delay_before_retry 3

}

}


nginx進程檢測腳本:

#!/bin/bash

A=`ps-C nginx --no-header | wc -l`

if [$A -eq 0 ];then

/usr/sbin/nginx #嘗試重新啟動nginx

sleep 2 #睡眠2秒

if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then

killall keepalived #啟動失敗,將keepalived服務(wù)殺死。將vip漂移到其它備份節(jié)點

fi


分別啟動lvsmaster和slave的keepalived,并且設(shè)置為開機自啟動:

systemctlstart keepalived

systemctlenable keepalived


此時在lvsmaster節(jié)點查看IP地址情況:

ip a


在nginx服務(wù)器上設(shè)置回環(huán)IP:

由于服務(wù)器重啟后設(shè)置的回環(huán)IP會失效,所以將設(shè)置的內(nèi)容放在腳本lvs-rs.sh中,內(nèi)容如下:

#!/bin/bash

echo"1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo"2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo"1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo"2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl-w net.ipv4.ip_forward=1

ifconfiglo:0 134.134.134.163 broadcast 134.134.134.163 netmask255.255.255.255 up

routeadd -host 134.134.134.163 dev lo:0

執(zhí)行后,查看IP信息,可以在lo網(wǎng)卡中看到VIP的信息,即:


END


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129964.html

相關(guān)文章

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<