Centos安裝OpenVSwitch歷程

工做須要,要在公司的虛擬機Centos系統上安裝部署openvswitch,前先後後忙了兩天才安裝成功,下面記錄一下安裝過程和發現的問題及最後的解決方法。html

操做系統:python

[root@mysql-test-host RPMS]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

openvswitch版本:mysql

[root@mysql-test-host ovswitch]# ll openvswitch-2.11.1.tar.gz 
-rw-r--r--. 1 ovswitch ovswitch 7682693 Oct 10 06:58 openvswitch-2.11.1.tar.gz

 

1、 錯誤的安裝方法:linux

根據以往源碼安裝方式已經上網搜索的安裝方式,sql

一、 先下載安裝包:openvswitch-2.11.1.tar.gz;bootstrap

二、 解壓:tar zxvf openvswitch-2.11.1.tar.gzcentos

三、 執行配置腳本:./configure --with-linux=/lib/modules/`uname -r`/build;若是沒有配置文件則執行./boot.sh生成;api

到這一步報錯,發現是由於沒有安裝內核開發包,因而按照網上方法:dom

四、 安裝內核開發包:yum -y install kernel-devel,安裝完成後運行rpm -qa | grep "kernel-devel"發現默認安裝的包和系統內核版本不一致;工具

執行配置文件仍是報錯,覺得是內核安裝包版本不一致致使,因而從網上下載了kernel-devel-3.10.0-957.21.3.el7.centos.plus.x86_64.rpm這個包,安裝後依然報錯:

configure error: linux kernel source in /lib/modules/3.10.0-957.1.3.el7.x86_64/build is not configured.

在這裏卡住了好久,不知道解決方法,後來想到去配置文件裏面找問題;

五、 進入配置文件:vi configure,搜索錯誤信息is not configured

有以下腳本:

    if (test ! -e "$KBUILD"/include/linux/version.h && \
        test ! -e "$KBUILD"/include/generated/uapi/linux/version.h)|| \
       (test ! -e "$KBUILD"/include/linux/autoconf.h && \
        test ! -e "$KBUILD"/include/generated/autoconf.h); then
        as_fn_error $? "Linux kernel source in $KBUILD is not configured" "$LINENO" 5
    fi

想到多是因爲缺乏文件致使,遂去目錄找相關文件,並把文件按照相關路徑拷貝過去;執行配置腳本,配置成功;

六、 編譯程序:make;發現有不少錯誤,基本上都是定義衝突的錯誤,上網找不到資料,最後根據錯誤提示,去源碼中註釋掉一些衝突的定義,再編譯仍是沒法經過;

七、 這邊卡住了一段時間,思考是否是系統版本和OpenVSwitch版本不兼容所致,接着就去官網查了一下版本:

 

 發現版本原來的OpenVSwitch1.3版本對內核3.10不支持,隨即換成了最新的版本,再編譯依然不經過;接着在官方網站http://docs.openvswitch.org上搜索查找,仍然沒找到解決方法;

七、 最後無心中搜索相關的衝突代碼,找到一些相關信息:

連接:https://blog.csdn.net/sqzhao/article/details/71077143

大概意思就是Centos系統安裝openvswitch會出問題,和其餘系統不太一致;

 

最後上網搜索了Centos系統安裝OpenVSwitch,發現了不少資料,找了一篇教程安裝,最後安裝成功;

 

2、正確的安裝方法

一、 安裝依賴包:yum -y install openssl-devel wget kernel-devel

二、 安裝開發工具:yum groupinstall "Development Tools"

三、 添加用戶:adduser ovswitch,切換用戶並跳轉至用戶文件夾:su - ovswitch  //此步驟並非必須,僅僅爲爲了有一個用戶文件夾好用來執行後面的命令,能夠是用當前的非root 用戶執行下面相關的命令

四、 下載源碼:openvswitch-2.11.1.tar.gz

五、 解壓:tar xfz openvswitch-2.11.1.tar.gz

六、 建立編譯目錄:mkdir -p ~/rpmbuild/SOURCES

七、 從spec文件中刪除openvswitch-kmod的依賴包,並建立一個新的spec文件:

sed 's/openvswitch-kmod, //g' openvswitch-2.11.1/rhel/openvswitch.spec > openvswitch-2.11.1/rhel/openvswitch_no_kmod.spec

