最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

LVS(linuxvirtualserver)使用及說(shuō)明

 更新時(shí)間:2026年02月24日 09:18:43   作者:feng68_  
該文章介紹了集群和分布式系統(tǒng)的基本概念,以及LVS負(fù)載均衡技術(shù)的原理、類(lèi)型、工作模式和調(diào)度算法,還詳細(xì)描述了LVS的配置和部署命令,以及實(shí)際應(yīng)用中的實(shí)驗(yàn)環(huán)境和測(cè)試方法

1 名詞介紹

1.1 集群和分布式

系統(tǒng)性能擴(kuò)展方式:

  • Scale UP:向上擴(kuò)展,增強(qiáng)
  • Scale Out:向外擴(kuò)展,增加設(shè)備,調(diào)度分配問(wèn)題,Cluster

1.1.1 集群

Cluster: 集群是為了解決某個(gè)特定問(wèn)題將多臺(tái)計(jì)算機(jī)組合起來(lái)形成的單個(gè)系統(tǒng)。

Cluster常見(jiàn)的三種類(lèi)型:

LB:LoadBalancing(負(fù)載均衡)由多個(gè)主機(jī)組成,每個(gè)主機(jī)只承擔(dān)一部分訪問(wèn)。

HA:High Availiablity(高可用)SPOF(single Point Of failure)

  • MTBF:Mean Time Between Failure 平均無(wú)故障時(shí)間,正常時(shí)間。
  • MTTR:Mean Time To Restoration( repair)平均恢復(fù)前時(shí)間,故障時(shí)間。
  • A=MTBF/(MTBF+MTTR)(0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%
  • SLA:Service level agreement(服務(wù)等級(jí)協(xié)議)是在一定開(kāi)銷(xiāo)下為保障服務(wù)的性能和可用性,服務(wù)提供商與用戶間定義的一種雙方認(rèn)可的協(xié)定。

HPC:High-performance computing(高性能計(jì)算,國(guó)家戰(zhàn)略資源)

1.1.2 分布式

  • 分布式存儲(chǔ):Ceph,GlusterFs,F(xiàn)astDFS,MogileFs
  • 分布式計(jì)算:hadoop,Spark

分布式常見(jiàn)應(yīng)用:

  • 分布式應(yīng)用-->服務(wù)按照功能拆分,使用微服務(wù)。
  • 分布式靜態(tài)資源-->靜態(tài)資源放在不同的存儲(chǔ)集群上。
  • 分布式數(shù)據(jù)和存儲(chǔ)-->使用key-value緩存系統(tǒng)。
  • 分布式計(jì)算-->對(duì)特殊業(yè)務(wù)使用分布式計(jì)算,比如Hadoop集群。

1.1.3 集群于分布式應(yīng)用比較

集群:同一個(gè)業(yè)務(wù)系統(tǒng),部署在多臺(tái)服務(wù)器上。集群中,每一臺(tái)服務(wù)器實(shí)現(xiàn)的功能沒(méi)有差別,數(shù)據(jù)和代碼都是類(lèi)似的。

分布式:一個(gè)業(yè)務(wù)被拆成多個(gè)子業(yè)務(wù),或者本身就是不同的業(yè)務(wù),部署在多臺(tái)服務(wù)器上。分布式中,每一臺(tái)服務(wù)器實(shí)現(xiàn)的功能是有差別的,數(shù)據(jù)和代碼也是不一樣的,分布式每臺(tái)服務(wù)器功能加起來(lái),才是完整的業(yè)務(wù)。

分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來(lái)提升效率,而集群則是通過(guò)提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來(lái)提升效率。

對(duì)于大型網(wǎng)站,訪問(wèn)用戶很多,實(shí)現(xiàn)一個(gè)群集,在前面部署一個(gè)負(fù)載均衡服務(wù)器,后面幾臺(tái)服務(wù)器完成同一業(yè)務(wù)。如果有用戶進(jìn)行相應(yīng)業(yè)務(wù)訪問(wèn)時(shí),負(fù)載均衡器根據(jù)后端哪臺(tái)服務(wù)器的負(fù)載情況,決定由給哪一臺(tái)去完成響應(yīng),并且臺(tái)服務(wù)器垮了,其它的服務(wù)器可以頂上來(lái)。分布式的每一個(gè)節(jié)點(diǎn),都完成不同的業(yè)務(wù),如果一個(gè)節(jié)點(diǎn)垮了,那這個(gè)業(yè)務(wù)可能就會(huì)失敗。

1.2 LVS

LVS 全稱(chēng) Linux Virtual Server,是 Linux 內(nèi)核層實(shí)現(xiàn)的高性能、高可用的負(fù)載均衡集群技術(shù),由章文嵩博士開(kāi)發(fā),它的核心作用將前端的請(qǐng)求流量分發(fā)到后端多臺(tái)真實(shí)服務(wù)器(Real Server)上,從而提升服務(wù)的并發(fā)處理能力和可用性。

LVS簡(jiǎn)介

  • LVS:Linux Virtual Server,負(fù)載調(diào)度器,內(nèi)核集成,章文嵩,
  • 阿里的四層SLB(Server LoadBalance)是基于LVS+keepalived實(shí)現(xiàn)。

LVS相關(guān)術(shù)語(yǔ)

  • VS: Virtual Server,負(fù)責(zé)調(diào)度。
  • RS:RealServer,負(fù)責(zé)真正提供服務(wù)。

LVS概念

  • VS:Virtual Server(調(diào)度器)
  • RS:Real Server (真實(shí)業(yè)務(wù)主機(jī))
  • CIP:Client IP (客戶端主機(jī)的ip)
  • VIP: Virtual serve IP VS外網(wǎng)的IP (對(duì)外開(kāi)放的讓客戶訪問(wèn)的ip)
  • DIP: Director IP VS內(nèi)網(wǎng)的IP (調(diào)度器負(fù)責(zé)訪問(wèn)內(nèi)網(wǎng)的ip)
  • RIP: Real server IP (真實(shí)業(yè)務(wù)主機(jī)IP)

工作原理

VS(調(diào)度器)根據(jù)請(qǐng)求報(bào)文目標(biāo)IP目標(biāo)協(xié)議端口將其調(diào)度轉(zhuǎn)發(fā)至某RS(真實(shí)業(yè)務(wù)主機(jī)),根據(jù)調(diào)度算法來(lái)挑選RS。

LVS訪問(wèn)流程

  • CIP <--> VIP == DIP <--> RIP

LVS集群的類(lèi)型

  • lvs-nat:修改請(qǐng)求報(bào)文的目標(biāo)IP,多目標(biāo)IP的DNAT。
  • lvs-dr:操縱封裝新的MAC地址。
  • lvs-tun:在原請(qǐng)求IP報(bào)文之外新加一個(gè)IP首部。
  • lvs-fullnat:修改請(qǐng)求報(bào)文的源和目標(biāo)IP。

2 LVS集群的類(lèi)型

2.1 NAT模式

2.1.1 說(shuō)明

  • 本質(zhì)是多目標(biāo)IP的DNAT,通過(guò)將請(qǐng)求報(bào)文中的目標(biāo)地址目標(biāo)端口修改為某挑出的RS的RIPPORT實(shí)現(xiàn)轉(zhuǎn)發(fā)。
  • RIP和DIP應(yīng)在同一個(gè)IP網(wǎng)絡(luò),且應(yīng)使用私網(wǎng)地址;RS的網(wǎng)關(guān)要指向DIP。
  • 請(qǐng)求報(bào)文和響應(yīng)報(bào)文都必須經(jīng)由Director轉(zhuǎn)發(fā),Director易于成為系統(tǒng)瓶頸。
  • 支持端口映射,可修改請(qǐng)求報(bào)文的目標(biāo)PORT。
  • VS必須是Linux系統(tǒng),RS可以是任意OS系統(tǒng)。

2.1.2 數(shù)據(jù)邏輯

1.客戶端發(fā)送訪問(wèn)請(qǐng)求,請(qǐng)求數(shù)據(jù)包中含有請(qǐng)求來(lái)源(CIP)、訪問(wèn)目標(biāo)地址(VIP)、訪問(wèn)目標(biāo)端口(9000Port)。

2.VS服務(wù)器接收到訪問(wèn)請(qǐng)求做DNAT把請(qǐng)求數(shù)據(jù)包中的目的地由VIP換成RS的RIP和相應(yīng)端口。

3.RS1相應(yīng)請(qǐng)求,發(fā)送響應(yīng)數(shù)據(jù)包,包中的相應(yīng)保溫為數(shù)據(jù)來(lái)源(RIP1)響應(yīng)目標(biāo)(CIP)相應(yīng)端口(9000Port)。

4.VS服務(wù)器接收到響應(yīng)數(shù)據(jù)包,改變包中的數(shù)據(jù)來(lái)源(RIP1-->VIP),響應(yīng)目標(biāo)端口(9000-->80)。

5.VS服務(wù)器把修改過(guò)報(bào)文的響應(yīng)數(shù)據(jù)包回傳給客戶端。

LVS的NAT模式接收和返回客戶端數(shù)據(jù)包時(shí)都要經(jīng)過(guò)LVS的調(diào)度機(jī),所以LVS的調(diào)度機(jī)容易阻塞。

2.1.3 數(shù)據(jù)傳輸過(guò)程

客戶請(qǐng)求到達(dá)VIP后進(jìn)入PREROUTING,在沒(méi)有ipvs的時(shí)候因該進(jìn)入本機(jī)INPUT,當(dāng)IPVS存在后訪問(wèn)請(qǐng)求在通過(guò)PREROUTING后被IPVS結(jié)果并作NAT轉(zhuǎn)發(fā)。

因?yàn)镮PVS的作用點(diǎn)是在PREROUTING和INPUT鏈之間,所以如果在prerouting中設(shè)定規(guī)則會(huì)干擾IPVS的工作。所以在做LVS時(shí)要把iptables的火墻策略全清理掉。

