首页 > 代码库 > openstack中虚拟机怎么与物理机通信

openstack中虚拟机怎么与物理机通信

How-to-connection-ns-outside

环境配置

网络接口

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.20.0.10
NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.0.10
NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.4.10
NETMASK=255.255.255.0

重新启动网络服务

service network restart


创建一个network namespace foo

ip netns add foo

查看network namespace

ip netns

创建一个vethp

ip link add tap-foo type veth peer name tap-root

将tap-foo分配到foo namespace中

ip link set tap-foo  netns foo

为tap-foo 加入一个ip地址

ip netns exec foo ip addr add 192.168.10.2/24 dev tap-foo 
ip netns exec foo ip link set tap-foo up

查看foo 空间中的网卡信息

ip netns exec foo ip a

为root namespace 中的tap-root加入ip

 ip addr add 192.168.10.1/24 dev tap-root
 ip netns exec foo ip link set tap-root up

查看 root 空间中的网卡信息

ip a

检查是否网络连通

 ping 192.168.10.2

 ip netns exec foo ping 192.168.10.1


安装须要用到的包

yum install libvirt openvswitch python-virtinst xauth tigervnc -y

移除默认的libvirt 网络,方便清晰分析网络情况

virsh net-destroy default
virsh net-autostart --disable default
virsh net-undefine default

启动openvswitch

service openvswitch start
chkconfig openvswitch on

创建一个openvswitch bridge 名字叫br-int

ovs-vsctl add-br br-int

利用openvswitch 的 br-int,定义一个libvirt 网络

vi libvirt-vlans.xml
<network>
  <name>ovs-network</name>
  <forward mode=‘bridge‘/>
  <bridge name=‘br-int‘/>
  <virtualport type=‘openvswitch‘/>
  <portgroup name=‘no-vlan‘ default=‘yes‘>
  </portgroup>
  <portgroup name=‘vlan-100‘>
    <vlan>
      <tag id=‘100‘/>
    </vlan>
  </portgroup>
  <portgroup name=‘vlan-200‘>
    <vlan>
      <tag id=‘200‘/>
    </vlan>
  </portgroup>
</network>

启动libvirt 网络

virsh net-define libvirt-vlans.xml
virsh net-autostart ovs-network
virsh net-start ovs-network

创建一个instance,并连接到ovs-network,网络接口部分配置例如以下

<interface type=‘network‘>
  <source network=‘ovs-network‘ portgroup=‘vlan-100‘/>
  <model type=‘virtio‘/>
</interface>

能够參考附件instance1.xml创建

cp ~/gre/ /var/tmp/
cd /var/tmp/gre
mv cirros-0.3.0-x86_64-disk.img instance1.img
virsh define instance1.xml
virsh start instance1
virsh vncdesplay instance1
vncviewer :0

启动console 以后,登录加入ip得知 192.168.1.20

ip addr add 192.168.1.20/24 dev eth0

加入一个openvswitch port

ip link add br-int-tap100 type veth peer name tap100
ovs-vsctl add-port br-int br-int-tap100
ovs-vsctl set port br-int-tap100 tag=100
ip addr add 192.168.1.21/24 dev tap100
ip link set tap100 up
ip link set br-int-tap100 up

openstack中虚拟机怎么与物理机通信