日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)

發(fā)布時間:2025/4/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隨著互聯(lián)網(wǎng)的飛速發(fā)展,傳統(tǒng)的昂貴的大容量高性能服務器(F5 BIG-IP、Citrix NetScaler、A10)已經(jīng)越來越應付不了日益增長的業(yè)務需求了,而高并發(fā)和負載均衡所帶來的高可靠/高可用/低成本卻完美的解決了傳統(tǒng)服務器面臨的一些問題。現(xiàn)在我們來簡單聊聊高并發(fā)和負載均衡。

在上一講中,我們弄清了訪問一次網(wǎng)頁時,里面所發(fā)生的的曲折動人的故事,那是我們一個客戶端再向百度的服務器發(fā)送請求,而實際情況是百度要面臨整個中國網(wǎng)民的訪問和請求,如果依然將所有的服務都部署在一臺服務器上,可想而知,那臺服務器將要面臨多大的壓力,要具備多么強大的性能和帶寬,由此我們引出高并發(fā)和負載均衡技術,并通過LVS來簡單了解下它的原理。

LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務器。這是一個由章文嵩博士發(fā)起的一個開源項目,它的官方網(wǎng)是 http://www.linuxvirtualserver.org 現(xiàn)在 LVS 已經(jīng)是 Linux 內(nèi)核標準的一部分。使用 LVS 可以達到的技術目標是:通過 LVS 達到的負載均衡技術和 Linux 操作系統(tǒng)實現(xiàn)一個高性能高可用的 Linux 服務器集群,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現(xiàn)最優(yōu)的性能。LVS 是一個實現(xiàn)負載均衡集群的開源軟件項目,LVS架構從邏輯上可分為調(diào)度層、Server集群層和共享存儲。

LVS包含幾個組成部分:

VIP:虛擬服務器地址

DIP:轉(zhuǎn)發(fā)的網(wǎng)絡地址

1.和RIP通信:ARP協(xié)議,獲取Real Server的RIP:MAC地址

2.轉(zhuǎn)發(fā)Client的數(shù)據(jù)包到RIP上(隱藏的VIP)

RIP:后端真實主機(后端服務器)

CIP:客戶端IP地址

1.LVS的基本工作原理:

簡單的說就是通過負載均衡器,接收海量的請求,然后根據(jù)后面的server端情況運行情況分發(fā)給不同的server進行處理,然后返回處理結果的過程。

2.下面我們具體說下LVS的三種具體負載模式:

2.1 LVS/NAT原理和特點:

(a). 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP

(b). PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c). IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,修改數(shù)據(jù)包的目標IP地址為后端服務器IP,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP

(d). POSTROUTING鏈通過選路,將數(shù)據(jù)包發(fā)送給Real Server

(e). Real Server比對發(fā)現(xiàn)目標為自己的IP,開始構建響應報文發(fā)回給Director Server。 此時報文的源IP為RIP,目標IP為CIP

(f). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP

LVS-NAT模型的特性

  • RS應該使用私有地址,RS的網(wǎng)關必須指向DIP
  • DIP和RIP必須在同一個網(wǎng)段內(nèi)
  • 請求和響應報文都需要經(jīng)過Director Server,高負載場景中,Director Server易成為性能瓶頸
  • 支持端口映射
  • RS可以使用任意操作系統(tǒng)
  • 缺陷:對Director Server壓力會比較大,請求和響應都需經(jīng)過director server,試想,我們的所有數(shù)據(jù)的傳輸都要經(jīng)過Director Server,如果產(chǎn)生高并發(fā)或者這中間的數(shù)據(jù)有視頻等一些大的文件類型,那么勢必會給Director Server非常大的壓力

所以這種方法,并不適合真正的高并發(fā)和大訪問量的企業(yè),不過一般企業(yè)使用這個模式在企業(yè)內(nèi)部使用以足夠解決很多問題。

由此引出了我們的第二種負載模式:

2.2 LVS-DR的原理和特點:

重將請求報文的目標MAC地址設定為挑選出的RS的MAC地址

(a) 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP

(b) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c) IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址

(d) 由于DS和RS在同一個網(wǎng)絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那么此時數(shù)據(jù)包將會發(fā)至Real Server。