2.2 DR模式

2.2.1 說(shuō)明

因?yàn)镹AT模式數(shù)據(jù)流向(Client訪問(wèn)RealServer和其的回復(fù))都要經(jīng)過(guò)VirtualServer,當(dāng)真實(shí)主機(jī)過(guò)多時(shí)(比如10臺(tái)以上這樣)調(diào)度器會(huì)有頂不住的問(wèn)題;DR(直連回復(fù)方式)模式就可以解決這個(gè)問(wèn)題,讓RS不通過(guò)VS回復(fù)Client而是直接回復(fù)Client。

DR:Direct Routing,直接路由,LVS默認(rèn)模式,應(yīng)用最廣泛,通過(guò)為請(qǐng)求報(bào)文重新封裝一個(gè)MAC首部進(jìn)行轉(zhuǎn)發(fā),源MAC是DIP所在的接口的MAC,目標(biāo)MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標(biāo)IP/PORT均保持不變。

NAT模式主要玩三層,DR模式主要玩二層。NAT在VS中變IP和POST,DR在VS中變MAC。

2.2.2 數(shù)據(jù)邏輯

在DR模式中,RS接收到訪問(wèn)請(qǐng)求后不需要回傳給VS調(diào)度器,直接把回傳數(shù)據(jù)發(fā)送給Client,所以RS和VS上都要有vip。

