ETH感知網
『壹』 華為eth-trunk配置
VRRP與介面狀態聯動簡介
VRRP主備備份功能有時需要額外的技術來完善其工作。例如,Master設備到達某網路的鏈路突然斷掉時,VRRP無法感知故障進行切換,導致主機無法通過Master設備遠程訪問該網路。此時,可以通過VRRP與介面狀態聯動,解決這個問題。
當Master設備發現上行介面發生故障時,Master設備降低自己的優先順序(使得Master設備的優先順序低於Backup設備的優先順序),並立即發送VRRP報文。Backup設備接收到優先順序比自己低的VRRP報文後,切換至Master狀態,充當VRRP備份組中新的Master設備,從而保證了流量的正常轉發。
配置注意事項
· 保證同一備份組的設備上配置相同的備份組號(virtual-router-id)。
· 不同備份組之間的虛擬IP地址不能重復,並且必須和介面的IP地址在同一網段。
· 一個VRRP備份組最多可以配置監視8個介面。並且,當設備為IP地址擁有者時,不允許對其配置監視介面。
組網需求
如圖1所示,用戶通過Switch雙歸屬到SwitchA和SwitchB。用戶希望實現:
· 正常情況下,主機以SwitchA為默認網關接入Internet,當SwitchA或者其上下行介面故障時,SwitchB接替作為網關繼續進行工作,實現網關的冗餘備份。
· SwitchA和SwitchB之間增加帶寬,實現鏈路冗餘備份,提高鏈路可靠性。
· SwitchA故障恢復後,可以在20秒內重新成為網關。
配置思路
採用VRRP主備備份實現網關冗餘備份,配置思路如下:
1. 配置各設備介面IP地址及路由協議,使各設備間網路層連通。
2. 在SwitchA和SwitchB上部署VLAN聚合,實現VLAN101~VLAN180二層隔離三層互通,節省了IP地址。
3. 在SwitchA和SwitchB上創建Eth-Trunk介面並加入成員介面,實現增加鏈路帶寬,提供鏈路冗餘備份。
4. 在SwitchA和SwitchB上配置VRRP備份組。其中,SwitchA上配置較高優先順序和20秒搶占延時,作為Master設備承擔流量轉發;SwitchB上配置較低優先順序,作為備用設備,實現網關冗餘備份。
5. 在SwitchA上配置VRRP與介面狀態聯動,監視介面GE1/0/1和介面GE1/0/2,實現主設備故障時,VRRP備份組及時感知並進行主備切換。
『貳』 億咖通放出智能座艙核彈!AMD晶元上車現場玩《古墓麗影》
車東西(公眾號:chedongxi)
作者 | Juice
編輯 | 志豪
智能座艙領域也要「卷上天了」!
就在昨晚,億咖通在武漢發布了四款全新產品,分別為智能座艙計算平台安托拉(Antora)1000、安托拉(Antora)1000 Pro、面向全球的座艙平台馬卡魯(Makalu)和中央計算大腦Super Brain。
▲億咖通Super Brain
這一產品集成了「龍鷹一號」和黑芝麻A1000晶元,這一產品可以將整車的線束降低5%,進一步降低車輛的復雜度;同時在研發成本方面則可以實現15%的降低;而整車的BOM成本可以降低20%。
<p class="ql-align-ju【本文來自易車號作者車東西,版權歸作者所有,任何形式轉載請聯系作者。內容僅代表作者觀點,與易車無關】
『叄』 【重識雲原生】第2.3節——主流虛擬化技術之Xen
Xen知識地圖:
Xen是由劍橋大學計算機實驗室開發的一個開源項目,是一個開源的可直接運行於硬體層之上的虛擬化軟體,它屬於type-I型虛擬化系統,支持萬貫虛擬化和超虛擬化,以高性能、佔用資源少著稱,贏得了IBM、AMD、HP、Red Hat和Novell等眾多世界級軟硬體廠商的高度認可和大力支持,已被國內外眾多企事業用戶用來搭建高性能的虛擬化平台。
Xen僅對CPU和Memory直接接管,而其它IO硬體驅動則由其上運行的第一個虛擬機來提供支持,它能夠在計算機硬體上並發的運行多個客戶操作系統(Guest OS)。支持x86、x86-64、安騰( Itanium)、Power PC和ARM多種處理器,因此Xen可以在大量的計算設備上運行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、 Windows和其他常用的操作系統作為客戶操作系統在其管理程序上運行。
Xen默認認為自己是直接運行於硬體層之上的虛擬化軟體(即Xen Hypervisor層),並且可以直接驅動CPU和內存,需注意CPU和內存是所有想要運行的操作系統必須能直接支持的,但Xen為保證自身的小巧,它並沒有提供虛擬機的管理介面,因此它採用了一種獨特的方式,先運行一台特權虛擬機(即Domain 0),且這台VM必須支持Kernel的修改,因此選擇開源的Linux做為特權VM是最合適的,這樣也可方便採用Linux所支持的方式來開發虛擬機管理介面,實現與Xen Hypervisor層直接交互來完成為VM分配CPU和內存資源及創建、刪除、停止、啟動VM的管理介面。通常這台特權虛擬機一定會採用當前比較流行的Linux發行版,因為它能支持更多IO硬體設備,如:網卡,磁碟,顯卡,音效卡等;到目前為止,NetBSD,GNU/Linux,FreeBSD和Plan 9,OpenSolaris等系統已經支持已半虛擬化方式運行在Xen的DomU中。目前Xen已經支持x86、x86_64和ARM等平台,並正在向IA64、PPC移植。移植到其他平台從技術上是可行的,未來有可能會實現。
Xen虛擬機支持在不停止的情況下在多個物理主機之間實時遷移。在操作過程中,虛擬機在沒有停止工作的情況下內存被反復地復制到目標機器。虛擬機在最終目的地開始執行之前,會有一次60-300毫秒的非常短暫的暫停以執行最終的同步化,給人無縫遷移的感覺。類似的技術被用來暫停一台正在運行的虛擬機到磁碟,並切換到另外一台,第一台虛擬機在以後可以恢復。
如上圖所示,Xen虛擬環境由三部分組件組成:
XEN Hypervisor
Xen Hypervisor 是介於操作系統和硬體之間的一個軟體抽象層。它負責在各個虛擬機之間進行CPU調度和內存分配。Xen Hypervisor不僅抽象出虛擬機的硬體,同時還控制著各個虛擬機的執行。Xen Hypervisor不會處理網路、存儲設備、視頻以及其他 I/O。
Domain 0 Guest
Domain 0是特權域,是一個修改過的Linux kernel,是唯一運行在 Xen Hypervisor之上的虛擬機,它擁有訪問物理 I/O 資源的許可權,同時和系統上運行的其他虛擬機(Domain U: PV and HVM Guest)進行交互。Domain 0需要在其它Domain啟動之前啟動。
Domain 0 中有兩個驅動 Network Backend Driver 和 Block Backend Driver,它們分別用來處理來自 Domain U 的網路和本地磁碟請求。 Network Backend Driver與本地網路硬體直接通信,以此來處理來自於Domain U所有虛擬機訪問網路設備的請求;Block Backend Drive與本地存儲設備進行通信,以此來處理來自於Domain U的磁碟數據讀寫的請求。
Domain U Guest(Dom U)
Domain U沒有直接訪問物理硬體的許可權(Domain U的"U"是來自於英文單詞 unprivileged,是指沒有許可權的),但Domain 0有。
運行在 Xen Hypervisor 上的所有半虛擬化(paravirtualized)虛擬機被稱為「Domain U PV Guests」,其上運行著被修改過內核的操作系統,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系統。
所有的全虛擬化虛擬機被稱為「Domain U HVM Guests」,其上運行著不用修改內核的操作系統,如 Windows 等。
Domain U PV Guest 中也包括兩個驅動「PV Network Driver」和「PV Block Driver」,它們分別也是用來處理發送網路和本地磁碟請求用的,這與 Domain 0 中的兩個驅動是相對應的。
Xen對虛擬機的虛擬化分為兩大類,半虛擬化(Para virtualization)和完全虛擬化(Hardware VirtualMachine)。
半虛擬化(Paravirtualization)有些資料稱為「超虛擬化」,簡稱為PV,是Xen主導的虛擬化技術。這種技術允許虛擬機操作系統感知到自己運行在Xen Hypervisor上而不是直接運行在硬體上,同時也可以識別出其他運行在相同環境中的客戶虛擬機。
在Xen Hypervisor上運行的半虛擬化的操作系統,為了調用系統管理程序(Xen Hypervisor),要有選擇地修改操作系統,然而卻不需要修改操作系統上運行的應用程序。由於 Xen 需要修改操作系統內核,所以您不能直接讓當前的 Linux 內核在 Xen 系統管理程序中運行,除非它已經移植到了Xen 架構。不過,如果當前系統可以使用新的已經移植到 Xen 架構的Linux 內核,那麼您就可以不加修改地運行現有的系統。
完全虛擬化(Hardware Virtual Machine)又稱「硬體虛擬化」,簡稱HVM,是指運行在虛擬環境上的虛擬機在運行過程中始終感覺自己是直接運行在硬體之上的,並且感知不到在相同硬體環境下運行著其他虛擬機的虛擬技術。此種虛擬化需要藉助於Intel的VT-x 或 AMD的AMD-v 等硬體輔助虛擬化技術(詳細技術原理參見1.5.1節)及Qemu的IO硬體模擬技術,才能支持GuestOS的kernel不修改,就可直接被DomU支持。
在Xen Hypervisor運行的完全虛擬化虛擬機,所運行的操作系統都是標準的操作系統,即:無需任何修改的操作系統版本。同時也需要提供特殊的硬體設備。
值的注意的是,在Xen上虛擬的Windows虛擬機必須採用完全虛擬化技術。
為了提高性能,完全虛擬化的Guests可以使用特殊的半虛擬設備驅動程序(PVHVM或PV-on-HVM驅動)。這些驅動程序在HVM環境下優化你的 PV驅動,模擬的磁碟和網路IO旁路運行,從而讓你的PV在HVM中有更好的性能。這意味著你在用戶窗口操作方面可以得到最佳的性能。
注意,Xen項目PV(半虛擬化)的Guest自動使用PV驅動,因此不需要這些驅動程序,因為你已經自動使用優化的驅動程序。PVHVM只會在HVM(全虛擬化)guest虛擬機中需要。
Xen 的 VMM ( Xen Hypervisor ) 位於操作系統和硬體之間,負責為上層運行的操作系統內核提供虛擬化的硬體資源,負責管理和分配這些資源,並確保上層虛擬機(稱為域 Domain)之間的相互隔離。Xen採用混合模式,因而設定了一個特權域用以輔助Xen管理其他的域,並提供虛擬的資源服務,該特權域稱為Domain 0,而其餘的域則稱為Domain U。
Xen向Domain提供了一個抽象層,其中包含了管理和虛擬硬體的API。Domain 0內部包含了真實的設備驅動(原生設備驅動),可直接訪問物理硬體,負責與 Xen 提供的管理 API 交互,並通過用戶模式下的管理工具來管理 Xen 的虛擬機環境。
Xen2.0之後,引入了分離設備驅動模式。該模式在每個用戶域中建立前端(front end)設備,在特權域(Dom0)中建立後端(back end)設備。所有的用戶域操作系統像使用普通設備一樣向前端設備發送請求,而前端設備通過IO請求描述符(IO descripror ring)和設備通道(device channel)將這些請求以及用戶域的身份信息發送到處於特權域中的後端設備。這種體系將控制信息傳遞和數據傳遞分開處理。
在Xen體系結構設計中,後端設備運行的特權域被賦予一個特有的名字---隔離設備域(Isolation Device Domain, IDD),而在實際設計中,IDD 就處在Dom0中。所有的真實硬體訪問都由特權域的後端設備調用本地設備驅動 (native device driver)發起。前端設備的設計十分簡單,只需要完成數據的轉發操作,由於它們不是真實的設備驅動程序,所以也不用進行請求調度操作。而運行在IDD中的後端設備,可以利用Linux的現有設備驅動來完成硬體訪問,需要增加的只是IO請求的橋接功能---能完成任務的分發和回送。
1)半虛擬化技術實現原理
採用半虛擬化技術的虛擬機操作系統能夠識別到自己是運行在Xen Hypervisor而非直接運行於硬體之上,並且也可以識別到在相同的機器上運行的其他虛擬機系統。而且運行的操作系統都需要進行相應的修改。
半虛擬化客戶機(Domain U PV Guests)包含兩個用於操作網路和磁碟的驅動程序,PV Network Driver 和PV Block Driver。
PV Network Driver負責為Domain U提供網路訪問功能。PV Block Driver負責為Domain U提供磁碟操作功能。
2)完全虛擬化技術實現原理
完全虛擬化客戶機(Domain U HVM Guests)運行的是標准版本的操作系統,因此其操作系統中不存在半虛擬化驅動程序(PV Driver),但是在每個完全虛擬化客戶機都會在Domain 0中存在一個特殊的精靈程序,稱作:Qemu-DM,Qemu-DM幫助完全虛擬化客戶機(Domain U HVM Guest)獲取網路和磁碟的訪問操作。
完全虛擬化客戶機必須和在普通硬體環境下一樣進行初始化,所以需要在其中加入一個特殊的軟體Xen virtual firmware,來模擬操作系統啟動時所需要的BIOS。
開源社區中將一系列的Linux精靈程序分類為「管理」和「控制」兩大類。這些服務支撐著整個虛擬環境的管理和控制操作,並且存在於Domain 0虛擬機中。
下面將對直接服務進行詳細的描述。
註:為了清晰的描述Xen的運行流程,畫圖時將精靈程序放在Domain 0外部來描述,但事實上所有精靈程序都存在於Domain 0 之中。
1)Xend
Xend精靈線程是一個Python應用程序,它作為Xen環境的系統管理員。它利用Libxenctrl類庫向Xen Hypervisor發出請求。
所有Xend處理的請求都是由XM工具使用XML RPC介面發送過來的。
2)Xm
用於將用戶輸入通過XML RPC介面傳遞到Xend中的命令行工具。
3)Xenstored
Xenstored精靈程序用於維護注冊信息,這些信息包括內存和在連接Domain 0和所有其他Domain U之間的事件通道。Domain 0虛擬機利用這些注冊信息來與系統中其他虛擬機建立設備通道,即幫助Domain U虛擬機訪問硬體資源。
4)Libxenctrl
Libxenctrl是C程序類庫,用於讓Xend具有通過Domain 0與Xen Hypervisor進行交互的能力。在Domain 0中存在一個特殊的驅動程序稱作privcmd,它將請求發送給Hypervisor。
5)Qemu-DM
在Xen環境下,每個完全虛擬化虛擬機都需要擁有自己的Qemu精靈程序。Qemu-DM處理在Xen環境下完全虛擬化客戶機所能允許執行的所有關於網路 和磁碟請求和操作。Qemu程序必須存在於Hypervisor之外同時又需要訪問網路和I/O,所以Qemu-DM必須存在於Domain 0 中(參見前面章節對Domain 0 的描述)。
未來版本的Xen中,一種新的工具Stub-DM將會提供一系列對所有完全虛擬化客戶機都可用的服務,以此來替代需要在每個虛擬機上都生成一個Qemu的邏輯。
6)Xen Virtual Firmware
Xen Virtual Firmware是被嵌入到所有完全虛擬化客戶機中的虛擬BIOS系統,來確保所有客戶操作系統在正常啟動操作中接收到標準的啟動指令集並提供標準的軟體兼容環境。
根據前幾章節所述,Xen Hypervisor不負責處理網路和磁碟請求,因此半虛擬化客戶機(Domain U PV)必須通過Domain 0 與Xen Hypervisor進行通信,從而完成網路和磁碟的操作請求。下面以半虛擬化客戶機(Domain U PV)執行向本地磁碟寫入數據為例描述Domain 0與Domain U PV的交互過程。
半虛擬化客戶機(Domain U PV)的PV Block Driver接收到要向本地磁碟寫入數據的請求,然後通過Xen Hypervisor將與Domain 0共享的本地內存中的數據寫入到本地磁碟中。在Domain 0 和半虛擬化Domain U之間存在事件通道,這個通道允許它們之間通過存在於Xen Hypervisor內的非同步中斷來進行通信。Domain 0將會接收到一個來自於Xen Hypervisor的系統中斷,並觸發Domain 0中的Block Backend驅動程序去訪問本地系統內容,並從與半虛擬化客戶機的共享內存中讀取適合的數據塊。從共享內存中讀取的數據隨後被寫入到本地磁碟的指定位置中。
上圖中所顯示的事件通道是直接連接Domain 0 和Domain U PV是為了清晰和簡單的描述系統是如何運行的。但事實上,事件通道(Event Channel)運行於Xen Hypervisor中,並在Xenstored中注冊特定的系統中斷,以此來讓Domain 0 和Domain U PV能夠通過本地內存快速的共享信息。
Xen在給VM提供CPU的虛擬化時,它採用的也是在Xen hypervisor層啟動一個線程,並將這些線程映射到某個物理核心上,當然通過DomU的配置文件中的cpus可以指定將這些模擬CPU的線程綁定到某幾個物理核心上;而內存的虛擬化則是內存頁的映射,將物理內存上多個連續或不連續的內存頁映射給VM,讓VM看來這就是一個完整的連續的內存空間。
當啟動一個用戶VM(DomU)時,該VM所需的CPU和內存都由Xen Hypervisor提供,而它若需要使用IO設備時,則向特權VM(即Dom0)發起請求,特權VM會為該用戶VM創建一個模擬的硬體設備線程,並運行於特權VM的用戶空間,當用戶VM向該IO硬體發起調用時,特權VM上相應的模擬設備接收請求並將其轉化為特權VM對IO硬體的操作,交給特權VM的內核來代為完成其操作。這里需注意這些虛擬IO硬體需要由Qemu來模擬,Xen本身並沒有提供相應的模擬功能。(註:特權VM的CPU和內存也是有Xen Hypervisor提供)
1)Qemu模擬IO設備(完全虛擬化方式)
Qemu模擬IO設備(完全虛擬化方式):假如用戶VM向特權VM請求磁碟,特權VM可以將一個分區、文件等,通過Qemu將其模擬成一個磁碟設備,就拿文件來說,特權VM先創建一個映像文件,再通過Qemu為該文件模擬一個磁碟控制器晶元;然後,將其映射到用戶VM上,當然模擬的這個磁碟控制器晶元一定是一個最常見的,用戶VM的Kernel一定支持的,但需注意:模擬的磁碟可能會與實際的物理磁碟不同,因為要盡可能兼容。這樣一來用戶VM假如要寫數據到磁碟的過程如下:
用戶VM-APP--->用戶VM-Kernel調用虛擬磁碟的驅動進行寫數據前的准備(如:數據寫入到磁碟中的扇區位置/數據編碼等)--->
用戶VM-Kernel將編碼後的信息發給特權VM的模擬磁碟進程--->
特權VM的模擬磁碟進程再將編號信息還原後發給特權VM-kernel--->
特權VM-kernel調用真實物理磁碟的驅動對數據進行寫前准備--->最後磁碟驅動調度磁碟完成寫入
摘錄補充:( http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W )
Xen向Domain提供了一個抽象層,其中包含了管理和虛擬硬體的API。Domain 0內部包含了真實的設備驅動(原生設備驅動),可直接訪問物理硬體,Xen 提供的管理 API 可與其交互,並通過用戶模式下的管理工具(如:xm/xend、xl等)來管理 Xen 的虛擬機環境。
2)半虛擬化IO設備
半虛擬化的IO設備:它與模擬最大不同是DomU知道自己是運行在虛擬化環境中的,並且知道這個磁碟不是真正的磁碟,它只是Xen模擬的一個磁碟前端驅動(Disk Frontend),它要寫數據時,直接將數據交給Disk Frontend,而不再去調用磁碟驅動進行數據編碼,當特權VM端的Disk backend收到來自DomU的數據時,也是直接轉給特權VM-Kernel,由其直接調用物理磁碟驅動來對這些原始數據進行處理並寫入磁碟。
摘錄補充:( http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W )
Xen2.0之後,引入了分離設備驅動模式。該模式在每個用戶域中建立前端(front end)設備,在特權域(Dom0)中建立後端(back end)設備。所有的用戶域操作系統像使用普通設備一樣向前端設備發送請求,而前端設備通過IO請求描述符(IO descripror ring)和設備通道(device channel)將這些請求以及用戶域的身份信息發送到處於特權域中的後端設備。這種體系將控制信息傳遞和數據傳遞分開處理(類似雲計算中常說的控制面與數據面分離設計)。
半虛擬化客戶機(Domain U PV)的PV Block Driver接收到要向本地磁碟寫入數據的請求,然後通過Xen Hypervisor將自己與Domain 0共享的本地內存中的數據寫入到本地磁碟中。在Domain 0 和半虛擬化Domain U之間存在事件通道,這個通道允許它們之間通過存在於Xen Hypervisor內的非同步中斷來進行通信。Domain 0將會接收到一個來自於Xen Hypervisor的系統中斷,並觸發Domain 0中的Block Backend驅動程序去訪問本地系統內容,並從自己與半虛擬化客戶機的共享內存中讀取適合的數據塊後,隨即被寫入到本地磁碟的指定位置中。
但無論採用模擬或半虛擬化最終都是對物理磁碟的操作,假如當前只有一個物理磁碟,眾多用戶VM都在進行大量的讀寫請求,此時,為了避免用戶VM無限制的向特權VM發起請求,特權VM中採用一個環狀緩存區,每到一個IO請求,就先將其塞入這個環狀緩沖區的槽位中,若緩沖區滿了,就會告訴用戶VM IO設備繁忙。當然其它各種IO設備大致都採用這種機制來控制。
在虛擬化環境中虛擬網路是十分重要但又比較難,需要特別注意;
在Linux中實現虛擬網路的方法中比較常用的工具有兩個:bridge-utils 和 openvswitch,它們創建的虛擬網路設備是不能相互使用的,比如:bridge-utils創建的橋設備,openvswitch是無法識別的。
用下圖來做簡單說明:
1)Bridge模式
Xend啟動時流程:
1、創建虛擬網橋 xenbr0;
2、停止物理網卡 eth0;
3、物理網卡 eth0 的 MAC 地址和 IP 地址被復制到虛擬網卡 veth0;
4、物理網卡 eth0 重命名為 peth0;
5、Veth0 重命名為 eth0;
6、Peth0 的 MAC 地址更改( FE:FF:FF:FF:FF:FF ),ARP 功能關閉;
7、連接 peth0、vif0.0 到網橋 xenbr0
8、啟動 peth0、vif0.0、xenbr0
Domain U 啟動時的流程:
1、vif<domainID>.0 連接到 xenbr0
2、啟動vif<domainID>.0
2)Route 模式
Xend啟動時的流程:
1、開啟Domain 0的IP Forward。
Domain U啟動時的流程:
1、創建 vif<domainID>.0 ,dom U eth0的IP地址被拷貝到vif<domainID>。
2、啟動 vif<domainID>.0。
3、為domU的配置文件中指向虛擬介面vif.0分配的IP地址增加靜態路由。
3)NAT模式
NAT 模式會使用虛擬區域網 virbr0
安裝了Xen的Linux機器,在Dom 0中能看到以下幾類網卡(網路介面設備 ):
(X ,Y都為數字)
pethY
ethY
xenbrY
virbrY
vifX.Y(X為DomaiID,Y表示該虛擬網卡是該Domain的第幾塊虛擬網卡)
vethY (一般在Xend啟動完成以後就不存在了)
xend : 這是Xen Hypervisor的Dom0上運行的服務,此服務用來監控xm命令發來的指令,並完成相應的動作。
xm : Xen Management,用來管理VM的創建、刪除、啟動、快照、刪除、停止等的管理工具。
xl : 這是一個基於libxenlight庫的一個輕量級VM管理工具,它從Xen4.1開始出現,從4.3以後,它被作為主要的VM管理工具,而xm這個重量級管理工具開始被提示廢棄.以下為xm、xl的對比圖:
xl 和 xm都需要調用libxenlight,但xl不需要運行任何服務,它可直接調用libxenlight完成相關操作。
xe/XAPI,是xend的一個API管理介面,通常用於Xen Cloud環境中:Xen Server, XCP
virsh/ libvirt : 這是Redhat發起開發的一套用於管理眾多不同類別的VM的管理工具。
virsh : 這是一個命令行工具
libvirt: 則是一個lib庫, libvirtd守護進程用於監聽virsh命令操作,並調用lbvirt完成相關操作.
10年4月Xen4.0.0發布,改進後Xen的DomU最大可支持虛擬CPU 64顆,Xen主機可支持1TB內存和128顆物理CPU,磁碟可支持快照和克隆;HVM客戶機支持虛擬內存頁共享;
11年4月發布的Xen4.1版後,xm/xend開始被提示廢棄,xl這個更輕量級的Xen VM管理工具逐漸成為主流。
15年為止已經發布Xen4.5版本,目前yum源可用的最新版Xen是4.6.1版的(http://mirrors.skyshe.cn/centos/6.7/virt/x86_64/xen-46/)。
Linux2.6.37:kernel開始對Xen進行支持,並加其加入到Kernel中。
Linux3.0:Kernel開始對Xen的關鍵部分進行優化。
RHEL對Xen的支持概況:
Redhat系列對Xen的支持情況:
RHEL5.7 ~ 及以前版本:默認的企業虛擬化技術為Xen。
但Redhat提供了兩種內核:
kernel-... :這是僅允許RHEL系統的內核,不能運行在DomU中。
kernel-xen.. :這是需要部署XenServer時,使用的Kernel版本。
RHEL6 ~ 及以後版本:默認支持KVM(收購自以色列的一款虛擬化工具),並且不在對Xen做任何支持,但允許自己運行在DomU中。
Linux內核態、用戶態簡介與IntelCPU特權級別--Ring0-3_weixin_30784501的博客-CSDN博客
雲計算技術 — 雲計算技術發展編年史_煙雲的計算-CSDN博客_雲計算編年史
虛擬化技術原理(CPU、內存、IO)_joneslee的博客-CSDN博客_虛擬化原理
五種主流的虛擬化技術_遠有青山-CSDN博客_虛擬化技術
Xen原理
Xen原理 - 張朝鋒 - 博客園
Xen虛擬化技術原理_IT人生活的技術博客_51CTO博客
Xen虛擬化基本原理詳解
Xen虛擬化基本原理詳解 - stardsd - 博客園
Xen工作原理_為幸福寫歌的博客-CSDN博客_xen原理
Xen_網路
『肆』 Filecoin能給我們帶來怎樣的改變未來又會發生什麼
IPFS能為我們改變什麼
一、IPFS,Dapp分布式應用的溫床
以分布式存儲作為內核的IPFS,將去中心化結構發揮到了極致。IPFS碎片式數據管理方式,將我們所保存的數據「零碎」地分布於整個網路之中,極大避免了各種外在因素所造成的數據泄露與丟失問題,也可以讓更多有價值的數據等永久保存。
在這樣的前提下,不覺讓人聯想到未來DApp的應用問題(去中心化應用)。
一個好的DApp,固然是建立在一個優質的去中心化儲存網路之上,DApp第一步所要解決的是數據在去中心網路中的搭建與上鏈的問題。傳統的Dapp多數都是以EOS網路構建,這主要是得益於EOS「相對」快速的TPS,但網路回滾與弱中心問題而帶來的安全隱患,始終備受外界的詬病。
隨著ETH的最終共識機制可能轉為PoS,坊間也開始流傳EOS也將基於IPFS存儲網路接入其DApp的生態。Filecoin白皮書最後一章有提到「IPFS的橋接」功能,這將意味著理論上Filecoin可運行任何DApp,也代表著其他DApp也可運行Filecoin的智能合約。
基於此前提,我們可以想像的是,未來的現象級的DApp極有可能誕生於IPFS網路之中。
二、IPFS可能是最合適的知識產權解決方案
「版權」問題無疑是知識產權的重災區,雖然傳統行業中已經做出了許多嘗試,但依舊無法杜絕。就現在而言,一般都是中心化的解決方式,但這種解決方式很容被攻破。理由很簡單,版權利益僅僅來自於個人,而非集體。
如果將版權問題接入IPFS網路中,將網路中各節點做捆綁,利用通證形式作為激勵,就很容易的做到自發性的「內容付費」或「內容變現」。
三、三大領域與IPFS
隨著協議實驗室的不懈努力、全球學者的研究,以及愛好者的推動,IPFS越發緊扣我們的生活,最顯著而影響深遠的目前莫過於5G、物聯網和區塊鏈這三大領域,所以我們從這三大領域來解構IPFS與他們產生的市場合力。
1、5G+IPFS
5G技術是最新一代蜂窩移動通信技術。它的性能目標是高數據速率、減少延遲、節省能源、降低成本、提高系統容量和大規模設備連接。
5G的發展主要有兩個驅動力。一方面以長期演進技術為代表的第四代移動通信系統4G已全面商用,對下一代技術的討論提上日程;另一方面,移動數據的需求爆炸式增長,現有移動通信系統難以滿足未來需求,急需研發新一代5G系統。
IPFS的出現就是為了革新傳統的HTTP協議,改變服務端與客戶端的信息傳輸模式。
IPFS最大的優勢在於將高活躍度的公有文件進行統一的分發和存儲,節省存儲空間的同時節省帶寬資源,還能為用戶提供一個穩定的高速分發途徑。相信,在5G技術的加持下,我們的網路世界會進一步高效、升級。
2、物聯網+IPFS
物聯網(簡稱IOT)是指通過各種信息感測器紅外感應器、激光掃描器等各種裝置與技術,實時採集任何需要監控、連接、互動的物體或過程,採集其聲、光、熱、電、位置等各種需要的信息,通過各類可能的網路接入,實現物與物、物與人的泛在連接,實現對物品和過程的智能化感知、識別和管理。
而IPFS能以此集成為一種容器化的網路應用程序,運行在獨立節點上,以Web服務的形式,供大家使用訪問。隨著與IPFS技術的結合,物聯網技術的發展不僅降低了基礎設施的成本,還提高了帶寬的性能,萬物互聯的時代,將成為可能。
3、區塊鏈+IPFS
區塊鏈誕生是為了去中心化,在沒有中心機構的情況下達成共識,共同維護一個賬本。
IPFS與區塊鏈協同工作,能夠補充區塊鏈的兩大缺陷:一是區塊鏈存儲效率低,成本高;二是跨鏈需要各個鏈之間協同配合,難以協調。
針對第一個問題,IPFS有一個解決方法:使用IPFS存儲文件數據並將唯一永久可用的IPFS地址放置到區塊鏈事務中,而不必將數據本身放在區塊鏈中。針對第二個問題,IPFS能協助各個不同的區塊鏈網路傳遞信息和文件。
IPFS是一個偉大的分布式存儲技術的先行者,它是一個具有區塊鏈特徵的數據系統。如果IPFS得到普及,即使每個礦工只存儲一點點的內容,但是累計的空間、帶寬、可靠性也將遠大於現有的互聯網能提供的。在這種情況下,以區塊鏈+IPFS為基礎的分布式web將有望變成世界上最快、最可靠的超級資料庫。
IPFS未來會怎樣
在2021年的8月中旬,momack2發布了慶祝Filecoin100萬區塊高度的好消息,來感謝參與IPFS的參與者存儲提供商、開發人員和激勵幣持有者,是這些參與組合讓過去的百萬個時代變得偉大。感謝大家為這個網路和社區所做的一切!目前流通的FIL總量157,159,038 FIL (包括FIL 銷毀和抵押品)Incineration: 27,350,111 FIL。
Filecoin 社區生態Web3.storageWeb3.storage 發布!Web3.storage 允許開發人員以最佳方式與Filecoin/IPFS 集成。Web3.storage 由兩部分組成。
一種跨多個Filecoin 存儲提供商和公共IPFS 網路冗餘存儲數據的服務,提供有關數據存儲位置的信息,並通過CID 檢索數據。
HTTP 端點、Javascript 客戶端庫和用於與服務交互的Web UI。
以上是Filecoin 最近發生的一件大事,展示了Filecoin 如何改進和發展。隨著時間的推移,未來會有越來越多的人跟蹤IPFS。
Filecoin 未來會發生什麼?對於FIL的未來趨勢,仍然非常樂觀。為什麼說從整個生態的角度來看,整個發行、每日銷毀、鎖定和抵押等不僅有助於整個生態的發展,還有助於幣價上漲?連日來,不少人都在等待國慶後的行情,紛紛猜測牛市浪潮即將來臨。如果30天平均算力超過60天平均算力,從技術上講,後續上漲的概率會遠遠大於下跌的概率。整個市場目前正在調整中,現在可以隨時參與進來。
還可以使用Filecoin 參與挖礦嗎?當然可以,則挖礦風險較低。挖礦不僅是熊市,短期內也可能出現在貨幣和牛市中。如果貨幣價格下跌,您可以使用生成的貨幣來彌補您的損失。FIL現在仍然可以開采,目前網路流通率只有7.86%,活躍礦工數量超過2000。
現在FIL幣便宜,設備便宜,質押幣和gas隨著之前的主網升級減少了。這也是挖礦的第二個黃金時代。很多人認為挖礦效率低,但減持更多的是挖礦效率,投資成本比較高。之前的1T算力高達19000/1T。當前激勵幣價格的回報期更長,最大的優點是它每天都在不斷地生產。轉移成本阻止了許多礦工進入市場,低成本礦工正在崛起。
目前挖礦的優勢是什麼? 第一:激勵幣價格變低第二:合同成本變低第三:現有設備更便宜第四:挖礦風險低於囤幣第五:投資回收期縮短。完成度越高,對未來發展越好,所以現在是挖礦的好時機。
『伍』 IPVS從入門到精通kube-proxy實現原理
我們知道容器的特點是快速創建、快速銷毀,Kubernetes Pod和容器一樣只具有臨時的生命周期,一個Pod隨時有可能被終止或者漂移,隨著集群的狀態變化而變化,一旦Pod變化,則該Pod提供的服務也就無法訪問,如果直接訪問Pod則無法實現服戚滲務的連續性和高可用性,因此顯然不能使用Pod地址作為服務暴露埠。
解決這個問題的辦法和傳統數據中心解決無狀態服務高可用的思路完全一樣,通過負載均衡和VIP實現後端真實服務的自動轉發、故障轉移。
這個負載均衡在Kubernetes中稱為Service,VIP即Service ClusterIP,因此可以認為Kubernetes的Service就是一個四層負載均衡,Kubernetes對應的還有七層負載均衡Ingress,本文僅介紹Kubernetes Service。
這個Service就是由kube-proxy實現的,ClusterIP不會因為Podz狀態改變而變,需要注意的是VIP即ClusterIP是個假的IP,這個IP在整個集群中根本不存在,當然也就無法通過IP協議棧無法路由,底層underlay設備更無法感知這個IP的存在,因此ClusterIP只能是單主機(Host Only)作用域可見,這個IP在其他節點以及集群外均無法訪問。
Kubernetes為了實現在集群所有的節點都能夠訪問Service,kube-proxy默認會在所有的Node節點都創建這個VIP並且實現負載,所以在部署Kubernetes後發現kube-proxy是一個DaemonSet。
而Service負載之所以能夠在Node節點上實現是因為無論Kubernetes使用哪個網兄差絡模型,均需要保證滿足如下三個條件:
至少第2點是必須滿足的,有了如上幾個假設,Kubernetes Service才能在Node上實現,否則Node不通Pod IP也就實現不了了。
有人說既然kube-proxy是四層負載均衡,那kube-proxy應該可以使用haproxy、nginx等作為負載後端啊?
事實上確實沒有問題,不過唯一需要考慮的就是性能問題,如上這些負載均衡功能都強大,但畢竟還是基於用戶態轉發或者反向代理實現的,性能必然不如在內核態直接轉發處理好。
因此kube-proxy默認會優先選擇基於內核態的負載作為後端實現機制,目前kube-proxy默認是通過iptables實現負載的,在此之前還有一種稱為userspace模式,其實也是基於iptables實現,可以認為當前的iptables模式是對之前userspace模式的優化。
本節接下來將詳細介紹kube-proxy iptables模式的實現原理。
首先創建了一個ClusterIP類型的Service:
其中ClusterIP為10.106.224.41,我們可以驗證這個IP在羨仔皮本地是不存在的:
所以 不要嘗試去ping ClusterIP,它不可能通的 。
此時在Node節點192.168.193.172上訪問該Service服務,首先流量到達的是OUTPUT鏈,這里我們只關心nat表的OUTPUT鏈:
該鏈跳轉到 KUBE-SERVICES 子鏈中:
我們發現與之相關的有兩條規則:
其中 KUBE-SVC-RPP7DHNHMGOIIFDC 子鏈規則如下:
這幾條規則看起來復雜,其實實現的功能很簡單:
我們查看其中一個子鏈 KUBE-SEP-FTIQ6MSD3LWO5HZX 規則:
可見這條規則的目的是做了一次DNAT,DNAT目標為其中一個Endpoint,即Pod服務。
由此可見子鏈 KUBE-SVC-RPP7DHNHMGOIIFDC 的功能就是按照概率均等的原則DNAT到其中一個Endpoint IP,即Pod IP,假設為10.244.1.2,
此時相當於:
接著來到POSTROUTING鏈:
這兩條規則只做一件事就是只要標記了 0x4000/0x4000 的包就一律做MASQUERADE(SNAT),由於10.244.1.2默認是從flannel.1轉發出去的,因此會把源IP改為flannel.1的IP 10.244.0.0 。
剩下的就是常規的走Vxlan隧道轉發流程了,這里不再贅述,感興趣的可以參考我之前的文章 淺聊幾種主流Docker網路的實現原理 。
接下來研究下NodePort過程,首先創建如下Service:
其中Service的NodePort埠為30419。
假設有一個外部IP 192.168.193.197,通過 192.168.193.172:30419 訪問服務。
首先到達PREROUTING鏈:
PREROUTING的規則非常簡單,凡是發給自己的包,則交給子鏈 KUBE-NODEPORTS 處理。注意前面省略了判斷ClusterIP的部分規則。
KUBE-NODEPORTS 規則如下:
這個規則首先給包打上標記 0x4000/0x4000 ,然後交給子鏈 KUBE-SVC-RPP7DHNHMGOIIFDC 處理, KUBE-SVC-RPP7DHNHMGOIIFDC 剛剛已經見面過了,其功能就是按照概率均等的原則DNAT到其中一個Endpoint IP,即Pod IP,假設為10.244.1.2。
此時發現10.244.1.2不是自己的IP,於是經過路由判斷目標為10.244.1.2需要從flannel.1發出去。
接著到了 FORWARD 鏈,
FORWARD表在這里只是判斷下,只允許打了標記 0x4000/0x4000 的包才允許轉發。
最後來到 POSTROUTING 鏈,這里和ClusterIP就完全一樣了,在 KUBE-POSTROUTING 中做一次 MASQUERADE (SNAT),最後結果:
我們發現基於iptables模式的kube-proxy ClusterIP和NodePort都是基於iptables規則實現的,我們至少發現存在如下幾個問題:
本文接下來將介紹kube-proxy的ipvs實現,由於本人之前也是對ipvs很陌生,沒有用過,專門學習了下ipvs,因此在第二章簡易介紹了下ipvs,如果已經很熟悉ipvs了,可以直接跳過,這一章和Kubernetes幾乎沒有任何關系。
另外由於本人對ipvs也是初學,水平有限,難免出錯,歡迎指正!
我們接觸比較多的是應用層負載均衡,比如haproxy、nginx、F5等,這些負載均衡工作在用戶態,因此會有對應的進程和監聽socket,一般能同時支持4層負載和7層負載,使用起來也比較方便。
LVS是國內章文嵩博士開發並貢獻給社區的( 章文嵩博士和他背後的負載均衡帝國 ),主要由ipvs和ipvsadm組成,ipvs是工作在內核態的4層負載均衡,和iptables一樣都是基於內核底層netfilter實現,netfilter主要通過各個鏈的鉤子實現包處理和轉發。ipvsadm和ipvs的關系,就好比netfilter和iptables的關系,它運行在用戶態,提供簡單的CLI介面進行ipvs配置。
由於ipvs工作在內核態,直接基於內核處理包轉發,所以最大的特點就是性能非常好。又由於它工作在4層,因此不會處理應用層數據,經常有人問ipvs能不能做SSL證書卸載、或者修改HTTP頭部數據,顯然這些都不可能做的。
我們知道應用層負載均衡大多數都是基於反向代理實現負載的,工作在應用層,當用戶的包到達負載均衡監聽器listening後,基於一定的演算法從後端服務列表中選擇其中一個後端服務進行轉發。當然中間可能還會有一些額外操作,最常見的如SSL證書卸載。
而ipvs工作在內核態,只處理四層協議,因此只能基於路由或者NAT進行數據轉發,可以把ipvs當作一個特殊的路由器網關,這個網關可以根據一定的演算法自動選擇下一跳,或者把ipvs當作一個多重DNAT,按照一定的演算法把ip包的目標地址DNAT到其中真實服務的目標IP。針對如上兩種情況分別對應ipvs的兩種模式–網關模式和NAT模式,另外ipip模式則是對網關模式的擴展,本文下面會針對這幾種模式的實現原理進行詳細介紹。
ipvsadm命令行用法和iptables命令行用法非常相似,畢竟是兄弟,比如 -L 列舉, -A 添加, -D 刪除。
但是其實ipvsadm相對iptables命令簡直太簡單了,因為沒有像iptables那樣存在各種table,table嵌套各種鏈,鏈里串著一堆規則,ipvsadm就只有兩個核心實體,分別為service和server,service就是一個負載均衡實例,而server就是後端member,ipvs術語中叫做real server,簡稱RS。
如下命令創建一個service實例 172.17.0.1:32016 , -t 指定監聽的為 TCP 埠, -s 指定演算法為輪詢演算法rr(Round Robin),ipvs支持簡單輪詢(rr)、加權輪詢(wrr)、最少連接(lc)、源地址或者目標地址散列(sh、dh)等10種調度演算法。
然後把10.244.1.2:8080、10.244.1.3:8080、10.244.3.2:8080添加到service後端member中。
其中 -t 指定service實例, -r 指定server地址, -w 指定權值, -m 即前面說的轉發模式,其中 -m 表示為 masquerading ,即NAT模式, -g 為 gatewaying ,即直連路由模式, -i 為 ipip ,ji即IPIP隧道模式。
與iptables-save、iptables-restore對應的工具ipvs也有ipvsadm-save、ipvsadm-restore。
NAT模式由字面意思理解就是通過NAT實現的,但究竟是如何NAT轉發的,我們通過實驗環境驗證下。
現環境中LB節點IP為192.168.193.197,三個RS節點如下:
為了模擬LB節點IP和RS不在同一個網路的情況,在LB節點中添加一個虛擬IP地址:
創建負載均衡Service並把RS添加到Service中:
這里需要注意的是,和應用層負載均衡如haproxy、nginx不一樣的是,haproxy、nginx進程是運行在用戶態,因此會創建socket,本地會監聽埠,而 ipvs的負載是直接運行在內核態的,因此不會出現監聽埠 :
可見並沒有監聽10.222.0.1:8080 Socket 。
Client節點IP為192.168.193.226,為了和LB節點的虛擬IP 10.222.0.1通,我們手動添加靜態路由如下:
此時Client節點能夠ping通LB節點VIP:
可見Client節點到VIP的鏈路沒有問題,那是否能夠訪問我們的Service呢?
我們驗證下:
非常意外的結果是並不通。
在RS節點抓包如下:
我們發現數據包的源IP為Client IP,目標IP為RS IP,換句話說,LB節點IPVS只做了DNAT,把目標IP改成RS IP了,而沒有修改源IP。此時雖然RS和Client在同一個子網,鏈路連通性沒有問題,但是由於Client節點發出去的包的目標IP和收到的包源IP不一致,因此會被直接丟棄,相當於給張三發信,李四回的信,顯然不受信任。
既然IPVS沒有給我們做SNAT,那自然想到的是我們手動做SNAT,在LB節點添加如下iptables規則:
再次檢查Service是否可以訪問:
服務依然不通。並且在LB節點的iptables日誌為空:
也就是說,ipvs的包根本不會經過iptables nat表POSTROUTING鏈?
那mangle表呢?我們打開LOG查看下:
此時查看日誌如下:
我們發現在mangle表中可以看到DNAT後的包。
只是可惜mangle表的POSTROUTING並不支持NAT功能:
對比Kubernetes配置發現需要設置如下系統參數:
再次驗證:
終於通了,查看RS抓包:
如期望,修改了源IP為LB IP。
原來需要配置 net.ipv4.vs.conntrack=1 參數,這個問題折騰了一個晚上,不得不說目前ipvs的文檔都太老了。
前面是通過手動iptables實現SNAT的,性能可能會有損耗,於是如下開源項目通過修改lvs直接做SNAT:
除了SNAT的辦法,是否還有其他辦法呢?想想我們最初的問題,Client節點發出去的包的目標IP和收到的包源IP不一致導致包被丟棄,那解決問題的辦法就是把包重新引到LB節點上,只需要在所有的RS節點增加如下路由即可:
此時我們再次檢查我們的Service是否可連接:
結果沒有問題。
不過我們是通過手動添加Client IP到所有RS的明細路由實現的,如果Client不固定,這種方案仍然不太可行,所以通常做法是乾脆把所有RS默認路由指向LB節點,即把LB節點當作所有RS的默認網關。
由此可知,用戶通過LB地址訪問服務,LB節點IPVS會把用戶的目標IP由LB IP改為RS IP,源IP不變,包不經過iptables的OUTPUT直接到達POSTROUTING轉發出去,包回來的時候也必須先到LB節點,LB節點把目標IP再改成用戶的源IP,最後轉發給用戶。
顯然這種模式來回都需要經過LB節點,因此又稱為雙臂模式。
網關模式(Gatewaying)又稱為直連路由模式(Direct Routing)、透傳模式, 所謂透傳即LB節點不會修改數據包的源IP、埠以及目標IP、埠 ,LB節點做的僅僅是路由轉發出去,可以把LB節點看作一個特殊的路由器網關,而RS節點則是網關的下一跳,這就相當於對於同一個目標地址,會有多個下一跳,這個路由器網關的特殊之處在於能夠根據一定的演算法選擇其中一個RS作為下一跳,達到負載均衡和冗餘的效果。
既然是通過直連路由的方式轉發,那顯然LB節點必須與所有的RS節點在同一個子網,不能跨子網,否則路由不可達。換句話說, 這種模式只支持內部負載均衡(Internal LoadBalancer) 。
另外如前面所述,LB節點不會修改源埠和目標埠,因此這種模式也無法支持埠映射,換句話說 LB節點監聽的埠和所有RS節點監聽的埠必須一致 。
現在假設有LB節點IP為 192.168.193.197 ,有三個RS節點如下:
創建負載均衡Service並把RS添加到Service中:
注意到我們的Service監聽的埠30620和RS的埠是一樣的,並且通過 -g 參數指定為直連路由模式(網關模式)。
Client節點IP為192.168.193.226,我們驗證Service是否可連接:
我們發現並不通,在其中一個RS節點192.168.193.172上抓包:
正如前面所說,LB是通過路由轉發的,根據路由的原理,源MAC地址修改為LB的MAC地址,而目標MAC地址修改為RS MAC地址,相當於RS是LB的下一跳。
並且源IP和目標IP都不會修改。問題就來了,我們Client期望訪問的是RS,但RS收到的目標IP卻是LB的IP,發現這個目標IP並不是自己的IP,因此不會通過INPUT鏈轉發到用戶空間,這時要不直接丟棄這個包,要不根據路由再次轉發到其他地方,總之兩種情況都不是我們期望的結果。
那怎麼辦呢?為了讓RS接收這個包,必須得讓RS有這個目標IP才行。於是不妨在lo上添加個虛擬IP,IP地址偽裝成LB IP 192.168.193.197:
問題又來了,這就相當於有兩個相同的IP,IP重復了怎麼辦?辦法是隱藏這個虛擬網卡,不讓它回復ARP,其他主機的neigh也就不可能知道有這么個網卡的存在了,參考 Using arp announce/arp ignore to disable ARP 。
此時再次從客戶端curl:
終於通了。
我們從前面的抓包中知道,源IP為Client IP 192.168.193.226,因此直接回包給Client即可,不可能也不需要再回到LB節點了,即A->B,B->C,C->A,流量方向是三角形狀的,因此這種模式又稱為三角模式。
我們從原理中不難得出如下結論:
前面介紹了網關直連路由模式,要求所有的節點在同一個子網,而ipip隧道模式則主要解決這種限制,LB節點IP和RS可以不在同一個子網,此時需要通過ipip隧道進行傳輸。
現在假設有LB節點IP為 192.168.193.77/25 ,在該節點上增加一個VIP地址:
ip addr add 192.168.193.48/25 dev eth0
有三個RS節點如下:
如上三個RS節點子網掩碼均為255.255.255.128,即25位子網,顯然和VIP 192.168.193.48/25不在同一個子網。
創建負載均衡Service並把RS添加到Service中:
注意到我們的Service監聽的埠30620和RS的埠是一樣的,並且通過 -i 參數指定為ipip隧道模式。
在所有的RS節點上載入ipip模塊以及添加VIP(和直連路由類型):
Client節點IP為192.168.193.226/25,我們驗證Service是否可連接:
Service可訪問,我們在RS節點上抓包如下:
我們發現和直連路由一樣,源IP和目標IP沒有修改。
所以IPIP模式和網關(Gatewaying)模式原理基本一樣,唯一不同的是網關(Gatewaying)模式要求所有的RS節點和LB節點在同一個子網,而IPIP模式則可以支持跨子網的情況,為了解決跨子網通信問題,使用了ipip隧道進行數據傳輸。
ipvs是一個內核態的四層負載均衡,支持NAT、Gateway以及IPIP隧道模式,Gateway模式性能最好,但LB和RS不能跨子網,IPIP性能次之,通過ipip隧道解決跨網段傳輸問題,因此能夠支持跨子網。而NAT模式沒有限制,這也是唯一一種支持埠映射的模式。
我們不難猜想,由於Kubernetes Service需要使用埠映射功能,因此kube-proxy必然只能使用ipvs的NAT模式。
使用kubeadm安裝Kubernetes可參考文檔 Cluster Created by Kubeadm ,不過這個文檔的安裝配置有問題 kubeadm #1182 ,如下官方配置不生效:
需要修改為如下配置:
可以通過如下命令確認kube-proxy是否修改為ipvs:
創建一個ClusterIP類似的Service如下:
ClusterIP 10.96.54.11為我們查看ipvs配置如下:
可見ipvs的LB IP為ClusterIP,演算法為rr,RS為Pod的IP。
另外我們發現使用的模式為NAT模式,這是顯然的,因為除了NAT模式支持埠映射,其他兩種均不支持埠映射,所以必須選擇NAT模式。
由前面的理論知識,ipvs的VIP必須在本地存在,我們可以驗證:
可見kube-proxy首先會創建一個mmy虛擬網卡kube-ipvs0,然後把所有的Service IP添加到kube-ipvs0中。
我們知道基於iptables的Service,ClusterIP是一個虛擬的IP,因此這個IP是ping不通的,但ipvs中這個IP是在每個節點上真實存在的,因此可以ping通:
當然由於這個IP就是配置在本地虛擬網卡上,所以對診斷問題沒有一點用處的。
我們接下來研究下ClusterIP如何傳遞的。
當我們通過如下命令連接服務時:
此時由於10.96.54.11就在本地,所以會以這個IP作為出口地址,即源IP和目標IP都是10.96.54.11,此時相當於:
其中xxxx為隨機埠。
然後經過ipvs,ipvs會從RS ip列中選擇其中一個Pod ip作為目標IP,假設為10.244.2.2:
我們從iptables LOG可以驗證:
我們查看OUTPUT安全組規則如下:
其中ipsetj集合 KUBE-CLUSTER-IP 保存著所有的ClusterIP以及監聽埠。
如上規則的意思就是除了Pod以外訪問ClusterIP的包都打上 0x4000/0x4000 。
到了POSTROUTING鏈:
如上規則的意思就是只要匹配mark 0x4000/0x4000 的包都做SNAT,由於10.244.2.2是從flannel.1出去的,因此源ip會改成flannel.1的ip 10.244.0.0 :
最後通過Vxlan 隧道發到Pod的Node上,轉發給Pod的veth,回包通過路由到達源Node節點,源Node節點通過之前的MASQUERADE再把目標IP還原為10.96.54.11。
查看Service如下:
Service kubernetes-bootcamp-v1的NodePort為32016。
現在假設集群外的一個IP 192.168.193.197訪問192.168.193.172:32016:
最先到達PREROUTING鏈:
如上4條規則看起來復雜,其實就做一件事,如果目標地址為NodeIP,則把包標記 0x4000 , 0x4000 。
我們查看ipvs:
我們發現和ClusterIP實現原理非常相似,ipvs Service的VIP為Node IP,埠為NodePort。ipvs會選擇其中一個Pod IP作為DNAT目標,這里假設為10.244.3.2:
剩下的到了POSTROUTING鏈就和Service ClusterIP完全一樣了,只要匹配 0x4000/0x4000 的包就會做SNAT。
Kubernetes的ClusterIP和NodePort都是通過ipvs service實現的,Pod當作ipvs service的server,通過NAT MQSQ實現轉發。
簡單來說kube-proxy主要在所有的Node節點做如下三件事:
使用ipvs作為kube-proxy後端,不僅提高了轉發性能,結合ipset還使iptables規則變得更「干凈」清楚,從此再也不怕iptables。
更多關於kube-proxy ipvs參考 IPVS-Based In-Cluster Load Balancing Deep Dive .
本文首先介紹了kube-proxy的功能以及kube-proxy基於iptables的實現原理,然後簡單介紹了ipvs,了解了ipvs支持的三種轉發模式,最後介紹了kube-proxy基於ipvs的實現原理。
ipvs是專門設計用來做內核態四層負載均衡的,由於使用了hash表的數據結構,因此相比iptables來說性能會更好。基於ipvs實現Service轉發,Kubernetes幾乎能夠具備無限的水平擴展能力。隨著Kubernetes的部署規模越來越大,應用越來越廣泛,ipvs必然會取代iptables成為Kubernetes Service的默認實現後端。
轉自 https://zhuanlan.hu.com/p/94418251
『陸』 華為ict大賽要學什麼
華為ict大賽要學的內容:
一、數通方向涵蓋盯弊大內容
1.數通基礎知識、TCP/IP協議基礎知識。
2.STP、RSTP和MSTP文
交換原理、應用和配置。
3. TCP/IP協議棧基礎、廣域網(如PPP)協議、凱豎PPPoE協議以及這些協議在華為路由器上的應用。
4.乙太網技術、VLAN、Eth-Trunk、iStack的原理和應用。
5. IPv6基礎知識、無狀態自動配置、DHCPv6和IPv6過渡技術的原理和應用。
6.靜態路由、路由策略、OSPF、OSPFv3、ISIS (IPv4)、ISIS (IPv6)、BGP和BGP4+的原理和應用。
7. MPLS、MPLS VPN、GRE VPN、L2TP、ACL、VRRP和BFD的原理和配置。
8. Telnet、FTP、DHCP的原理和配置。
9.編程自動化的原理和配置,網路自動化的實現。
10.SDN的原理和組網,如VXLAN、BGP EVPN、iMaster NCE應用。
11.組播的原理和配置。
12.QoS的原理和配置。
13.SR原理,如SR-MPLS和SRv6。
三、WLAN方向涵蓋內容
1. WLAN工作原理和部署
2. WLAN拓撲、802.11協議、802.11物理層技術、CAPWAP基本原理。
3. WLAN配置、漫遊、雙機熱備、組播和安全配置。
4. WLAN定位技術。
5. WLAN服務質量和網路優化。
6. Wi-Fi6技術和產品。
7. WLAN網路、規劃和設計。
8. WLAN IPv6網路、IPv6基礎知識、網路安全。
9. WLAN故障排除。
10.CloudCampus解決方案、VXLAN、Underlay、Fabric、overlay。
『柒』 奪寶平台三大常見騙局,幫你識清騙錢套路!
一、傳統奪寶公平公正,但其實演算法差異巨大
許多奪寶平台可媲美小型綜合電商,品類覆蓋齊全,也容易命中用戶,激起購買慾望。
然而商品受歡迎的程度不盡相同,特別是在初期玩家少的時候,需要及時的將所有商品或快或慢的售完開獎,是有難度的。加入虛擬用戶購買能有效解決這一問題,讓玩家在可接受的時間內得知自己是否中獎並能繼續下一次購買。
虛擬用戶購買本身不會改變真實玩家的中獎概率,例如100元商品某個真實玩家購買了10元並拿到了10個號碼,其它90元是虛擬還是真實玩家購買都不能改變該玩家中獎概率為10%的事實。反而加入虛擬購買也有成本並會增加平台風險,例如平台標價7580元蘋果手機,虛擬用戶購買了7000元,如果真實玩家中獎了,平台只收入了580元但要給玩家發一個手機,會造成大幅虧損。
如果這種不確定的虧損如果無限放大(通俗的講某天開出了很多手機金條和汽車,而被真實玩家中走的商品價值遠高於他們投入的錢)很多平台是無法承擔的。
而事實是還是很多平台各種豪車金條購物卡開獎極快甚至秒開,他們敢加入大量虛擬用戶購買而忽略風險秘密就在於將虛擬購買和演算法漏洞結合起來,講本該真實玩家中獎的獎品給了虛擬用戶,平台就能達到操控玩家能否中獎並只賺不賠的目的,這時虛擬用戶就變成作弊的幫凶,也就是常說的:內部人員中獎了!
二、奪寶業內通用演算法
奪寶業內的通用演算法是使用一個數字N對商品售賣份數取余再加1,例如售賣100份的商品,用N對100取余後余數范圍為0-99,加1後范圍是1-100,剛好對應賣出去的100個號碼(是否加1不重要,有人問號碼就差了1是不是這個加1的原因,這個只是為了取余以後能對應而已)。是否公平取決於這個數字N的構成以及是否平台可操控。
目前平台的數字N一般使用A+B模式,每個平台使用的A和B不盡相同。A都是平台自己提供,例如最後多少條購買記錄時間相加等,理論上平台是可以控制的。即使不去控制也存在沒有公信力的問題。所以目前產品大多引入了第三方數字B。而整個數值N是否可控從而達到操縱結果將獎品分給虛擬用戶就取決於數字B,大家可以打開任意一款產品,查看開獎演算法,然後看下面的逐一分析!
(****只研究演算法缺陷以及推測可信度,不做該平台一定造假的定論****)
三、不同平台,奪寶演算法差異巨大
[1: 只有數字A]這種是最直接的可操控,A是多少平台說了算,導致中獎結果可控。簡單的講,如果按照最後購買記錄時間得到A並計算出來某個玩家中了價值5萬元的金元寶,平台只需要改一下最後購買時間再公布就可以更換中獎用戶,最後購買時間按毫秒計算,改一下你完全沒有感知。代表平台:一元雲X,奪X高手。
[2: 數字B為定值]所謂定值就是數字B使用商品本身的價格來做B或者給你固定數字例如00000,這種方法和沒有B是一樣的原理。因為B是知道的,中獎結果取決於平台給出的A。代表產品:窩X折,惠奪X,一元搶X。
[3: 秒開/PK]所謂秒開/PK就是賣完等10秒就開獎。抓住部分玩家求追求極速開獎,急於知道結果的心理。這種方法和沒有數字B是一樣的原理。中獎結果取決於平台給出的A。代表產品:許願X寶,零錢X寶。
[4: 數字A預先給出,數值B是出A的時候不知道的最新一期彩票]
此類產品在商品全部售出並等待開獎的瞬間先公示數值A,並公示數值B選取的是哪一期的彩票,並且去彩票官網查詢該期還在等待開獎。因為數值B不確定,數值A已經公示,最後的結果完全只取決於為開獎的下一期彩票號碼,平台無法控制。此類產品的演算法沒有漏洞。代表產品:核桃X寶,一元X寶。
隨著區塊鏈行業的發展, 現在也浮現了一些區塊鏈通證奪寶平台,比如糖果奇兵、幣得、雲保鏈CIC等,這些平台都做到了和區塊鏈不可篡改的特點相結合,所以沒有平台的作弊空間。
以糖果奇兵舉例:這個平台的開獎方式為當抽獎號碼售罄時,系統會等待當前ETH區塊鏈網路上最新的區塊號(哈希值)生成,該隨機碼為64位16進制數值,待幸運區塊號確認後(大約3-5分鍾),取幸運區塊號哈希值的最後8位,轉成10進制數字,基於抽獎總人次進行取余+10000001,得到的數字即為幸運號碼。
演算法符合「數字A預先給出,數值B是出A的時候不知道的最新一個哈希值」,沒有漏洞。
平台上的所有參與記錄都一鍵上鏈,全網公開,區塊哈希值為隨機數,無法人為干預,所以保證了幸運號碼的隨機性和公正性。
目前主流的演算法就上面幾種,可能某些平台使用了其中一種或多種方法。此類平台太多無法一一驗證,名字圖標也是雷同無辨識度,但是只要依照上面幾個步驟查看能識別絕大部分演算法漏洞。
有人也許會說,我中獎了就行了,不關注過程。而這樣的平台往往抓住人的這種心理,在開始的時候讓你中些小獎,而長期來看讓你大幅虧損。
以上是實測分析,大家可以親測,覺得有道理的點個贊,讓更多人更加了解奪寶的產品。最後為了方便查看,將上述鑒別方法列成一個表格供大家參考:
『捌』 在linux下,NetworkManager是怎麼工作的 能否告訴我他的工作方式和工作原理.
什麼是NetworkManager?
NetworkManager由幾個部分組成:一個管理系統網路連接、並且將其狀態通過D-BUS進行報告的後台服務,以及一個允許用戶管理網路連接的客戶端程序。開發NetworkManager的初衷是簡化網路連接的工作,讓桌面本身和其睜鉛攔他應用程序能感知網路。
絕大部分用戶不必關心NetworkManager的後台服務,他們只通過GUI的applets來管理網路連接。對於GNOME和Xfce那就是 nm-applet工具,而對於KDE用戶來說就是KNetworkManager了。
許多Linux用戶不記得,甚至根本不曾認識到在早期Linux裡面管理網路連接時的那種折騰與痛苦。尤其是對於筆記本用戶這種需要連接到兩個甚至更多網 絡的悉胡情況。雖然早期版本的NetworkManager用起來也是一種痛苦(那個時候曾經有個外號叫NetworkMangler,即網路磨肉機),不過現在它已經成為了一個強大的工具,讓管理網路不再痛苦。
比如說吧,我記得兩年前我把我的Verizon無線EV-DO卡裝入openSUSE 11.0的時候,NetworkManager根本不需要任何設置。它識別了這張卡,並且出現在GNOME工具欄的下拉菜單裡面,唯一須要進行的操作就是 點擊「連接」。這是這些年來我碰到的最簡單的配置無線網卡的方式。
不過總是有需要改進的地方,因此NetworkManager也在繼續發展。即將到來的0.8.1版本已經可以在Fedora 13中找到,帶來了許許多多的改進和新功能。
0.8.1的新功能
最新版本的NetworkManager包括了許多新的特徵,其中絕大部分都跟支持更多的的網路設備有關。移動用戶將會很喜歡這個版本,因為 0.8.1增加了用於GSM、UMTS和CDMA卡等移動寬頻設備ModemManager的支持。使用ModemManager也有新的功能,比如信號強度顯示和選擇2G/3G模式的功能。最後(當然並不止這些),你還可以關掉漫遊功能以避免產生額外的連接費用。
0.8.1還支持使用藍牙,不僅支持個人區域網路(PAN)上網,也支持老的藍牙撥號網路(DUN)協議。所有(或者說最多)支持的設備可以在 wiki上找到。
如果你是為數不多的使用IPv6聯網的用戶之一(事實上他們發誓以後每個人都會用上),你會很高興地發現現在NetworkManager支持 IPv6的自動配置和靜態IP了。0.8.1版本還會帶來IPv6的DHCP支持。
盡管大多數最近的改變都是增強設備或者協議的支持,可0.8.1也同樣給我們代來了激侍一個新的漂亮的客戶端界面。
命令行介面
在我看來,0.8.1中最有趣的特徵是nmcli,一個NetworkManager的命令行介面。雖然NetworkManager在管理網路連接方面有著巨大的飛躍,但是有一點倒退到老風格的管理方式的是忽略了命令行介面。只用GUI配置網路有錯嗎?
有幾個問題。一部分用戶可能沒有使用能夠方便地支持NetworkManager的applet的桌面環境或者窗口管理器。有些人或者根本就沒有使用GUI環境。用戶也有可能想通過編寫腳本的方式來管理網路介面,如果唯一可用的控制器是GUI的話這會變得非常困難。
終於,NetworkManager有了自己 的CLI工具,nmcli。使用nmcli用戶可以查詢網路連接的狀態,也可以用來管理。這個工具依然有點原始,不過其語法相對簡單,並且對於那些真正需 要在CLI中使用NetworkManager的人來說並不太難掌握。比如,列舉系統中的網路介面只需要運行:
nmcli dev list就會顯示一些類似於下面的輸出:
- Device: eth0 -----------------------------------------------------------------
Type 802-3-ethernet
Driver pcnet32
State connected
Default no
HW Address 00:0C:29:C3:87:30
Capabilities:
Carrier Detect yes
Wired Properties
Carrier on
IPv4 Settings:
Address 172.16.146.140
Prefix 24 (255.255.255.0)
Gateway 172.16.146.2
DNS 172.16.146.2
如果你想要關閉一個連接,你可以使用諸如nmcli con down id <id>的東西, 這里<id>是某個連接的ID。nmcli現在還不像ifconfig那樣靈活和功能完善,不過這僅僅是一個開始。
展望未來
毫無疑問,NetworkManager尚未完成,或許永遠也不可能完成。總有新的設備需要支持,新的功能需要增加。另外,NetworkManager在讓許多用戶在使用主流、標準的網路配置時變得簡便,但未必適應那些不常見的配置。
比如,很有可能在0.8.2或者以後版本中出現的功能有 網路介面bonding 和為一個乙太網介面 同時分配一個PPPoE地址和本地地址。
不管怎麼說,NetworkManager已經成為Linux桌面的一項殺手級功能。如果你不曾想過管理家裡,辦公室和旅途中的各種網路連接是多麼的復雜,那麼你可以感謝NetworkManager,是它讓你的生活變得更加輕松。
『玖』 安兔兔超100萬分,高通新驍龍8還變得更「涼快」了
12月1日,高通在2021驍龍技術峰會上正式推出了全新一代驍龍8移動平台,在簡化了命名規則的同時,新驍龍8也全面升級了新的架構,在我們多項行業綜合基準測試中,搭載新驍龍8的工程機(8GB內存)表現紛紛刷新了驍龍移動平台的新高。
快速簡單了解下驍龍8的規格:三老察星4nm工藝製程,基於Armv9架構的全新KyroCPU,由1個Cortex-X2超大核(3.0GHz)+3個Cortex-A710大核(2.5GHz)+4個Cortex-A510小核(1.8GHz)組成,全新高通AdrenoGPU,配備了第7代AI引擎。
新驍龍8工程機跑分成績匯總:
-安兔兔(v9.2.1):1022414分
-GeekBench(v5.4.2):單核1241分,多核3843分
-AI-Benchmark(v4.0.4):555.4
-.1(v5.0):176Fps;
-.1(v5.0):98Fps;
安兔兔綜合測試:1022414分
安兔兔是國內知名度比較高的綜合性能測試軟體,能多維度地對CPU、GPU、AI、內存等進行測試,較為全方位地了解晶元平台的性能表現。此次,新驍龍8的安兔兔成績比較穩定地超過了100萬分大關,也是目前驍龍移動平台的新高。
此前基於驍龍888Plus以及16GB內存滿血組合的黑鯊4SPro成績大肢差概在88萬分左右,而僅在8GB內存下,新驍龍8平台的性能已經輕松超過滿血驍龍888Plus機器的15%以上。考慮到此次測試的新驍龍8工程樣機在配置和調校上以穩為主,我們相信最終零售版搭載新驍龍8平台的機型在性能輸出上會更具看點。
現場測試過程中,同一個測試應用軟體,我們一般會盡量跑至少兩次,最終取中間的分值,如在安兔兔測試中,我們測試最高成績為103萬分+,最低則在100萬分+,我們取中間值102萬分。下面的測試成績同理。
此外,相信發熱也是大家關注的焦點之一,在安兔兔測試後,新驍龍8工程機溫升並不明顯,從測試前的34°C升至38°C,溫度僅上升4°C,手部可以感知到溫度的上升變化,但只是有溫感。不知道大家對於這溫控表現是否滿意呢?
GeekBench測評:侍飢茄單核1241分,多核3843分
Geekbench是我們經常用來全面和准確地衡量處理器和內存性能的測試軟體。相較搭載驍龍888和12GB內存的小米11(單核1140,多核3774)來說,新驍龍8工程機的性能提長已經相當不錯,而且還是在只有8GB內存的情況下實現的。
AI-Benchmark:555.4
AIBenchmark是蘇黎世聯邦理工學院(ETH)推出的AI性能測試應用,使用了-V1、InceptionV3、Resnet-V1等在內的9種神經網路模型進行測試,其測試效果得到行業內比較廣泛的認同。目前在AI-Benchmark測試中排名第一的是採用自研SoCTensor晶元的谷歌Pixel6Pro,成績為303.6,而新驍龍8平台的成績則直接暴漲至555.4。
老實說,我們都預估到新驍龍8的AI性能會更上一層樓,只是沒想到跑分數據上會有如此大的提升幅度,這讓我們對新驍龍8平台上第7代AI引擎的未來在拍照、語音、健康等方面的應用充滿期待。
GFXbench:176Fps和98Fps
GFXbench是廠商和用戶常用的的GPU測試軟體,我們現場測試了Manhattan(曼哈頓離屏)和CarChase(飛車離屏)兩個場景,測試得到的幀率分別為176Fps和98Fps;
總結:
以上是我們在驍龍技術峰會現場對新驍龍8移動平台工程機的測試結果,哪怕拋開工程機在配置和系統調度上的優化問題,新驍龍8的性能提升仍相當可觀。(本文轉自PConline)
『拾』 centos7.6網卡配置mac
首頁
API介面管理
Eolink技術文檔
API自動化測試
網關
關鍵詞
首頁 Eolink技術文檔 介面 文章正文
CentOS6 網路管理之網卡配置及簡單路由設置(centos6升級到centos7)
admin 470 2022-09-14
本文轉載自網路公開信息
CentOS6 網路管理之網卡配置及簡單路由設置(centos6升級到centos7)
CentOS6中關於網路配置的命令有很多,本文將介紹幾個平時最長用的幾個命令,以及網卡IP地址的配置和簡單路由配置。
1、經常使用的查看IP地址命令為 ifconfig,不跟參數的情況下默認查看所有已啟用的網卡信息,如下圖所示:
如果想查看具體某塊網卡信息,則可以在ifconfig後面跟上網卡設備,如只查看eth0的信息則執行:ifconfig eht0 即可。
禁用某塊網卡:結合down命令可以禁用某塊網卡,如要禁用eth0網卡,則執行:ifconfig eth0 down 即可,這種禁用只是臨時性的,當主機一重啟則會自動啟用。
啟用某塊網卡:介個up命令可以啟用某塊網卡,如將eth0啟用,則執行:ifconfig eth0 up 即可。
ifconfig -a 命令可以查看所有網卡信息,包括禁用的。
2、NetworkManager服務可以自動檢測網路並自動連接網路的程序,優點是簡化網路連接的工作,讓桌面本身和其他應用程序能感知網路。但是有的時候通過修改配置文件修改網路時會出現問題,因此大多情況下都會把這個服務禁用掉。禁用方式如下:
service NetworkManager stop #關閉NetworkManager服務
chkconfig NetworkManager off #禁止NetworkManager服務開機自啟
3、配置網卡IP地址
使用ifconfig配置,該方法配置的IP地址立即生效,但是只是臨時生效,當主機重啟後失效。語法:ifconfig IFACE IP/MASK [up] 或 ifconfig IFACE IP netmask MASK
使用setup或system-config-network命令掉出圖形工具配置IP地址,配完之後需要手動重啟network服務,重啟後永久生效,重啟命令為 service network restart,圖形配置界面如下
通過修改配置文件設置IP地址,配置文件路徑為/etc/sysconfig/network-scripts/ifcfg-IFACE,配置文件修改完後也需要重啟network服務才能生效,且永久生效。配置文件中各項參數說明:DEVICE:此配置文件應用到的設備,需要填寫設備名,如eth0;HWADDR:對應設備的MAC地址,如果需要手動修改MAC地址的話需要把HWADDR改成MACADDR;BOOTPROTO:激活對應設備時使用的協議,常用的有dhcp、static、none、bootp;NM_CONTROLLED:NM是NetworkManager的縮寫,表示此網卡是否接受NM控制,CentOS6中建議設置為「no」;ONBOOT:在系統引導時是否激活此設備;TYPE:設備介面類型,常見的有Ethernet、Bridge;UUID:設備的唯一標識;IPADDR:指明要設置的IP地址;NETMASK:IP地址的子網掩碼,也可以使用「PREFIX=網路位」的方式表示;GATEWAY:設置默認網關地址;DNS1、DNS2、DNS3:設置DNS伺服器地址,可以同時設置三個地址;USERCTL:普通用戶是否可控制次設備;PEEDNS:該選項配合BOOTPROTO使用,如果BOOTPROTO的值為dhcp,則表示是否允許DHCP分配的dns地址覆蓋至/etc/reslov.conf文件中(該文件是存放DNS伺服器地址的);
如下圖,一般情況下配置文件中需要填寫的內容:
4、一個網卡配置多個IP地址:可通過網卡別名的方式將多個IP地址綁定到一個網卡上,網卡別名為冒號加數字的形式出現,如eht0:1,並且需要單獨創建一個對應的配置文件,可在配置文件里設置IP地址,IP地址必須是靜態的,不能使用DHCP獲取。具體設置步驟如下:
以在eht1上綁定多個ip地址為例:
第一步:在/etc/sysconfig/network-scripts/目錄下新建一個配置文件,如 ifcfg-eth1:1,並添加必要信息,如下圖:(在eth1網卡上每綁定一個地址都需要建一個對應的配置文件)
第二步:重啟network服務使之生效(service network restart)
一個網卡上綁定多個地址需要注意的是主網卡可以使用DHCP自動獲取地址,但是綁定的ip則不能使用DHCP獲取地址,只能設置靜態IP地址。
5、多個網卡共用一個IP地址:這種方式可實現高可用或者負載均衡,可通過bonding的方式實現,bonding的工作模式有三種,分別為:
Mode0(balance-rr):輪詢(Round-robin)策略,以輪詢的方式在每一個網卡介面上發送數據包,這種模式可提供負載均衡和容錯的能力
Mode1(active-backup):活動-備份(熱備)策略,在綁定的多個網卡中,只有一個被激活,其他的都是備用狀態,當且僅當活動的介面出現問題時,會自動的激活另外一個網卡介面。
Mode3(broadcast):廣播策略,在所有綁定的介面上轉發所有報文,這種模式可提供容錯能力
下面用eth0和eth1做bonding,使用mode1模式,
第一步:先在/etc/sysconfig/network-scripts/目錄下創建一個bonding的配置文件,命名為 ifcfg-bond0,並填寫必要信息,如下圖
其中miimon是用來進行鏈路檢測的,如果miimon=100,那麼系統每100ms檢測一次鏈路連接狀態,如果有一條線路不通就會自動轉到另一條線路。
第二步:修改eth0和eth1兩個網卡的配置文件,如下圖
SLAVE=yes:表示該網卡作為備用
MASTER=bond0:表示使用bond0設備作為主用
第三步:重啟network服務,使之生效,生效後查看如下圖
從圖上可以看到物理網卡的MAC地址都是一樣的,並且eth0作為主用,eth1作為備用
第四步,測試,手動斷開eht0觀察eth1是否變成主用,然後在手動斷開eth1看能否自動切換到eht0
6、路由設置,可以通過route命令手動添加和刪除靜態路由
查看路由的命令為:route -n
添加路由語法為:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
如下圖,添加一條去往10.1.1.0/24的路由,該路由從eth1口出來,下一跳是192.168.1.2
刪除路由語法為:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
如下圖,刪除一條去往123.10.1.0/24網段的靜態路由
通過以上手動修改路由可以發現,CentOS可以充當路由器,實現路由轉發功能,但是需要開啟路由轉發功能,即將/proc/sys/net/ipv4/ip_forword值修改為1,可以通過下面命令修改:
echo 1 > /proc/sys/net/ipv4/ip_forword
標簽:介面 配置 文件