(e) RS發(fā)現(xiàn)請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之后,將響應報文通過lo接口傳送給eth0網(wǎng)卡然后向外發(fā)出。 此時的源IP地址為VIP,目標IP為CIP

(f) 響應報文最終送達至客戶端

2. LVS-DR模型的特性

  • 特點1:保證前端路由將目標地址為VIP報文統(tǒng)統(tǒng)發(fā)給Director Server,而不是RS
  • RS可以使用私有地址;也可以是公網(wǎng)地址,如果使用公網(wǎng)地址,此時可以通過互聯(lián)網(wǎng)對RIP進行直接訪問
  • RS跟Director Server必須在同一個物理網(wǎng)絡中
  • 所有的請求報文經(jīng)由Director Server,但響應報文必須不能進過Director Server
  • 不支持地址轉(zhuǎn)換,也不支持端口映射
  • RS可以是大多數(shù)常見的操作系統(tǒng)
  • RS的網(wǎng)關絕不允許指向DIP(因為我們不允許他經(jīng)過director)
  • RS上的lo接口配置VIP的IP地址
  • 缺陷:RS和DS必須在同一機房中(也就是必須在一個網(wǎng)段中)

3. 特點1的解決方案:

  • 在前端路由器做靜態(tài)地址路由綁定,將對于VIP的地址僅路由到Director Server
  • 存在問題:用戶未必有路由操作權限,因為有可能是運營商提供的,所以這個方法未必實用
  • arptables:在arp的層次上實現(xiàn)在ARP解析時做防火墻規(guī)則,過濾RS響應ARP請求。這是由iptables提供的
  • 修改RS上內(nèi)核參數(shù)(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,并限制其不能響應對VIP地址解析請求。

下面給出具體的配置方式:

配置拓撲:

?1,準備3臺虛擬機

?2,先配置3臺虛擬機的網(wǎng)絡:

–eth0,配置在一個網(wǎng)段

?DIP,RIP在一個網(wǎng)段

?3,配置lvs的VIP

–ifconfig eth0:0 192.168.9.100/24

–echo “1” > /proc/sys/net/ipv4/ip_forward

?4,調(diào)整RS的響應。通告級別(每一臺RS都配):

–echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

–echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

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

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

?5,配置RS的VIP(每一臺RS都配)

–ifconfig lo:8 192.168.9.100 netmask 255.255.255.255

?6,啟動RS上的httpd

–yum install httpd -y

–/var/www/html

?vi index.html

?from ooxxip

–service httpd start

?客戶端驗證:RIP:80 能顯示

–VIP:80不能顯示

?7,LVS——ipvsadm

–yum install ipvsadm -y

–ipvsadm -A -t 192.168.9.100:80 -s rr

–ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.12 -g

–ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.13 -g

–ipvsadm -ln

–瀏覽器刷新: 訪問vip

–ipvsadm –lnc

–netstat -natp

說下實現(xiàn)吧,當客戶端向192.168.9.100發(fā)送請求時,LVS會先根據(jù)服務器使用情況,將請求分發(fā)給其后的Server(可能是node1節(jié)點也可能是node2節(jié)點),

命令ifconfig lo:8 192.168.9.100 netmask 255.255.255.255已將VIP配置為192.168.9.100

ipvsadm -a -t 192.168.9.100:80 -r 192.168.9.12 -g(將LVS與Server進行“綁定”)

如下圖:我的配置為192.168.131.100,兩個進行與運算結果仍然為192.168.131.100,所以

只能調(diào)用eth0,然后192.168.131.162與255.255.255.0與運算,結果為192.168.131.0,結果和從LVS返回結果一樣,所以就實現(xiàn)了從server直接將結果返回給客戶端的請求。(在剛開始工作時,這里也思考了很久,后期終于明白。。。。。。。)

下面說說異地部署(如果你的公司是一個面向全球建立數(shù)據(jù)中心的話):

2.3 LVS-Tun的原理和特點:

在原有的IP報文外再次封裝多一層IP首部,內(nèi)部IP首部(源地址為CIP,目標IIP為VIP),外層IP首部(源地址為DIP,目標IP為RIP)

(a) 當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP 。

(b) PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈

(c) IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然后發(fā)至POSTROUTING鏈。 此時源IP為DIP,目標IP為RIP

(d) POSTROUTING鏈根據(jù)最新封裝的IP報文,將數(shù)據(jù)包發(fā)至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。 此時源IP為DIP,目標IP為RIP

(e) RS接收到報文后發(fā)現(xiàn)是自己的IP地址,就將報文接收下來,拆除掉最外層的IP后,會發(fā)現(xiàn)里面還有一層IP首部,而且目標是自己的lo接口VIP,那么此時RS開始處理此請求,處理完成之后,通過lo接口送給eth0網(wǎng)卡,然后向外傳遞。 此時的源IP地址為VIP,目標IP為CIP

(f) 響應報文最終送達至客戶端

LVS-Tun模型特性

  • RIP、VIP、DIP全是公網(wǎng)地址
  • RS的網(wǎng)關不會也不可能指向DIP
  • 所有的請求報文經(jīng)由Director Server,但響應報文必須不能進過Director Server
  • 不支持端口映射
  • RS的系統(tǒng)必須支持隧道

其實企業(yè)中最常用的是 DR 實現(xiàn)方式,而 NAT 配置上比較簡單和方便,后邊實踐中會總結 DR 和 NAT 具體使用配置過程。

3.LVS結合keepalive

LVS可以實現(xiàn)負載均衡,但是不能夠進行健康檢查,比如一個rs出現(xiàn)故障,LVS 仍然會把請求轉(zhuǎn)發(fā)給故障的rs服務器,這樣就會導致請求的無效性。keepalive 軟件可以進行健康檢查,而且能同時實現(xiàn) LVS 的高可用性,解決 LVS 單點故障的問題,其實 keepalive 就是為 LVS 而生的。

  • Keepalived1 + lvs1(Director1):192.168.0.48
  • Keepalived2 + lvs2(Director2):192.168.0.58
  • Real server1:192.168.0.18
  • Real server2:192.168.0.28
  • IP: 192.168.0.38

Lvs + keepalived的2個節(jié)點安裝

#yum install ipvsadm keepalived -y

Real server + nginx服務的2個節(jié)點安裝

# yum install epel-release -y

# yum install nginx -y

設置配置腳本

Real server節(jié)點2臺配置腳本:

# vim /usr/local/sbin/lvs_dr_rs.sh

#! /bin/bash

vip=192.168.0.38

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo:0

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

2節(jié)點rs 上分別執(zhí)行腳本:

bash /usr/local/sbin/lvs_dr_rs.sh

keepalived節(jié)點配置(2節(jié)點):

主節(jié)點( MASTER )配置文件

vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.38

}

}