2.2.3 數(shù)據(jù)傳輸過(guò)程

  • 客戶端發(fā)送數(shù)據(jù)幀給vs調(diào)度主機(jī)幀中內(nèi)容為客戶端IP+客戶端的MAC+VIP+VIP的MAC。
  • VS調(diào)度主機(jī)接收到數(shù)據(jù)幀后把幀中的VIP的MAC該為RS1的MAC,此時(shí)幀中的數(shù)據(jù)為客戶端IP+客戶端的MAC+VIP+RS1的MAC。
  • RS1得到2中的數(shù)據(jù)包做出響應(yīng)回傳數(shù)據(jù)包,數(shù)據(jù)包中的內(nèi)容為VIP+RS1的MAC+客戶端IP+客戶端IP的MAC。
抓包理解

抓包理解LVS中的DR模式

2.2.4 DR模式的特點(diǎn)

  • Director和各RS都配置有VIP.
  • 確保前端路由器將目標(biāo)IP為VIP的請(qǐng)求報(bào)文發(fā)往Director.
  • 在前端網(wǎng)關(guān)做靜態(tài)綁定VIP和Director的MAC地址.
  • RS的RIP可以使用私網(wǎng)地址,也可以是公網(wǎng)地址;RIP與DIP在同一IP網(wǎng)絡(luò).
  • RIP的網(wǎng)關(guān)不能指向DIP,以確保響應(yīng)報(bào)文不會(huì)經(jīng)由Director.
  • RS和Director要在同一個(gè)物理網(wǎng)絡(luò).
  • 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)報(bào)文不經(jīng)由Director,而由RS直接發(fā)往Client.
  • 不支持端口映射(端口不能修?。?
  • RS可使用大多數(shù)OS系統(tǒng).

2.3 TUN模式

2.3.1 說(shuō)明

轉(zhuǎn)發(fā)方式:不修改請(qǐng)求報(bào)文的IP首部(源IP為CIP,目標(biāo)IP為VIP),而在原IP報(bào)文之外再封裝一個(gè)IP首部

(源IP是DIP,目標(biāo)IP是RIP),將報(bào)文發(fā)往挑選出的目標(biāo)RS;RS直接響應(yīng)給客戶端(源IP是VIP,目標(biāo)IP是CIP)

2.3.2 數(shù)據(jù)傳輸過(guò)程

  • 客戶端發(fā)送請(qǐng)求數(shù)據(jù)包,包內(nèi)有源IP+vip+dport。
  • 到達(dá)vs調(diào)度器后對(duì)客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)包重新封裝添加IP報(bào)文頭,新添加的IP報(bào)文頭中包含TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并發(fā)送到RS1。
  • RS收到VS調(diào)度器發(fā)送過(guò)來(lái)的數(shù)據(jù)包做出響應(yīng),生成的響應(yīng)報(bào)文中包含SRCIP(VIP)+DSTIP(CIP)+port,響應(yīng)數(shù)據(jù)包通過(guò)網(wǎng)絡(luò)直接回傳給client。

2.3.3 特點(diǎn)

  • DIP, VIP, RIP都應(yīng)該是公網(wǎng)地址。
  • RS的網(wǎng)關(guān)一般不能指向DIP。
  • 請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director。
  • 不支持端口映射。
  • RS的OS須支持隧道功能。

2.4 FULLNAT模式

fullnat:通過(guò)同時(shí)修改請(qǐng)求報(bào)文的源IP地址和目標(biāo)IP地址進(jìn)行轉(zhuǎn)發(fā);CIP --> DIP;VIP --> RIP .

  • VIP是公網(wǎng)地址,RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò);因此,RIP的網(wǎng)關(guān)一般不會(huì)指向DIP。
  • RS收到的請(qǐng)求報(bào)文源地址是DIP,因此,只需響應(yīng)給DIP;但Director還要將其發(fā)往Client。
  • 請(qǐng)求和響應(yīng)報(bào)文都經(jīng)由Director。
  • 支持端口映射。

2.5 工作模式比較

要求NAT模式DR模式TUN模式
RS操作系統(tǒng)不限禁用arp支持隧道
調(diào)度器和服務(wù)器網(wǎng)絡(luò)可跨網(wǎng)絡(luò)不可跨網(wǎng)絡(luò)可跨網(wǎng)絡(luò)
調(diào)度服務(wù)器數(shù)量服務(wù)器數(shù)量
RS服務(wù)器網(wǎng)關(guān)指向到調(diào)度器DIP指向到路由指向到路由
  • NAT與FULLNAT:請(qǐng)求和響應(yīng)報(bào)文都經(jīng)由Director。
  • FULLNAT:RIP和DIP未必在同一IP網(wǎng)絡(luò),但要能通信。
  • NAT:RIP的網(wǎng)關(guān)要指向DIP。
  • DR與TUN:請(qǐng)求報(bào)文要經(jīng)由Director,但響應(yīng)報(bào)文由RS直接發(fā)往Client。
  • DR:通過(guò)封裝新的MAC首部實(shí)現(xiàn),通過(guò)MAC網(wǎng)絡(luò)轉(zhuǎn)發(fā)。
  • TUN:通過(guò)在原IP報(bào)文外封裝新IP頭實(shí)現(xiàn)轉(zhuǎn)發(fā),支持遠(yuǎn)距離通信。

3 LVS調(diào)度算法

根據(jù)其調(diào)度時(shí)是否考慮各RS當(dāng)前的負(fù)載狀態(tài)被分為兩種:靜態(tài)方法和動(dòng)態(tài)方法

