OpenStack--网络环境实践(一)

本实验将多台物理主机中的虚拟主机组合,在主机A(计算节点)的虚拟主机形成局域网,同时通过主机B(控制节点)对外通信。。。

网络拓扑图

enter description here

外网地址规划
主机A作为计算节点,B作为网络控制节点,网关和DNS服务器为为192.168.153.2

主机IP
A ens33192.168.153.141/24
B ens33192.168.153.142/24

内网网络地址规划

主机IP
A ens37192.168.10.1/24
B ens37192.168.10.2/24

虚拟网络地址规划
10.0.4.200 -- 10.0.4.220由A主机网络名称空间dnsmasq提供

主机IP
VM110.0.4.215/24
VM210.0.4.210/24
VM310.0.4.211/24
DHCP10.0.4.224/24

实现细节:

以下通过虚拟主机在主机中创建并联网过程说明

主机A中的虚拟主机创建并加入网络环境时,会创建成对的虚拟网卡前一半会生成虚拟主机中,后一半会调用脚本把另一半加入到虚拟交换机上,其命令如下:

/usr/libexec/qemu-kvm -name 'c1' -m 128 -smp 1 -drive file=cirros-no_cloud-0.3.0-x86_64-disk.img,media=disk,if=virtio, 
-net nic,model=virtio,macaddr=52:56:00:00:00:01    # 前半段虚拟网卡加入虚拟机
-net tap,ifname=vif0.0,script=/etc/if-up,downscript=/etc/if-down  # 调用脚本,都半段加入到虚拟交换机上
--daemonize 

虚拟主机在加入到网络环境中时,网卡设备会广播的形式发现网络环境中是否有DHCP服务器,发现有DHCP服务器后,虚拟主机会作为客户端请求IP租赁,这时运行在网络名称空间中的dnsmasq会响应客户端,并通过单播的方式,给客户端IP池中的地址。

各个虚拟主机和其他主机的虚拟机通信?

通过GRE协议对IP报文再次封装实现,其详细定义如下:

GRE(Generic Routing Encapsulation):通用路由封装协议。定义了在一种网络层协议上封装另一种协议(或同一种协议)。例如:对某些网络层协议(如IP和IPX)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IP)中传输。同时这种技术也叫隧道Tunnel技术
Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封 。

在虚拟的交换机上通过port的格式type定义了其协议类型默认为Ethernet,只需定义为gre即可,命令如下:

ovs-vsctl set interface gre1 type=gre options:remote_ip=192.168.10.2 # 指明typegre

到目前为止虚拟主机有了IP地址后通过虚拟交换机,虚拟交换机通过GRE隧道和其他主机的在一个局域网内通信。

实现过程

安装所需的包
yum install -y iproute vnc qemu-kvm dnsmasq
# 也需要安装openvswitch
rpm -iv openvswitch-2.5.3-1.x86_64.rpm

还需准备cirros镜像
创建虚拟交换机和域名空间
systemctl start openvswitch
ovs-vsctl add-br br-in #其实虚拟交换机只是高级的桥设备
# 创建域名空间
ip netns add r0 #添加域名空间
ip link add sif0 type veth peer name rif0  #添加一对网卡
ip link set sif0 up  # 放到交换机上
ip link set rif0 up  # 放到域名空间内
在域名空间中启动后一半网卡
ip netns exec r0 ip link set rif0 up  # 域名空间执行命令ip netns <域名空间名称> exec <命令>
ip netns exec r0 ip addr add 10.0.4.254/24 dev rif0
ip netns exec r0 ip addr list
在域名空间启用dnsmadq
ip netns exec r0 dnsmasq -F 10.0.4.200,10.0.4.220,86400 -i rif0
ip netns exec r0 ss -tnlp # 查看是否监听在端口
在主机上添加虚拟机启动脚本

vim /etc/if-up

#!/bin/bash
# 
bridge=br-in
if [ -n "$1" ];then
    ip link set $1 up
    sleep 1
    osv-svctl add-port $bridge $1  
    [ $? -eq 0 ] && exit 0 || exit 1
else 
    echo "Error:no port specified"
    exit 2
fi

vim /etc/if-down

#!/bin/bash
# 
bridge=br-in
if [ -n "$1" ];then
    ip link $1 down
    sleep 1
    ovs-vsctl del-prot $bridge $1
    [ $? -eq 0 ] && exit 0 ||exit 1
else 
    echo "Error:no port specified"
    exit 2
fi
运行主机
# 运行虚拟机1
/usr/libexec/qemu-kvm -name 'vm1' -m 128 -smp 1 -drive file=cirros-no_cloud-0.3.0-x86_64-disk.img,media=disk,if=virtio, -net nic,model=virtio,macaddr=52:56:00:00:00:01 -net tap,ifname=vif0.0,script=/etc/if-up,downscript=/etc/if-down --daemonize 

