1. 程式人生 > >給nova虛機新增網絡卡

給nova虛機新增網絡卡

場景

虛機只有一張網絡卡能通業務網,但是需要有另一張網絡卡能通管理網。

以下手動給虛機新增一張網絡卡。

這裡寫圖片描述
VM有nic-1通過br-int連線到物理網絡卡eth0上,需要增加nic-2通過br-bond0連線到物理interface bond0.706上。

原理很簡單:建立Linux bridge br-bond0,把物理介面bond0.706加到br-bond0上,再用virsh attach-interface給VM新增網絡卡nic-2

在CentOS 7上嘗試兩種配置:

配置一

直接修改、新增網絡卡配置檔案。
1. 去掉bond0.706上配置的IP,並增加BRIDGE屬性


[

[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0.706
BOOTPROTO=none
DEVICE=bond0.706
ONBOOT=yes
NM_CONTROLLER=no
BONDING_OPTS="mode=1 miimon=100"
#PREFIX=24
#IPADDR=172.16.231.27 <=== 註釋掉IP地址等資訊
#GATEWAY=172.16.231.1
VLAN=yes
BRIDGE=br-bond0 <=== 新增

br-bond0就是網橋名,現在還沒有這個網橋,下一步中配置。

  1. 新增br-bond0配置檔案

    [[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-bond0
    NAME=br-bond0
    BOOTPROTO=static
    DEVICE=br-bond0
    ONBOOT=yes
    TYPE=Bridge
    NM_CONTROLLER=no
    PREFIX=24
    IPADDR=172.16.231.27
    GATEWAY=172.16.231.1
    VLAN=yes

    注意,

    • 原來bond0.706上的IP地址放到了這個bridge上

    • TYPE=Bridge,區分大小寫!我一開始寫成了TYPE=bridge,重啟之後死活報錯:

    May 17 07:15:01 NFJD-TESTN-COMPUTE-3 network: Bringing up interface br-bond0:  ERROR    : [/etc/sysconfig/network-scripts/ifup-eth] Device br-bond0 does not seem to be present, delaying initialization.
    May 17 07:15:01 NFJD-TESTN-COMPUTE-3 /etc/sysconfig/network-scripts/ifup-eth: Device br-bond0 does not seem to be present, delaying initialization.
    May 17 07:15:01 NFJD-TESTN-COMPUTE-3 network: [FAILED]

    檢視/etc/sysconfig/network-scripts/ifup-eth指令碼後發現TYPE一定要寫成Bridge。(實際上這個指令碼也是用brctl等命令操作的)

  2. 給VM新增網絡卡

    [root@NFJD-TESTN-COMPUTE-3 ~]# virsh attach-interface instance-000005ac --type bridge --source br-bond0
    Interface attached successfully
    
    [root@NFJD-TESTN-COMPUTE-3 ~]# virsh domiflist instance-000005ac
    Interface  Type       Source     Model       MAC
    <hr />
    
    tape6ffc79e-b4 bridge     alubr0     virtio      fa:16:3e:83:d7:0b
    vnet3      bridge     br-bond0   rtl8139     52:54:00:69:b5:d2
  3. 在VM中配置靜態IP

    [root@bigdata04 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens7
    BOOTPROTO=static
    NAME=ens7
    DEVICE=ens7
    ONBOOT=yes
    IPADDR=172.16.231.120
    PREFIX=25
    [root@bigdata04 ~]# ifconfig
    ens7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.231.120  netmask 255.255.255.128  broadcast 172.16.231.127
        inet6 fe80::5054:ff:fee2:6be0  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:e2:6b:e0  txqueuelen 1000  (Ethernet)
        RX packets 373  bytes 23929 (23.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 100  bytes 12967 (12.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.10.5  netmask 255.255.255.0  broadcast 10.10.10.255
        inet6 fe80::f816:3eff:fe83:d70b  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:83:d7:0b  txqueuelen 1000  (Ethernet)
        RX packets 9  bytes 976 (976.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 920 (920.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  4. 修改nova-compute啟動配置
    物理機重啟時,經常看到nova-compute連不上libvirtd而啟動失敗,所以修改nova-compute啟動配置:

    [[email protected] ~]# cat /usr/lib/systemd/system/openstack-nova-compute.service
    [Unit]
    Description=OpenStack Nova Compute Server
    After=syslog.target network.target libvirtd.service     # 把libvirtd.service加上
    
    #After=syslog.target network.target
    
    
    [Service]
    Environment=LIBGUESTFS_ATTACH_METHOD=appliance
    Type=notify
    NotifyAccess=all
    TimeoutStartSec=0
    Restart=always
    User=nova
    ExecStart=/usr/bin/nova-compute
    
    [Install]
    WantedBy=multi-user.target

注意:
物理機重啟時,nova會從資料庫讀取配置並重新生成VM的libvirt.xml檔案,所以新增網絡卡會消失,需要再次執行virsh attach-interface命令。如果是用virsh啟動的虛機,可以用virsh dumpxml instance-000005ac > /etc/libvirt/qemu/instance-000005ac.xml儲存新增加的網絡卡配置。

配置二

virshbrctl配置(另一個計算節點)

  1. 和配置一中的第一步一樣,去掉bond0.706上配置的IP ,但不增加BRIDGE屬性。

  2. 建立nic.xml

    [[email protected] ~]# cat nic.xml
    <network>
        <name>virsh-net-0</name>
        <bridge name="br-bond0"/>
        <forward mode="route" dev="bond0"/>
        <model type='virtio'/>
        <ip address="172.16.171.2" netmask="255.255.255.0">
        </ip>
    </network>

    建立一個Linux bridge名叫br-bond0,給橋配置上IP地址。
    <forward mode="route" dev="bond0"/>這個沒太懂,可以看libvirt官方解釋1官方解釋2:

    forward - This element is optional. When not defined, the virtual network will work in isolated mode. However, inclusion of this element indicates that the virtual network is to be connected to the physical network. The element can have two attributes, ‘mode’ and ‘dev‘. The first one specifies the mode in which will the virtual bridge operates. Allowed values are ‘nat’ and ‘route‘. The second attribute is used whenever one wants to restrict forwarding to the named device only. If no attributes are set, NAT forwarding will be used for connectivity. Firewall rules will allow forwarding to any other network device.

    簡單來說,如果沒有forward引數,則這個net是isolated network。如果要配,則有兩種模式:1) nat:虛機IP外部不可見:出去時做IP轉換;2) route:虛機IP外部可見

  3. 建立libvirt net

    [root@NFJD-PSC-IBMN-SV502 ~]# virsh net-define nic.xml
    Network virsh-net-0 defined from nic.xml
    
    [root@NFJD-PSC-IBMN-SV502 ~]# virsh net-list --all
    Name                 State      Autostart     Persistent
    <hr />
    
    default              active     yes           yes
    virsh-net-0          inactive   no            yes
  4. 啟動這個net,並設定為自啟動

    [[email protected] ~]# virsh net-start virsh-net-0
    Network virsh-net-0 started
    [[email protected] ~]# virsh net-autostart virsh-net-0
    Network virsh-net-0 marked as autostarted

    autostart表示libvirtd重啟時,會自動start這個net

    [[email protected] ~]# virsh net-info virsh-net-0
    Name:           virsh-net-0
    UUID:           19442a5d-45fd-4fe7-bded-caced3a137c1
    Active:         yes
    Persistent:     yes
    Autostart:      yes
    Bridge:         br-bond0
    
    [[email protected] ~]# virsh net-dumpxml virsh-net-0
    <network>
    <name>virsh-net-0</name>
    <uuid>19442a5d-45fd-4fe7-bded-caced3a137c1</uuid>
    <forward dev='bond0' mode='route'>
    <interface dev='bond0'/>
    </forward>
    <bridge name='br-bond0' stp='on' delay='0'/>
    <mac address='52:54:00:e9:7e:39'/>
    <ip address='172.16.171.2' netmask='255.255.255.0'>
    </ip>
    </network>

    此時可以看到bridge br-bond0

    [root@NFJD-PSC-IBMN-SV502 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br-bond0        8000.525400e97e39    yes        br-bond0-nic
    virbr0        8000.5254003ea676    yes        virbr0-nic
  5. bond0加到br-bond0

    [root@NFJD-PSC-IBMN-SV502 ~]# brctl addif br-bond0 bond0
    [root@NFJD-PSC-IBMN-SV502 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br-bond0        8000.525400e97e39    yes        bond0   <=== 多了bond0
                            br-bond0-nic
    virbr0        8000.5254003ea676    yes        virbr0-nic
  6. 給VM新增網絡卡

    [[email protected]-PSC-IBMN-SV502 ~]# virsh attach-interface instance-000a039d --type bridge --source br-bond0
    Interface attached successfully
    
    [[email protected]-PSC-IBMN-SV502 ~]# virsh domiflist instance-000a039d
    Interface  Type       Source     Model       MAC
    <hr />
    
    tap6d788a74-ea bridge     alubr0     virtio      fa:16:3e:ea:02:2c
    vnet0      bridge     br-bond0   rtl8139     52:54:00:22:33:c7
  7. 設定/etc/rc.local

    [[email protected] ~]# tail /etc/rc.local
    touch /var/lock/subsys/local
    
    
    #Added by eldon
    
    sleep 3
    
    #ifconfig bond0 down
    
    
    #virsh net-start virsh-net-0
    
    
    #ifconfig bond0 up
    
    brctl addif br-bond0 bond0
    
    route add -net 0.0.0.0 gateway 172.16.171.254

    如果不sleep 3:

    May 17 21:49:38 NFJD-PSC-IBMN-SV502 rc.local: bridge br-bond0 does not exist!

    還曾嘗試不使用brctl addif br-bond0 bond0,直接建立ifcfg-br-bond0,但是在物理機啟動時/var/log/messages顯示virsh net-start virsh-net-0br-bond0已經存在了。

後續

相關推薦

nova新增

場景 虛機只有一張網絡卡能通業務網,但是需要有另一張網絡卡能通管理網。 以下手動給虛機新增一張網絡卡。 VM有nic-1通過br-int連線到物理網絡卡eth0上,需要增加nic-2通過br-bond0連線到物理interface bond0.706上

VM linux虛擬機器新增修改ip 並修改mac地址

修改ip 開啟終端 vi /etc/sysconfig/network-script/ifcfg-eth0; 具體是哪個可以到這個目錄地下檢視一下,我的是ifcfg-system-eth0. 開啟檔案後修改裡面的ip地址,IPADRR這一項是填寫ip地址的地方。 然後開啟拎一個檔案檢視我

kvm虛擬機器新增

前幾篇文章介紹了有關KVM安裝虛擬機器以及如何給虛擬機器新增硬碟,今天我們再來介紹下有關如何給KVM虛擬機器新增網絡卡。 給KVM虛擬機器新增網絡卡,可以分為兩種形式:圖形介面的和virsh attach-interface命令的。 圖形介面的很簡單,現在已虛擬機器centos2為例:如下圖操作:

Esxi 6.0 -- Esxi 5.0 新增驅動

           et-e1000e:Obsolete- Driver for Intel I217/I218/82579LM/82574L net-tulip: DECchip 2114

新增驅動和USB支援 以及一些問題的集中處理

之前核心移植時沒有新增網絡卡驅動和USB支援,新增如下: 1.乙太網卡驅動安裝: 1.1第一步、修改核心程式碼 [[email protected] ~]$ cd fl2440 [[email protected] fl2440]$ cd kernel

為KVM虛擬機器新增,並配置IP

環境:[[email protected] ~]# uname -a Linux room1pc01.tedu.cn 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x8

Python獲取本所有的MAC地址

在拙作《Python可以這樣學》(清華大學出版社,2017.2)第297頁介紹了一種獲取本機網絡卡MAC地址的方法,不過程式碼顯得稍微有點囉嗦,並且只能獲得一塊網絡卡的MAC地址。本文對該內容稍加補充。 1、這樣更簡潔 >>> import uuid

怎樣在oracle virtualbox裡新增

我想在oracle virtualbox裡新增一塊兒網絡卡,用於內部網路,和另一臺機器做Heartbeat心跳測試。 怎樣新增呢? 關閉虛擬機器,新增一塊虛擬網絡卡: 啟動虛擬機器後,此時還檢視不到新加的網絡卡: [[email protected] ~]#

VirtualBox下為Ubuntu新增第二塊

問題描述 因為做Docker網路實驗,需要將原先Ubuntu虛機的一塊“橋接”網絡卡改為“HostOnly”網絡卡,並且新增另一塊“NAT”網絡卡。幾經周折發現只有第一塊網絡卡可以正確配置,ifconfig里根本看不到有第二塊網絡卡。 查詢問題 於是上

kvm 增加

配置文件 root scrip valid log con detach light oba [[email protected]/* */ ok]# virsh domiflist c03 Interface Type Source

linux 下新增ipv6、路由

  新增IPV6地址 ip -6 addr add <ipv6address>/<prefixlength> dev <interface> ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0 ifconfig &

KVM修改模式:由NAT模式改為Bridge模式

1)關閉虛機# virsh  shutdown  vm1 2)編輯虛機配置檔案# virsh  edit  vm1 <interface type='default'> 改為<interface type='bridge'> 

通過設定雙實現VirtualBox上網及主宿互訪

最近,經過一些研究,終於調通了VirtualBox虛擬機器互連、主宿機互連、以及主宿機連線網際網路。下面分享一下。 1、VirtualBox中的虛擬網絡卡。VirtualBox安裝完成後,會在系統中裝一塊虛擬網絡卡,我們在管理->全域性設定中可以看到。這塊網絡卡是

OpenStack的建立過程

OpenStack最基本和常用的操作就是啟動虛機。虛機啟動的過程中涉及很多內容,其中非常重要的一個環節就是建立並繫結虛機的虛擬網絡卡。虛機的建立和管理是Nova的任務,虛機網路的建立和管理是Neutron的任務,而虛機網絡卡,作為連線虛機和虛機網路的橋樑,其建立

centos 7 物理新增虛擬

1. 確認核心是否支援tun/tap確認核心是否有tun模組 [[email protected]_196_26_centos ~]# modinfo tun filename:       /lib/modules/3.10.0-327.el7.x86_64/

轉:在fedora 9上我的TP-Link 620G 安裝驅動

作者:林俊桂  出自: http://www.linuxdiyf.com 貪希奇,給電腦裝了個Fedora 9 。由於家裡只需沒有佈網線,只能無線上網,用了個TP-Link的USB無線網絡卡,型號是TL-WN620G ,上網基本找不到Linux體系下的驅動順序。沒要領,只

新增橋,新增一對虛擬

新增網橋 新增網橋,名稱為br0 brctl addbr br0 將網橋關聯到網絡卡ens33 brctl addif br0 ens33 這裡如果你是ssh連線,執行完了你可能就會斷開連線了,所以最好吧這一步和下面幾步連在一起執行這樣就不會斷開了 brctl addif

安裝VMware後,本網路介面卡中沒有虛擬VMnet1、VMnet8

1、開啟本機服務,開啟相關的服務。   2、重置虛擬網路編輯器 1>開啟VMware,點選下圖左上角標註的"編輯",然後選中並進入"虛擬網路編輯器"。 2>還原預設設定   如果 "還原預設設定" 如上圖一

如何新增刪除子eth0:1(linux案例)

這種方法實現了單網絡卡多IP,我的系統是centos7的,如何新增刪除子網絡卡IP詳細請看下面操作例子 新增子網絡卡IP:ifconfig  ens3:1  192.168.0.100/24           //ens3是網

linux程式設計獲取本資訊

轉自:https://blog.csdn.net/shaderdx/article/details/78403437 ifaddrs結構體定義如下: struct ifaddrs    {      &