最近為了安裝ovs,可廢了老大勁了,按照網上的教程安裝基本都會出現各種各樣的報錯,最終安裝失敗。最后還是官方的文檔比較好,按照ovs網址上的步驟操作下來,結果還真行了,下面是我的安裝步驟,以及參考的鏈接,希望可以給你帶來一些幫助。
OVS安裝過程
官網安裝指導(ahttps://docs.openvswitch.org/en/latest/intro/install/general/)
參考博客(https://www.cnblogs.com/popsuper1982/p/3800431.html)
參考博客(https://www.cnblogs.com/manmanchanglu/p/11787279.html)
[1]、安裝之前,執行命令apt-get install build-essential,apt-get install openssl確保這兩個已經被安裝,執行命令:sudo apt-get install python,sudo apt-get install python-pip,安裝python和pip避免后面執行的時候報錯。此外,還需要了解自己系統的內核版本,進而選擇匹配的Open vSwitch版本,具體的匹配表格如下,詳細參見https://docs.openvswitch.org/en/latest/faq/releases/;http://www.openvswitch.org/download/。
[2]、執行命令uname -a查看當前系統的內核版本,如下圖我的內核版本為5.4.0,所以接下來我下載2.14.x版本的ovs,使用命令wget http://openvswitch.org/releases/openvswitch-2.14.0.tar.gz。
然后執行命令 tar -xzf openvswitch-2.14.0.tar.gz,進行解壓,解壓完成后,進入openvswitch-2.14.0目錄下,cd openvswitch-2.14.0。
[3]、接下來,使用命令ls /lib/modules/查看本系統的內核源碼編譯目錄,然后執行命令./configure --with-linux=/lib/modules/5.4.0-51-generic/build。
或者直接執行:./configure
[4]、接下來執行make && make install進行安裝Open Vswitch,安裝過程比較漫長,耐心等待,並且注意各種打印的錯誤。
[5]、如果在安裝的過程中生成了修改了內核模塊,那么需要重新編譯內核,輸入命令make modules_install。
OVS部署配置
[1]、需要載入模塊,載入openvswitch的模塊到內核中,輸入命令:/sbin/modprobe openvswitch;/sbin/lsmod | grep openvswitch。如圖所示,相當於加載入依賴的模塊。
[2]、啟動ovs,首先輸入命令:export PATH=$PATH:/usr/local/share/openvswitch/scripts導入環境變量,然后執行命令:ovs-ctl start。執行完成后,如下圖所示證明執行成功。
[3]、啟動ovsdb-server服務,首先執行命令:export PATH=$PATH:/usr/local/share/openvswitch/scripts導入環境變量,然后執行命令:ovs-ctl --no-ovs-vswitchd start。執行完成后,如下圖所示即代表ovsdb-server服務啟動成功。
[4]、啟動ovs-vswitchd服務,首先執行命令:export PATH=$PATH:/usr/local/share/openvswitch/scripts導入環境變量,然后執行命令:ovs-ctl --no-ovsdb-server start。執行完成后,如下圖所示即代表ovs-vswitchd服務啟動成功。
[5]、建立Open vSwitch配置文件和數據庫,並根據ovsdb模板創建ovsdb數據庫,用於存儲虛擬交換機的配置信息。
依次執行命令:mkdir -p /usr/local/etc/openvswitch;ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema。如果如圖所示,出現報錯Resource temporarily unavailable,此時可以忽略。
[6]、配置ovsdb-server使用上面創建的數據庫,監聽Unix域套接字,首先執行命令:mkdir -p /usr/local/var/run/openvswitch,建立文件;然后啟動ovsdb數據庫,數據庫默認支持SSL,但是如果在build openvswitch時不允許了SSL支持,則在命令中需省略—private-key,--certificate,--bootstrap-ca-cert等相關命令。執行命令:
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach --log-file。
[7]、執行命令:ps -ef|grep ovsdb-server,查看OVSDB數據庫是否啟動成功。
[8]、執行命令:ovs-vsctl --no-wait init,初始化數據庫。
[9]、執行命令:ovs-vswitchd --pidfile --detach --log-file,啟動主OpenvSwitch守護進程,即啟動OpenvSwitch daemon。
[10]、執行到此步,ovs的安裝部署算是完成了。此時執行命令:ps -ef|grep ovs,查看當前ovs進程。
[11]、最后一步,執行命令:ovs-vsctl show,查看當前ovs的版本信息,如下圖正確顯示,說明ovs安裝部署已經成功,接下來就是ovs的使用了。
對於一些其他安裝教程的出現異常的處理(按照以上步驟,此處可忽略)
執行命令insmod ./datapath/linux/openvswitch.ko,加載Open vswitch內核模塊openvswitch.ko,(DataPath的概念,OpenFlow就是控制和數據轉發分離,而控制端,就叫做Controller Path,比如floodlight等;負責轉發數據的數據轉發端,就叫做DataPath,也就是支持OpenFlow的硬件或者軟件交換機Switch)。
如上圖,如果加載完成后出現的報錯為insmod: ERROR: could not insert module ./datapath/linux/openvswitch.ko: Invalid module format,此時解決方案比較困難,一種方法是進入Linux內核進行內核修改,另一種是換一種Linux版本,可能安裝的太新,導致內核與ovs不匹配。
如果加載模塊后出現的錯誤為insmod: ERROR: could not insert module ./datapath/linux/openvswitch.ko:Unknown symbol in module這時可能就是因為openvswitch.ko依賴的模塊沒有被加載,所以此時,需要先查看需要加載什么依賴的模塊,輸入命令modinfo ./datapath/linux/openvswitch.ko |grep depends,如下圖所示,此時的依賴模塊包括nf_conntrack,nf_nat,udp_tunnel,libcrc32c,nf_defrag_ipv6。
所以接下來,對這幾個依賴模塊進行加載,如圖所示。
加載結束后,再次執行命令insmod ./datapath/linux/openvswitch.ko
————————————————
版權聲明:本文為CSDN博主「楊木木8023」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_40042248/article/details/109862069