# 修改参数后运行虚拟机2 需修改mac地址 接口名称
/usr/libexec/qemu-kvm -name 'vm2' -m 128 -smp 1 -drive file=cirros-no_cloud-0.3.0-x86_64-disk.img,media=disk,if=virtio, -net nic,model=virtio,macaddr=52:56:00:00:00:31 -net tap,ifname=vif1.0,script=/etc/if-up,downscript=/etc/if-down --daemonize
vnc连接主机

Xshell在安装Xmanager后,开启转发x11,可连连接虚拟机功能

enter description here

运行vnc连接虚拟主机

vncviewer :5900 &

# 其间遇到的问题
WARNING! The remote SSH server rejected X11 forwarding request.
# 解决办法
yum install xorg-x11-xauth

再次运行即可

如图,虚拟主机获取到IP地址

enter description here

添加新接口与主机B通信
ovs-vsctl set interface gre1 type=gre options:remote_ip=192.168.10.2

主机B配置

yum install -y iproute vnc qemu-kvm
# 也需要安装openvswitch
rpm -iv openvswitch-2.5.3-1.x86_64.rpm

systemctl start openvswitch
ovs-vsctl set interface gre1 type=gre options:remote_ip=192.168.10.1

#从A复制脚本镜像到B主机
scp /etc/if-* cirros-no_cloud-0.3.0-x86_64-disk.img root@192.168.153.142:/root/

mv if-* /etc/

# 启动虚拟机
/usr/libexec/qemu-kvm -name 'vm3' -m 128 -smp 1 -drive file=cirros-no_cloud-0.3.0-x86_64-disk.img,media=disk,if=virtio, -net nic,model=virtio,macaddr=52:56:00:00:00:61 -net tap,ifname=vif1.0,script=/etc/if-up,downscript=/etc/if-down --daemonize

B主机虚拟机获取到A主机DHCP的地址

enter description here

VM2主机与VM3主机跨主机通信

enter description here

在主机A ens37网卡抓包

[root@localhost ~]# tcpdump -i ens37 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens37, link-type EN10MB (Ethernet), capture size 262144 bytes
18:43:18.906672 IP 192.168.10.1 > 192.168.10.2: GREv0, length 102: IP 10.0.4.210 > 10.0.4.211: ICMP echo request, id 41984, seq 86, length 64
18:43:18.907074 IP 192.168.10.2 > 192.168.10.1: GREv0, length 102: IP 10.0.4.211 > 10.0.4.210: ICMP echo reply, id 41984, seq 86, length 64

可以看出IP报文被二次封装后发送….
至此VM1``VM2``VM3可正常通信。

enter description here

以上完成虚拟主机在宿主机主机之间的通信,虚拟主机与外网通信放到下一篇文章中
openstack–网络环境实践(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Virtual Box的安装 1、安装Virtual Box 2、 Virtual Box网络设定 3、 安装操作系统 二、 环境预配置 1、 网路设置 2、 分别修改三个虚拟机的主机名 3、 主机地址映射配置 4、 禁用selinux 5、 CentOS6本地yum源配置 注:先加载镜像 6、 NTP安装服务 三、 本地源制作 1. Centos6.6本地base、extra源制作 2. 本地base、extra源制作 3. 本地epel、openstack源制作 4. ftp服务安装 5. 修改yum源仓库指向文件 四、 keystone安装(上) 1. 安装Mysql服务 2. 安装rabbitmq消息队列 3. 为nova,neutron,cinder.heat创建用户并授权 五、 keystone安装(下) 1. 创建库和授权 2. 创建库和授权 3. 生成PKI认证所需要的证书文件 4. 同步keystone数据库,生成keystone所需的表 5. 启动keystone服务和校验服务状态 6. 创cron任务,配置定期清理过期的token 7. keystone创建user,tenant,role和endpoint 六、 Glance安装 1. Glance的安装 2. 配置glance-api服务 3. 配置glance-registry服务 4. 启动并校验glance服务 57 七、 Nova安装 59 1. nova的安装与配置 59 2. 安装和配置nova 60 八、 Neutron安装 63 1. neutron的安装与配置 63 2.Neutron使用二层组件 66 3. 配置OVS二层插件 67 4. 配置nova支持neutron 67 5. 启动neutron-server服务 68 6. 重启nova服务和neutron联动 69 7. 重启neutron-server 69 8. controller0上校验neutron的配置 69 九、 Horizon安装 71 1. Horizon组件的安装与配置 71 十、 Compute0安装nova 74 1. nova的安装与配置(compute0-10.20.0.30) 74 2. nova的安装与配置 75 十一、 Compute0安装neutron 78 1. neutron的安装与配置(compute0) 78 十二、 Network0安装neutron 83 1. neutron的安装与配置 83 十三、 新建网络 91 1. 配置安全组规则 91 2. 新建网络 92 3 .创建云主机 99 4 .分配浮动ip 101 十四、 心得体会 107

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值