国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

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

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





◆ 一、簡(jiǎn)  介 





 1.負(fù)載均衡的類(lèi)型



負(fù)載均衡可以采用硬件設(shè)備(例如常常聽(tīng)見(jiàn)的F5),也可以采用軟件負(fù)載

商用硬件負(fù)載設(shè)備成本通常較高(一臺(tái)幾十萬(wàn)甚至上百萬(wàn)),所以一般情況下會(huì)采用軟件負(fù)載.

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



 2.lvs 是什么?



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

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

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


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

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

加權(quán)輪詢(xú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ù)期延時(shí)調(diào)度(ShortestExpected Delay Scheduling)

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


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

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

TUNL:簡(jiǎn)單理解:隧道 

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



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



最前端的負(fù)載均衡層,用Load Balancer 表示

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

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

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



 4.keepAlived 是什么?



因?yàn)樗械恼?qǐng)求都要經(jīng)過(guò)負(fù)載均衡,所以負(fù)載均衡必然是非常重要,不能掛掉,說(shuō)白了就是要 keep the lvs alived。

提供的功能就是可以配置2 臺(tái)LVS,一臺(tái)主機(jī),一臺(tái)備機(jī)。并且檢測(cè)任何一個(gè)節(jié)點(diǎn)是否還活著。 


(1)定義

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

(2)工作原理

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

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

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

(3)VPPR協(xié)議

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

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

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

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



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



抗負(fù)載能力強(qiáng),因?yàn)閘vs 工作方式的邏輯是非常之簡(jiǎn)單,而且工作在網(wǎng)絡(luò)4 層僅做請(qǐng)求分發(fā)之用,沒(méi)有流量,所以在效率上基本不需要太過(guò)考慮。

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

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



 6.lvs 負(fù)載均衡機(jī)制



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

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

因?yàn)長(zhǎng)VS 是四層負(fù)載均衡,因此它相對(duì)于其它高層負(fù)載均衡的解決辦法,比如 DNS 域名輪流解析、應(yīng)用層負(fù)載的調(diào)度、客戶(hù)端的調(diào)度等,它的效率是非常高的

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

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



 7.lvs 與 nginx對(duì)比?



負(fù)載度   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)備


各個(gè)軟件及其版本信息如下:

軟件

版本

Centos系統(tǒng)

Nginx1.16.0

LVSipvsadm-1.27-7.el7.x86_64

Keepalivedkeepalived.x86_64 0:1.3.5-8.el7_6

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

節(jié)點(diǎn)

192.192.192..154 lvs master

192.192.192..155 lvs slave

192.192.192..150 nginx1

192.192.192..151 nginx2

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


 
   2、部署架構(gòu)


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

特別注意:

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


     
   3、部署程序


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

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

systemctlstop firewalld

systemctldisable firewalld

yuminstall ipvsadm

yuminstall keepalived


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

#添加nginx的yum源

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

# 安裝

yuminstall nginx

安裝完成nginx后,編輯其默認(rèn)頁(yè)面,加上特定的信息,這樣才能判斷請(qǐng)求到底是哪個(gè)nginx處理的,即:

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

對(duì)于nginx1加上150字樣,nginx2加上151字樣,即:

當(dāng)直接訪問(wèn)nginx1時(shí),效果為:當(dāng)直接訪問(wèn)nginx2時(shí),效果為

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

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

編輯如下文件:

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

!Configuration File for keepalived

#全局配置

global_defs{

#郵件通知信息

#  notification_email {

#定義收件人

#    acassen@firewall.loc

#    failover@firewall.loc

#    sysadmin@firewall.loc

#  }

#定義發(fā)件人

#  notification_email_from Alexandre.Cassen@firewall.loc

#SMTP服務(wù)器地址

#  smtp_server 192.168.200.1

#  smtp_connect_timeout 30

#路由器標(biāo)識(shí),一般不用改,也可以寫(xiě)成每個(gè)主機(jī)自己的主機(jī)名

router_id LVS_DEVEL

#  vrrp_skip_check_adv_addr

#  vrrp_strict

#  vrrp_garp_interval 0

#  vrrp_gna_interval 0

}



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

vrrp_scriptchk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

#一個(gè)vrrp_instance就是定義一個(gè)虛擬路由器的,實(shí)例名稱(chēng)

vrrp_instanceVI_1 {

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

state MASTER

#工作接口,通告選舉使用哪個(gè)接口進(jìn)行

interface eth0

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

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

virtual_router_id 51

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

priority 100

#通告頻率,單位為秒

advert_int 1

mcast_src_ip=134.134.134.154

#通信認(rèn)證機(jī)制,這里是明文認(rèn)證還有一種是加密認(rèn)證

authentication {

auth_type PASS

auth_pass 1111

}


#設(shè)置虛擬VIP地址,一般就設(shè)置一個(gè),在LVS中這個(gè)就是為L(zhǎng)VS主機(jī)設(shè)置VIP的,這樣你就不用自己手動(dòng)設(shè)置了

virtual_ipaddress {

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

134.134.134.163

}

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

track_script {

chk_nginx

}

}

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

#所以通過(guò)這里就可以看出來(lái)keepalive天生就是為ipvs而設(shè)計(jì)的

virtual_server134.134.134.163 80 {

delay_loop 6

# 算法

lb_algo rr

# LVS的模式

lb_kind DR

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

nat_mask 255.255.255.0

#持久連接超時(shí)時(shí)間

persistence_timeout 50

#定義協(xié)議

protocol TCP


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

real_server 134.134.134.154 80 {

# 權(quán)重

weight 1

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

TCP_CHECK {

# 連接超時(shí)時(shí)間

connect_timeout 3

# 嘗試次數(shù)

nb_get_retry 3

# 每次嘗試之間間隔幾秒

delay_before_retry 3

}

}


nginx進(jìn)程檢測(cè)腳本:

#!/bin/bash

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

if [$A -eq 0 ];then

/usr/sbin/nginx #嘗試重新啟動(dòng)nginx

sleep 2 #睡眠2秒

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

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

fi


分別啟動(dòng)lvsmaster和slave的keepalived,并且設(shè)置為開(kāi)機(jī)自啟動(dòng):

systemctlstart keepalived

systemctlenable keepalived


此時(shí)在lvsmaster節(jié)點(diǎn)查看IP地址情況:

ip a


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

由于服務(wù)器重啟后設(shè)置的回環(huán)IP會(huì)失效,所以將設(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129964.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<