八、  開始編譯:rpmbuild -bb --without=check ~/openvswitch-2.11.1/rhel/openvswitch_no_kmod.spec

可能出現如下錯誤:

error: File /home/ovswitch/rpmbuild/SOURCES/openvswitch-2.11.1.tar.gz: No such file or directory

解決辦法:cp openvswitch-2.11.1.tar.gz rpmbuild/SOURCES

(rpmbuild是一個工具,須要本身安裝)

九、 退出當前用戶使用root: exit

十、  安裝編譯生成的rpm文件:

yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.11.1-1.x86_64.rpm

十一、 啓動服務:systemctl start openvswitch.service

十二、 查看服務狀態:systemctl -l status openvswitch.service

 

可能出現如下錯誤:

 

openvswitch.service - LSB: Open vSwitch switch
   Loaded: loaded (/etc/rc.d/init.d/openvswitch)
   Active: activating (start) since 四 2014-12-04 18:35:32 CST; 1min 30s ago
  Control: 13694 (openvswitch)
   CGroup: /system.slice/openvswitch.service
           ├─13694 /bin/sh /etc/rc.d/init.d/openvswitch start
           ├─13696 /bin/sh /usr/share/openvswitch/scripts/ovs-ctl start --system-id=random
           ├─13697 tee -a /var/log/openvswitch/ovs-ctl.log
           ├─13723 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
           ├─13724 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
           └─13725 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor


12月 04 18:35:33 localhost.localdomain openvswitch[13694]: /etc/openvswitch/conf.db does not exist ... (warning).
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: Creating empty database /etc/openvswitch/conf.db ovsdb-tool: I/O error: /etc/openvswitch/conf.db: failed to lock lockfile (Resource temporarily unavailable)
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: [FAILED]
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: Inserting openvswitch module [  OK  ]

 

解決辦法:

yum install policycoreutils-python.x86_64 0:2.2.5-11.el7

mkdir /etc/openvswitch
semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?"
restorecon -Rv /etc/openvswitch

 

再次使用:

systemctl stop openvswitch.service

systemctl start openvswitch.service

 

再次查看服務狀態:systemctl -l status openvswitch.service

 

openvswitch.service - LSB: Open vSwitch switch
   Loaded: loaded (/etc/rc.d/init.d/openvswitch)
   Active: active (running) since 四 2014-12-04 18:38:52 CST; 6s ago
  Process: 13741 ExecStart=/etc/rc.d/init.d/openvswitch start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/openvswitch.service
           ├─13724 ovs-vswitchd: monitoring pid 13725 (healthy)                                                                                                                                                                                    
           ├─13725 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
           ├─13764 ovsdb-server: monitoring pid 13765 (healthy)                                                                                                                                                                                                                                                                                                                                                        
           └─13765 ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir --log-file=/var/log/openvswitch/ovsdb-server.log --pidfile=/var/run/openvswitch/ovsdb-server.pid --detach --monitor


12月 04 18:38:51 localhost.localdomain systemd[1]: Starting LSB: Open vSwitch switch...
12月 04 18:38:51 localhost.localdomain openvswitch[13741]: /etc/openvswitch/conf.db does not exist ... (warning).
12月 04 18:38:51 localhost.localdomain openvswitch[13741]: Creating empty database /etc/openvswitch/conf.db [  OK  ]
12月 04 18:38:52 localhost.localdomain openvswitch[13741]: Starting ovsdb-server [  OK  ]
12月 04 18:38:52 localhost.localdomain openvswitch[13741]: Configuring Open vSwitch system IDs [  OK  ]
12月 04 18:38:52 localhost.localdomain openvswitch[13741]: ovs-vswitchd is already running.
12月 04 18:38:52 localhost.localdomain openvswitch[13741]: Enabling remote OVSDB managers [  OK  ]
12月 04 18:38:52 localhost.localdomain systemd[1]: Started LSB: Open vSwitch switch.
12月 04 18:38:52 localhost.localdomain openvswitch[13694]: Starting ovs-vswitchd [  OK  ]
12月 04 18:38:52 localhost.localdomain openvswitch[13694]: Enabling remote OVSDB managers [  OK  ]

 

 

正確方法參考:http://www.javashuo.com/article/p-dvzqjine-dc.html

相關文章
相關標籤/搜索