3.1 LVS靜態(tài)調(diào)度算法

靜態(tài)方法:僅根據(jù)算法本身進(jìn)行調(diào)度,不考慮RS的負(fù)載情況。

  • RR:roundrobin 輪詢(xún) RS分別被調(diào)度,當(dāng)RS配置有差別時(shí)不推薦。
  • WRR:Weighted RR,加權(quán)輪詢(xún)根據(jù)RS的配置進(jìn)行加權(quán)調(diào)度,性能差的RS被調(diào)度的次數(shù)少。
  • SH:Source Hashing,實(shí)現(xiàn)session sticky,源IP地址hash;將來(lái)自于同一個(gè)IP地址的請(qǐng)求始終發(fā)往第一次挑中的RS,從而實(shí)現(xiàn)會(huì)話綁定。
  • DH:Destination Hashing;目標(biāo)地址哈希,第一次輪詢(xún)調(diào)度至RS,后續(xù)將發(fā)往同一個(gè)目標(biāo)地址的請(qǐng)求始終轉(zhuǎn)發(fā)至第一次挑中的RS,典型使用場(chǎng)景是正向代理緩存場(chǎng)景中的負(fù)載均衡,如:寬帶運(yùn)營(yíng)商。

3.2 LVS動(dòng)態(tài)調(diào)度算法

動(dòng)態(tài)方法:主要根據(jù)每RS當(dāng)前的負(fù)載狀態(tài)及調(diào)度算法進(jìn)行調(diào)度Overhead=value較小的RS將被調(diào)度。

  • LC(least connections最少鏈接發(fā)):適用于長(zhǎng)連接應(yīng)用Overhead(負(fù)載值)=activeconns(活動(dòng)鏈接數(shù)) x 256+inactiveconns(非活動(dòng)鏈接數(shù))。
  • WLC(Weighted LC權(quán)重最少鏈接):默認(rèn)調(diào)度方法Overhead=(activeconns x 256+inactiveconns)/weight。
  • SED(Shortest Expection Delay):初始連接高權(quán)重優(yōu)先Overhead=(activeconns+1+inactiveconns) x 256/weight但是,當(dāng)node1的權(quán)重為1,node2的權(quán)重為10,經(jīng)過(guò)運(yùn)算前幾次的調(diào)度都會(huì)被node2承接。
  • NQ(Never Queue):第一輪均勻分配,后續(xù)SED。
  • LBLC(Locality-Based LC):動(dòng)態(tài)的DH算法,使用場(chǎng)景:根據(jù)負(fù)載狀態(tài)實(shí)現(xiàn)正向代理。
  • LBLCR(LBLC with Replication):帶復(fù)制功能的LBLC,解決LBLC負(fù)載不均衡問(wèn)題,從負(fù)載重的復(fù)制到負(fù)載輕的RS。

3.3 版本4.15內(nèi)核后新增調(diào)度算法

FO(Weighted Fai Over):常用作灰度發(fā)布;在此FO算法中,遍歷虛擬服務(wù)所關(guān)聯(lián)的真實(shí)服務(wù)器鏈表,找到還未過(guò)載(未設(shè)置IP_VS_DEST_FOVERLOAD標(biāo)志)的且權(quán)重最高的真實(shí)服務(wù)器,進(jìn)行調(diào)度;當(dāng)服務(wù)器承接大量鏈接,我們可以對(duì)此服務(wù)器進(jìn)行過(guò)載標(biāo)記(IP_VS_DEST_F OVERLOAD),那么vs調(diào)度器就不會(huì)把鏈接調(diào)度到有過(guò)載標(biāo)記的主機(jī)中。

OVF(Overflow-connection):基于真實(shí)服務(wù)器的活動(dòng)連接數(shù)量和權(quán)重值實(shí)現(xiàn)。將新連接調(diào)度到權(quán)重值最高的真實(shí)服務(wù)器,直到其活動(dòng)連接數(shù)量超過(guò)權(quán)重值,之后調(diào)度到下一個(gè)權(quán)重值最高的真實(shí)服務(wù)器,在此OVF算法中,遍歷虛擬服務(wù)相關(guān)聯(lián)的真實(shí)服務(wù)器鏈表,找到權(quán)重值最高的可用真實(shí)服務(wù)器。一個(gè)可用的真實(shí)服務(wù)器需要同時(shí)滿足以下條件:

  • 未過(guò)載(未設(shè)置IP_VS_DEST_F OVERLOAD標(biāo)志)。
  • 真實(shí)服務(wù)器當(dāng)前的活動(dòng)連接數(shù)量小于其權(quán)重值。
  • 其權(quán)重值不為零。

4 LVS部署命令介紹

4.1 相關(guān)軟件信息

  • 程序包:ipvsadm
  • Unit File:ipvsadm.service
  • 主程序:/usr/sbin/ipvsadm
  • 規(guī)則保存工具:/usr/sbin/ipvsadm-save
  • 規(guī)則重載工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config
  • ipvs調(diào)度規(guī)則文件:/etc/sysconfig/ipvsadm

4.2 ipvsadm命令

核心功能:集群服務(wù)管理集群服務(wù)的RealServer:增、刪、改、查。

  • pvs規(guī)則:/proc/net/ip_vs
  • ipvs連接:/proc/net/ip_vs_conn

命令參數(shù):

