?LVS 和 LVS+keepalived 這兩種架構(gòu)在平時聽得多了,最近才接觸到另外一個架構(gòu)LVS+OSPF。這個架構(gòu)實際上是LVS+Keepalived 的升級版本,我們所知道LVS+Keepalived 架構(gòu)是這樣子的:
? ? ? ?隨著業(yè)務(wù)的擴展,我們可以對web服務(wù)器做水平擴展,以此來提高系統(tǒng)的處理能力。但是我們會發(fā)現(xiàn),兩臺Director間始終只有一臺是處于工作狀態(tài),而另一臺處于不工作的備份狀態(tài),即使訪問的流量再大,同時也只能由一臺Director 去應(yīng)對。換句話說,Director在這個架構(gòu)里面沒辦法像web服務(wù)器那樣做水平擴展,實現(xiàn)負載均衡。那么是否有辦法讓兩臺Director都處于工作的狀態(tài)呢?答案是肯定的,LVS+OSPF 架構(gòu)就是用來解決這個問題的。
? ? ? ?LVS+OSPF架構(gòu)圖如下:
? ? ? 這個架構(gòu)與LVS+keepalived 最明顯的區(qū)別在于,兩臺Director都是Master 狀態(tài),而不是Master-Backup,如此一來,兩臺Director 地位就平等了。剩下的問題,就是看如何在這兩臺Director 間實現(xiàn)負載均衡了。這里會涉及路由器領(lǐng)域的一個概念:等價多路徑
ECMP(等價多路徑)
? ? ? ECMP(Equal-CostMultipathRouting)等價多路徑,存在多條不同鏈路到達同一目的地址的網(wǎng)絡(luò)環(huán)境中,如果使用傳統(tǒng)的路由技術(shù),發(fā)往該目的地址的數(shù)據(jù)包只能利用其中的一條鏈路,其它鏈路處于備份狀態(tài)或無效狀態(tài),并且在動態(tài)路由環(huán)境下相互的切換需要一定時間,而等值多路徑路由協(xié)議可以在該網(wǎng)絡(luò)環(huán)境下同時使用多條鏈路,不僅增加了傳輸帶寬,并且可以無時延無丟包地備份失效鏈路的數(shù)據(jù)傳輸。
? ?ECMP最大的特點是實現(xiàn)了等值情況下,多路徑負載均衡和鏈路備份的目的,在靜態(tài)路由和OSPF中基本上都支持ECMP功能。
? ? ? 例如下圖中的路徑A、路徑B、路徑C 3條路徑的COST值相同,既是等價路徑。在路由器選路的時候,便可以同時使用這3條路徑,從而實現(xiàn)負載均衡。
注:雖然鏈路COST值相同,但是實際情況是,各路徑的帶寬、時延和可靠性等不一樣,把Cost認可成一樣,不能很好地利用帶寬,尤其在路徑間差異大時,效果會非常不理想。這時可以使用
WCMP(Weight-CostMultipathRouting)加權(quán)多路徑,能夠非常靈活地按照比例在鏈路上傳遞流量。
? ? ? ?回到前面的那個問題:如何實現(xiàn)對多個Director 的負載均衡?相信看到這里,應(yīng)該都清楚了,沒錯,就是利用OSFP的等價多路徑來實現(xiàn)。那么新的問題又來了:我們知道Director 是一臺LINUX/Unix機器,不是路由器,那它如何跑OSPF協(xié)議?如何實現(xiàn)等價多路徑?
? ? ? ?實際上就是將調(diào)度器模擬成路由器,將多臺調(diào)度器與真實的路由器組成OSPF網(wǎng)絡(luò),需要做的就是為調(diào)度器安裝quagga這個軟件,并進行相關(guān)的配置即可。
【實驗步驟】
實驗平臺 :Ubuntu12.04
路由器:使用GNS3橋接網(wǎng)卡模擬真實路由器
GNS3配置
vmnet2、vmnet3網(wǎng)卡配置如下:(vmware 菜單欄 編輯 -- 虛擬網(wǎng)絡(luò)編輯器)
GNS3橋接vmware網(wǎng)卡,e1/0 橋接vmware的vmnet2網(wǎng)卡,e1/1 橋接vmware的vmnet3網(wǎng)卡。GNS3總共需要3個設(shè)備:兩個云設(shè)備(用于橋接網(wǎng)卡)和一臺路由器(模擬真實路由器)
完成后GNS3 的拓撲是這樣的:
#配置真實路由器R1
R1#conf t
R1(config)#int lo1
R1(config-if)#ip addr 2.2.2.2 255.255.255.0
R1(config-if)#int e1/0
R1(config-if)#ip add 192.168.20.120 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int e1/1
R1(config-if)#ip add 192.168.30.120 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int e1/0
R1(config-if)#ip ospf hello-interval 1
R1(config-if)#ip ospf dead-interval 3
R1(config-if)#ip ospf network point-to-point
R1(config-if)#ip ospf priority 100
R1(config-if)#int e1/1
R1(config-if)#ip ospf hello-interval 1
R1(config-if)#ip ospf dead-interval 3
R1(config-if)#ip ospf network point-to-point
R1(config-if)#ip ospf priority 99
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#network 192.168.20.0 0.0.0.255 area 0
R1(config-router)#network 192.168.30.0 0.0.0.255 area 0
R1(config-router)#network ?2.2.2.2 0.0.0.0 area 0
調(diào)度器上配置quagga,模擬路由器
#安裝quagga
root@node1:~# apt-get install quagga -y
#修改配置文件
root@node1:~# vim /etc/quagga/daemons
zebra=yes
ospfd=yes
root@node1:~# cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
root@node1:~# cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
root@node1:~# chown quagga.quagga /etc/quagga/ospfd.conf
root@node1:~# chown quagga.quagga /etc/quagga/zebra.conf
#啟動quagga
root@node1:~# /etc/init.d/quagga restart
#查看是否有相應(yīng)監(jiān)控端口
root@node1:~# netstat -nultp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2601 0.0.0.0:* LISTEN 1737/zebra
tcp 0 0 127.0.0.1:2604 0.0.0.0:* LISTEN 1741/ospfd ?
node2上的安裝步驟同上
#嘗試遠程連接quagga、配置quagga
root@node1:~# telnet 127.0.0.1 2604
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.20.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password: ?#默認密碼為zebra
#估計看到這,學(xué)過網(wǎng)絡(luò)的童鞋都已經(jīng)很熟悉了,可以大展身手了。閑話少說,繼續(xù)配置:
node1 配置如下
ospfd> en
ospfd# configure terminal
ospfd(config)# router ospf
ospfd(config-router)# router-id 192.168.20.101
ospfd(config-router)# network 192.168.20.0/24 area 0
ospfd(config-router)# network 1.1.1.1/24 area 0
ospfd(config-router)# exit
ospfd(config)# interface eth0
ospfd(config-if)# ospf hello-interval 1 ? ? ? ? ?
ospfd(config-if)# ospf dead-interval 3
ospfd(config-if)# ip ospf network point-to-point
ospfd(config-if)# end
ospfd# wr
Configuration saved to /etc/quagga/ospfd.conf
ospfd# exit
Connection closed by foreign host.
node2配置如下
ospfd> en
ospfd# configure terminal
ospfd(config)# router ospf
ospfd(config-router)# router-id 192.168.30.100
ospfd(config-router)# network 192.168.30.0/24 area 0
ospfd(config-router)# network 3.3.3.3/24 area 0 ? ? ? ?
ospfd(config-router)# exit
ospfd(config)# interface eth0
ospfd(config-if)# ospf hello-interval 1
ospfd(config-if)# ospf dead-interval 3
ospfd(config-if)# ip ospf network point-to-point
ospfd(config-if)# end
ospfd# wr
Configuration saved to /etc/quagga/ospfd.conf
ospfd# exit
Connection closed by foreign host.
#在node1和node2上分別啟用一個loopback口,用于測試
root@node1:~# ifconfig lo:1 1.1.1.1 netmask 255.255.255.0
root@node2:~# ifconfig lo:1 3.3.3.3 netmask 255.255.255.0
測試
在路由器R1 上執(zhí)行show ip ospf neighor 可以看到OSPF的鄰居
R1#show ip ospf neighbor
Neighbor ID ? ? Pri ? State ? ? ? ? ? Dead Time ? Address ? ? ? ? Interface
192.168.30.100 ? ?0 ? FULL/ ?- ? ? ? ?00:00:02 ? ?192.168.30.100 ?Ethernet1/1
192.168.20.101 ? ?0 ? FULL/ ?- ? ? ? ?00:00:02 ? ?192.168.20.101 ?Ethernet1/0
在node1上面ping node2
至此,ospf的配置完成!
? ?至于LVS的配置,基本上同LVS+Keepalived 架構(gòu),在配置的過程中,應(yīng)注意的地方有以下幾點:
1、配置router_id 的時候,為了區(qū)分開,可用ip地址作為router_id ,例如:
global_defs {
? router_id 192.168.30.102
}
2、因為兩臺調(diào)度器都是要提供服務(wù)的,因此兩臺調(diào)度器應(yīng)都處于Master的狀態(tài),那么這里有3個方面要注意:
(1)首先是狀態(tài)那里,兩臺調(diào)度器都要是MASTER
vrrp_instance VI_1 {
? ?state MASTER
? ?... ...文章來源:http://www.zghlxwxcb.cn/news/detail-670025.html
? ?}文章來源地址http://www.zghlxwxcb.cn/news/detail-670025.html
(2)其次,要以雙主的模式啟動,需要使調(diào)度器處于不同的域中。(一山不容二虎么... ...)
node1
vrrp_instance VI_1 {
? ?... ...
virtual_router_id 51
? ?... ...
}
node2
vrrp_instance VI_1 {
? ?... ...
? virtual_router_id 52
? ?... ...
}
(3)這里的優(yōu)先級應(yīng)一致,統(tǒng)一由真實路由器R1進行調(diào)度。
node1
vrrp_instance VI_1 {
? ?... ...
? ?priority 110
? ?... ...
? ?}
node2
vrrp_instance VI_1 {
? ?... ...
? ?priority 110
? ?... ...
? ?}
到了這里,關(guān)于Ceph入門到精通-大流量10GB/s LVS+OSPF 高性能架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!