virtual_server 192.168.0.38 80 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 0

protocol TCP

real_server 192.168.0.18 80 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.0.28 80 {

weight 1

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

從節(jié)點( BACKUP )配置文件

拷貝主節(jié)點的配置文件keepalived.conf,然后修改如下內(nèi)容:

state MASTER -> state BACKUP

priority 100 -> priority 90

keepalived的2個節(jié)點執(zhí)行如下命令,開啟轉(zhuǎn)發(fā)功能:

# echo 1 > /proc/sys/net/ipv4/ip_forward

啟動keepalive

<strong>先主后從分別啟動keepalive</strong>

service keepalived start

驗證結果

實驗1

手動關閉192.168.0.18節(jié)點的nginx,service nginx stop 在客戶端上去測試訪問 http://192.168.0.38 結果正常,不會出現(xiàn)訪問18節(jié)點,一直訪問的是28節(jié)點的內(nèi)容。

實驗2

手動重新開啟 192.168.0.18 節(jié)點的nginx, service nginx start 在客戶端上去測試訪問 http://192.168.0.38 結果正常,按照 rr 調(diào)度算法訪問18節(jié)點和28節(jié)點。

實驗3

測試 keepalived 的HA特性,首先在master上執(zhí)行命令 ip addr ,可以看到38的vip在master節(jié)點上的;這時如果在master上執(zhí)行 service keepalived stop 命令,這時vip已經(jīng)不再master上,在slave節(jié)點上執(zhí)行 ip addr 命令可以看到 vip 已經(jīng)正確漂到slave節(jié)點,這時客戶端去訪問 http://192.168.0.38 訪問依然正常,驗證了 keepalived的HA特性。

總結

以上是生活随笔為你收集整理的net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。