管理集群服務(wù)

 ipvsadm -A|E -t(tcp)|u(udp)|f(防護(hù)墻標(biāo)簽) \
 service-address(集群地址-->DIP) \
 [-s scheduler(調(diào)度算法)] \
 [-p [timeout]] \
 [-M netmask] \
 [--pepersistence_engine] \
 [-b sched-flags]
 ipvsadm -A|E -t|u|f DIP [-s scheduler] [-p [timeout]]
 -A #添加
 -E #修改
 -t #tcp服務(wù)
 -u #udp服務(wù)
 -s #指定調(diào)度算法,默認(rèn)為WLC
 -p #設(shè)置持久連接超時(shí),持久連接可以理解為在同一個(gè)時(shí)間段同一個(gè)來(lái)源的請(qǐng)求調(diào)度到同一RealServer
 -f #firewall mask 火墻標(biāo)記,是一個(gè)數(shù)字
 ?
 # 增
 ipvsadm -A -t|u DIP -s [調(diào)度算法]
 ipvsadm -A -f [火墻標(biāo)記](méi) DIP -p [持久連接超時(shí)時(shí)間]
 ?
 # 改
 ipvsadm -E -t|u DIP -s [調(diào)度算法] -p [持久連接超時(shí)時(shí)間]
 ?
 # 刪
 ipvsadm -D -t|u service-address
 ipvsadm -D -f [火墻標(biāo)記](méi)

管理集群中的RS

 ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w weight](權(quán)重)
 ipvsadm -a|e -t(tcp)|u(udp)|f(防護(hù)墻標(biāo)簽) \
 service-address(集群地址-->DIP) \
 -r server-address(真實(shí)服務(wù)地址--RIP) \
 [-g | -i| -m](工作模式) \
 [-w weight](權(quán)重)
 ipvsadm -a|e -t|u|f DIP -r RIP [-g|i|m] -w [weight]
 -a #添加realserver
 -e #更改realserver中的參數(shù),注如果要更改RIP要?jiǎng)h了再添加到達(dá)修改效果。
 -t #tcp協(xié)議
 -u #udp協(xié)議
 -f #火墻 標(biāo)簽
 -r #realserver地址
 -g #直連路由模式
 -i #ipip隧道模式
 -m #nat模式
 -w #設(shè)定權(quán)重
 -Z #清空計(jì)數(shù)器
 -C #清空l(shuí)vs策略
 -L #查看lvs策略
 -n #不做解析
 --rate :輸出速率信息
 ?
 # 增、改
 ipvsadm -a|e -t|u|f DIP -r RIP [-g|i|m]
 ipvsadm -a|e -t|u|f DIP -r RIP [-g|i|m] -w [weight]
 # 刪
 ipvsadm -d -t|u|f service-address -r server-address # 刪除RS
 ipvsadm -Z [-t|u|f service-address] # 清除計(jì)數(shù)器

其它

 # 查
 ipvsadm -L|l [options] 查看RS
 ipvsadm -Ln --rate
 [root@DR-server ~]# ipvsadm -Ln --rate
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port              CPS InPPS OutPPS InBPS OutBPS
 ………………
 #CPS:每秒連接數(shù),表示服務(wù)器處理新連接的速率
 #InPPS:每秒入站數(shù)據(jù)包數(shù)量,即從客戶端發(fā)送到負(fù)載均衡器的數(shù)據(jù)包速率
 #OutPPS:每秒出站數(shù)據(jù)包數(shù)量,即從負(fù)載均衡器向后端服務(wù)器或客戶端發(fā)送數(shù)據(jù)包的速率
 #InBPS:每秒入站流量(字節(jié)),即從客戶端到服務(wù)器的流量速率。
 #OutBPS:每秒出站流量(字節(jié)),即從服務(wù)器到客戶端的流量速率。
 ?
 # 其它
 ipvsadm –C 清空策略
 ipvsadm –R 重載
 ipvsadm -S [-n] 保存

5 LVS實(shí)踐

5.1 NAT模式實(shí)現(xiàn)

5.1.1 實(shí)驗(yàn)環(huán)境

主機(jī)名角色VIPDIPRIPCIP網(wǎng)關(guān)
VSNode調(diào)度器172.25.254.100192.168.0.100NULLNULL(172.25.254.2)
RS1真實(shí)服務(wù)器NULLNULL192.168.0.20NULL192.168.0.100
RS2真實(shí)服務(wù)器NULLNULL192.168.0.30NULL192.168.0.100
Client用戶測(cè)試機(jī)NULLNULLNULL172.25.254.101(172.25.254.2)

網(wǎng)絡(luò)環(huán)境

 # 調(diào)度器
 [root@VSNode ~]# ip a | egrep "eth0$|eth1$"
     inet 172.25.254.100/24 brd 172.25.254.255 scope global noprefixroute eth0
     inet 192.168.0.100/24 brd 192.168.0.255 scope global noprefixroute eth1
 [root@VSNode ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         172.25.254.2    0.0.0.0         UG    100    0        0 eth0
 172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     101    0        0 eth1
 # RS1
 [root@RS1 ~]# ip a | grep eth0$
     inet 192.168.0.20/24 brd 192.168.0.255 scope global noprefixroute eth0
 [root@RS1 ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
 # RS2
 [root@RS2 ~]# ip a | grep eth0$
     inet 192.168.0.30/24 brd 192.168.0.255 scope global noprefixroute eth0
 [root@RS2 ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

調(diào)度器環(huán)境

 # 開(kāi)啟內(nèi)核路由功能
 [root@VSNode ~]# sysctl -a | grep ip_forward
 net.ipv4.ip_forward = 0
 net.ipv4.ip_forward_update_priority = 1
 net.ipv4.ip_forward_use_pmtu = 0
 [root@VSNode ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
 [root@VSNode ~]# sysctl -p
 net.ipv4.ip_forward = 1
 [root@VSNode ~]# sysctl -a | grep ip_forward
 net.ipv4.ip_forward = 1
 net.ipv4.ip_forward_update_priority = 1
 net.ipv4.ip_forward_use_pmtu = 0
 [root@VSNode ~]# sh /usr/bin/my_script/swhouse_set.sh
 ==============================Start wshouse_set.sh script==============================
 Enter [function name] to option function,script support local,network,custom.
 Local,Aliyun,Docker,Epel,Customize):Aliyun
 Updating Subscription Management repositories.
 Unable to read consumer identity
 ?
 This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
 ?
 repo id                                         repo name
 AliyunAppStream                                 Aliyun.appstream
 AliyunBaseOS                                    Aliyun.baseos
 ?
 Sucess modify!!!
 ==============================End wshouse_set.sh script================================
 [root@VSNode ~]# dnf install ipvsadm -y >/dev/null

服務(wù)環(huán)境

 # RS1
 [root@RS1 ~]# sh /usr/bin/my_script/swhouse_set.sh
 ==============================Start wshouse_set.sh script==============================
 Enter [function name] to option function,script support local,network,custom.
 Local,Aliyun,Docker,Epel,Customize):Local
 Updating Subscription Management repositories.
 Unable to read consumer identity
 ?
 This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
 ?
 repo id                                         repo name
 LocalAppStream                                  Local.appstream
 LocalBaseOS                                     Local.baseos
 ?
 Sucess modify!!!
 ==============================End wshouse_set.sh script================================
 [root@RS1 ~]# dnf install httpd -y >/dev/null
 [root@RS1 ~]# systemctl enable --now httpd
 Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
 [root@RS1 ~]# echo RS1 - 192.168.0.20 > /var/www/html/index.html
 # RS2
 ……

測(cè)試環(huán)境

 [root@VSNode ~]# curl 192.168.0.20
 RS1 - 192.168.0.20
 [root@VSNode ~]# curl 192.168.0.30
 RS2 - 192.168.0.30

5.1.2 策略編寫(xiě)

調(diào)度器
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 [root@VSNode ~]# ipvsadm -A -t 172.25.254.100:80 -s wrr
 [root@VSNode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m  -w 1
 [root@VSNode ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30:80 -m  -w 1
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  172.25.254.100:80 wrr
   -> 192.168.0.20:80              Masq    1      0          0
   -> 192.168.0.30:80              Masq    1      0          0
規(guī)則持久化
 # 1.利用自定義文件進(jìn)行持久化
 [root@VSNode ~]# ipvsadm-save -n > /mnt/ipvs.rule
 [root@VSNode ~]# ipvsadm -C
 [root@VSNode ~]# reboot
 [root@VSNode ~]# ipvsadm-restore < /mnt/ipvs.rule
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  172.25.254.100:80 wrr
   -> 192.168.0.20:80              Masq    1      0          0
   -> 192.168.0.30:80              Masq    1      0          0
 # 2.利用守護(hù)進(jìn)程進(jìn)行規(guī)則持久化
 # 通過(guò)查看ipvsadm的狀態(tài)知道是在這個(gè)文件/etc/sysconfig/ipvsadm中讀取規(guī)則的,有規(guī)則就可以成功啟動(dòng),沒(méi)有就報(bào)錯(cuò)。
 [root@VSNode ~]# systemctl status ipvsadm | grep -i process
     Process: 28890 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=0/SUCCESS)
 [root@VSNode ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
 [root@VSNode ~]# ipvsadm -C
 [root@VSNode ~]# systemctl enable --now ipvsadm.service
 Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
 [root@VSNode ~]# reboot
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  172.25.254.100:80 wrr
   -> 192.168.0.20:80              Masq    1      0          0
   -> 192.168.0.30:80              Masq    1      0          0

5.1.3 測(cè)試

 [root@Client ~]# for i in {1..10};do curl 172.25.254.100;done
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20

5.2 DR模式實(shí)現(xiàn)

5.2.1 實(shí)驗(yàn)環(huán)境

主機(jī)名角色VIPDIPRIPCIP網(wǎng)關(guān)
Router路由器172.25.254.100192.168.0.100NULLNULL(172.25.254.2)
VSNode調(diào)度器192.168.0.200192.168.0.50NULLNULL192.168.0.100
RS1真實(shí)服務(wù)器192.168.0.200NULL192.168.0.20NULL192.168.0.100
RS2真實(shí)服務(wù)器192.168.0.200NULL192.168.0.30NULL192.168.0.100
Client用戶測(cè)試機(jī)NULLNULLNULL172.25.254.101172.25.254.100
路由器
 # IP配置
 [root@Router ~]# ip a | egrep "eth0$|eth1$"
     inet 172.25.254.100/24 brd 172.25.254.255 scope global noprefixroute eth0
     inet 192.168.0.100/24 brd 192.168.0.255 scope global noprefixroute eth1
 # 開(kāi)啟內(nèi)核路由
 [root@Router ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
 [root@Router ~]# sysctl -p
 net.ipv4.ip_forward = 1
調(diào)度器
 # IP設(shè)置
 [root@VSNode ~]# cd /etc/NetworkManager/system-connections/
 [root@VSNode system-connections]# cp eth0.nmconnection lo.nmconnection
 [root@VSNode system-connections]# vim lo.nmconnection
 [connection]
 id=lo
 type=loopback
 interface-name=lo
 ?
 [ipv4]
 method=manual
 address1=172.0.0.1/8
 address2=192.168.0.200/32
 [root@VSNode system-connections]# nmcli c reload lo
 [root@VSNode system-connections]# nmcli c up lo
 [root@VSNode system-connections]# ip a | egrep "lo$|eth0$"
     inet 127.0.0.1/8 scope host lo
     inet 192.168.0.200/32 scope global lo
     inet 192.168.0.50/24 brd 192.168.0.255 scope global noprefixroute eth0
 [root@VSNode ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
 [root@VSNode ~]# for i in {20,30};do
 > scp /etc/NetworkManager/system-connections/lo.nmconnection root@192.168.0.$i:/etc/NetworkManager/system-connections/lo.nmconnection
 > done
Client
 [root@Client ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
 [root@Client ~]# nmcli c reload eth0
 [root@Client ~]# nmcli c up eth0
 [root@Client ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         172.25.254.100  0.0.0.0         UG    100    0        0 eth0
 172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
RS1
 [root@RS1 ~]# nmcli c reload
 [root@RS1 ~]# nmcli c up lo
 [root@RS1 ~]# ip a | egrep "lo$|eth0$"
     inet 127.0.0.1/8 scope host lo
     inet 192.168.0.200/32 scope global lo
     inet 192.168.0.20/24 brd 192.168.0.255 scope global noprefixroute eth0
 [root@RS1 ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
 # 禁止ARP響應(yīng)
 [root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
 [root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
 [root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
 [root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
RS2
 [root@RS2 ~]# nmcli c reload
 [root@RS2 ~]# nmcli c up lo
 [root@RS2 ~]# ip a | egrep "lo$|eth0$"
     inet 127.0.0.1/8 scope host lo
     inet 192.168.0.200/32 scope global lo
     inet 192.168.0.30/24 brd 192.168.0.255 scope global noprefixroute eth0
 [root@RS2 ~]# route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
 192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
 # 禁止ARP響應(yīng)
 [root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
 [root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
 [root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
 [root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

5.2.2 測(cè)試編寫(xiě)

路由器
 # 數(shù)據(jù)轉(zhuǎn)發(fā)策略
 [root@Router ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
 [root@Router ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
 # 查看NAT表
 [root@Router ~]# iptables -t nat -L
 ………………
 Chain POSTROUTING (policy ACCEPT)
 target     prot opt source               destination
 SNAT       all  --  anywhere             anywhere             to:192.168.0.100
 SNAT       all  --  anywhere             anywhere             to:172.25.254.100
 [root@Router ~]# iptables -t nat -S
 -P PREROUTING ACCEPT
 -P INPUT ACCEPT
 -P OUTPUT ACCEPT
 -P POSTROUTING ACCEPT
 -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
 -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
調(diào)度器
 [root@VSNode ~]# sh /usr/bin/my_script/swhouse_set.sh
 ==============================Start wshouse_set.sh script==============================
 Enter [function name] to option function,script support local,network,custom.
 Local,Aliyun,Docker,Epel,Customize):Local
 ==============================End wshouse_set.sh script================================
 [root@VSNode ~]# dnf install ipvsadm -y >/dev/null
 [root@VSNode ~]# ipvsadm -A -t 192.168.0.200:80 -s rr
 [root@VSNode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g
 [root@VSNode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.30 -g
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  192.168.0.200:80 rr
   -> 192.168.0.20:80              Route   1      0          0
   -> 192.168.0.30:80              Route   1      0          0
 [root@VSNode ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
 [root@VSNode ~]# systemctl start ipvsadm

5.2.3 測(cè)試

 [root@Client ~]# for i in {1..10};do curl 192.168.0.200;done
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 RS2 - 192.168.0.30
 RS1 - 192.168.0.20
 [root@Client ~]#

5.3 利用火墻解決輪詢(xún)錯(cuò)誤問(wèn)題

http和https是獨(dú)立的service,輪詢(xún)會(huì)出現(xiàn)重復(fù)問(wèn)題

5.3.1 現(xiàn)象復(fù)現(xiàn)

RS
 # RS中開(kāi)啟http和heeps協(xié)議
 [root@RS1 ~]# dnf install mod_ssl -y >/dev/null
 [root@RS1 ~]# systemctl restart httpd
VSNode
 # 添加https策略
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  192.168.0.200:80 rr
   -> 192.168.0.20:80              Route   1      0          0
   -> 192.168.0.30:80              Route   1      0          0
 [root@VSNode ~]# ipvsadm -A -t 192.168.0.200:443 -s rr
 [root@VSNode ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g
 [root@VSNode ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.30:443 -g
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  192.168.0.200:80 rr
   -> 192.168.0.20:80              Route   1      0          0
   -> 192.168.0.30:80              Route   1      0          0
 TCP  192.168.0.200:443 rr
   -> 192.168.0.20:443             Route   1      0          0
   -> 192.168.0.30:443             Route   1      0          0
錯(cuò)誤展示
 [root@Client ~]# curl  192.168.0.200;curl -k https://192.168.0.200
 RS2 - 192.168.0.30
 RS2 - 192.168.0.30
解決方案

使用火墻標(biāo)記訪問(wèn)VIP的80和443的所有數(shù)據(jù)包,設(shè)定一個(gè)標(biāo)記數(shù),然后對(duì)此標(biāo)記進(jìn)行負(fù)載

 [root@VSNode ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark  6666
 [root@VSNode ~]# ipvsadm -A -f 6666 -s rr
 [root@VSNode ~]# ipvsadm  -a -f 6666 -r 192.168.0.20 -g
 [root@VSNode ~]# ipvsadm  -a -f 6666 -r 192.168.0.30 -g
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  192.168.0.200:80 rr
   -> 192.168.0.20:80              Route   1      0          0
   -> 192.168.0.30:80              Route   1      0          0
 TCP  192.168.0.200:443 rr
   -> 192.168.0.20:443             Route   1      0          0
   -> 192.168.0.30:443             Route   1      0          0
 FWM  6666 rr
   -> 192.168.0.20:0               Route   1      0          0
   -> 192.168.0.30:0               Route   1      0          0
重測(cè)試
 [root@Client ~]# curl  192.168.0.200;curl -k https://192.168.0.200
 RS2 - 192.168.0.20
 RS2 - 192.168.0.30

5.4 利用持久連接實(shí)現(xiàn)會(huì)話粘滯

調(diào)度策略

 [root@VSNode ~]# ipvsadm -E -f 6666 -s rr -p 1
 [root@VSNode ~]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
 TCP  192.168.0.200:80 rr
   -> 192.168.0.20:80              Route   1      0          0
   -> 192.168.0.30:80              Route   1      0          0
 TCP  192.168.0.200:443 rr
   -> 192.168.0.20:443             Route   1      0          0
   -> 192.168.0.30:443             Route   1      0          0
 FWM  6666 rr persistent 1
   -> 192.168.0.20:0               Route   1      0          0
   -> 192.168.0.30:0               Route   1      0          0

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • centos 安裝免費(fèi)控制面板kloxo步驟

    centos 安裝免費(fèi)控制面板kloxo步驟

    很早就要說(shuō)把平臺(tái)轉(zhuǎn)移到linux下了的,不過(guò)一直沒(méi)有行動(dòng)起來(lái)。前些天搞了一個(gè)美國(guó)的vps測(cè)試了一下,發(fā)現(xiàn)感覺(jué)還是不錯(cuò)的,通過(guò)在幾個(gè)交流論壇里摸索,總算把免費(fèi)的kloxo整到資源原本就不是很足的vps里。
    2010-03-03
  • Ubuntu掛載Windows共享文件的詳細(xì)步驟

    Ubuntu掛載Windows共享文件的詳細(xì)步驟

    在某些情況下,我們需要將windows的某個(gè)文件夾共享出去,這樣,在同一個(gè)網(wǎng)絡(luò)中,linux系統(tǒng)就可以通過(guò)掛載來(lái)訪問(wèn)這個(gè)文件夾中的內(nèi)容,所以本文給大家介紹了Ubuntu掛載Windows共享文件的詳細(xì)步驟,需要的朋友可以參考下
    2025-07-07
  • Linux運(yùn)維基礎(chǔ)系統(tǒng)磁盤(pán)管理教程

    Linux運(yùn)維基礎(chǔ)系統(tǒng)磁盤(pán)管理教程

    這篇文章主要介紹了Linux運(yùn)維基礎(chǔ)系統(tǒng)磁盤(pán)管理教程,附含詳細(xì)的源碼示例,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家同學(xué)習(xí)共進(jìn)步
    2021-09-09
  • 輕松搞定VIM高亮NGINX配置文件的方法

    輕松搞定VIM高亮NGINX配置文件的方法

    在使用vim在寫(xiě)東西的時(shí)候,如果有語(yǔ)法高亮顯示就會(huì)方便很多,之前給大家介紹了很多關(guān)于vim高亮的文章,那這篇文章主要給大家介紹了如何輕松搞定VIM高亮NGINX配置文件的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • 虛擬機(jī)Linux系統(tǒng)忘記密碼修改root或其他用戶密碼的方法

    虛擬機(jī)Linux系統(tǒng)忘記密碼修改root或其他用戶密碼的方法

    這篇文章主要介紹了虛擬機(jī)Linux系統(tǒng)忘記密碼修改root或其他用戶密碼的方法,在文章需要大家注意本文基于centos7環(huán)境進(jìn)行操作,由于centos的版本是有差異的,所以需要大家確認(rèn)版本,感興趣的朋友跟隨小編一起看看吧
    2018-08-08
  • Linux運(yùn)維從初級(jí)進(jìn)階為高級(jí)知識(shí)點(diǎn)總結(jié)

    Linux運(yùn)維從初級(jí)進(jìn)階為高級(jí)知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了關(guān)于Linux運(yùn)維從初級(jí)進(jìn)階為高級(jí)知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的為朋友們學(xué)習(xí)下。
    2019-06-06
  • Linux輸入子系統(tǒng)框架原理解析

    Linux輸入子系統(tǒng)框架原理解析

    這篇文章主要介紹了Linux輸入子系統(tǒng)框架原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 關(guān)于SSH服務(wù)解讀

    關(guān)于SSH服務(wù)解讀

    這篇文章主要介紹了關(guān)于SSH服務(wù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Linux中stat函數(shù)和stat命令使用詳解

    Linux中stat函數(shù)和stat命令使用詳解

    這篇文章主要介紹了Linux中stat函數(shù)和stat命令使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Linux中查看端口占用的方法對(duì)比:netstat、ss、lsof誰(shuí)更好用?

    Linux中查看端口占用的方法對(duì)比:netstat、ss、lsof誰(shuí)更好用?

    本文介紹了Linux中查看端口占用的三種常用工具的使用,其中ss、netstat和lsof,ss是推薦首選工具,命令簡(jiǎn)潔高效,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-06-06

最新評(píng)論

扶余县| 封丘县| 内丘县| 天峨县| 左贡县| 湖口县| 游戏| 乌鲁木齐市| 保德县| 阜康市| 呼和浩特市| 长海县| 全椒县| 安顺市| 谢通门县| 视频| 娱乐| 和静县| 定兴县| 闽清县| 宜宾市| 郑州市| 新郑市| 苍梧县| 衡阳县| 卓尼县| 东辽县| 井研县| 老河口市| 安平县| 武强县| 巴楚县| 讷河市| 馆陶县| 象州县| 萨迦县| 百色市| 神农架林区| 卓尼县| 庄河市| 克什克腾旗|