CloudStack搭建指南(三)
Open vSwitch简介
概述
Open vSwitch的官方定义:Open vSwitch是一个具有工业级质量的多层虚拟交换机。通过可编程扩展,可以实现大规模网络的自动化(配置、管理、维护)。它支持现有标准管理接口和协议(比如netFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag等,熟悉物理网络维护的管理员可以毫不费力地通过Open vSwitch转向虚拟网络管理)。
模块介绍
最新代码包主要包括以下模块和特性:
ovs-vswitchd :核心模块,实现交换功能的守护程序(daemon),和Linux内核模块一起,实现基于流的交换;
ovsdb-server :提供轻量级数据库查询服务。其保存了整个OVS的配置信息,包括接口,流表,VLAN等。ovs-vswitchd从其查询配置信息;
ovsdb-tool: 不通过ovs-server就能直接操控数据库;
ovsdb-client: 直接通过ovs-server数据库操作;
ovs-brcompatd :让 ovs-vswitch 替换 Linux bridge,包括获取 bridge ioctls 的 Linux 内核模块;
ovs-dpctl :dapapath control. 用来配置 switch 内核模块,可以控制转发规则;
ovs-vsctl :获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server数据库;
ovs-appctl :openvswitch apply control, 发送命令来运行相关 daemon(很少使用);
ovsdbmonitor GUI 工具,用于显示 OVS 数据库中的相关数据;
此外, OVS 也提供了支持 OpenFlow 的特性实现,包括
ovs-openflowd: 一个简单的 OpenFlow 交换机;
ovs-controller: 一个简单的 OpenFlow 控制器;
ovs-ofctl :openvswitch openflow control,用来控制OVS作为OpenFlow交换机工作时的流表内容;
ovs-pki : OpenFlow 交换机创建和管理公钥框架;
ovs-tcpundump: 实现类似tcpdump 的抓包分析功能。
CloudStack的高级网络
高级网络
每个区域都有基本或高级网络。一个区域的整个生命周期中,不论是基本或高级网络。一旦在CloudStack中选择并配置区域的网络类型,就无法再修改。
下表比较了两种网络类型的功能
在一个云中可能会存在二种网络类型。但无论如何,一个给定的区域必须使用基本网络或高级网络。单一的物理网络可以被分割不同类型的网络流量。账户也可以分割来宾流量。你可以通过划分VLAN来隔离流量。如果你在物理网络中划分了VLAN,确保VLAN标签的数值在独立范围。
在CloudStack 中使用 Open vSwitch
Open vSwitch是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流OVS主要是用来在虚拟化环境中。虚拟机之间一个虚拟机和外网之间的通信所用,如下是一个典型的结构图:
那么,通常情况下的工作流程如下:
(1)VM实例instance产生一个数据包并发送至实例内的虚拟网络接口VNIC,图中就是instance中的eth0.
(2)这个数据包会传送到物理节点上的VNIC接口,如图就是vnet接口。
(3)数据包从vnet NIC出来,到达桥(虚拟交换机)br100上。
(4)数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理节点上的eth0。
(5)数据包从eth0出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
OVS 的基本操作
以下操作都需要root权限运行,在所有命令中br0表示网桥名称,eth0为网卡名称。
添加网桥:
# ovs-vsctl add-br br0
列出open vswitch中的所有网桥:
# ovs-vsctl list-br
判断网桥是否存在
# ovs-vsctl br-exists br0
将物理网卡挂接到网桥:
# ovs-vsctl add-port br0 eth0
列出网桥中的所有端口:
# ovs-vsctl list-ports br0
列出所有挂接到网卡的网桥:
# ovs-vsctl port-to-br eth0
查看open vswitch的网络状态:
# ovs-vsctl show
删除网桥上已经挂接的网口:
# vs-vsctl del-port br0 eth0
删除网桥:
# ovs-vsctl del-br br0量监控等等。
虚拟机网络设置
设置虚拟机的虚拟网络编辑器
(1)添加两个自定义网络
VMnet2子网设置为:10.5.5.0,起始ip为:10.5.5.128,结束ip为:10.5.5.254。
VMnet3子网设置为:10.5.6.0,起始ip为:10.5.6.128,结束ip为:10.5.6.254。
(2)进入为master节点虚拟机添加网卡
确保可以ping同新加的网卡
在agent1和agent2节点上重复以上操作,要确保新加的网卡都可用!
清理环境
(1)关闭系统虚拟机s-1-VM和v-2-VM
(2)禁用资源域
(3)进入agent1和agent2删除eth0 网卡配置文件中的桥接网卡cloudbr0,然后删除ifcfg-cloudbr0网卡配置文件。
(4)使用命令:
# virsh list --all
如果发现系统VM还在运行直接重启两台agent节点。
(5)确认网络环境:
# brctl show
(6)关闭cloudstack-management
# /etc/init.d/cloudstack-management stop
(7)清除master节点数据库
进入数据库:
# mysql -uroot -p123456
删库:
# drop database cloud;
# drop database cloud_usage;
安装openvswitch
(1)把编译好的rpm上传到合适的文件夹,然后安装
# rpm -i openvswitch-2.3.2-1.x86_64.rpm kmod-openvswitch-2.3.2-1.el6.x86_64.rpm --force –nodeps
这里不采用yum的安装方式,因为用yum安装会报一个很严重的错误,现在暂时无法解决这个报错,所以我们采用强制安装的方法,后期部署时发现并没有什么问题。
(2)为了确保openvswitch安装好了,我们是使用命令检查一下
# rpm -qa|grep openvswitch
出现以上提示我们就已经安装好了openvswitch。
(3)修改openvswitch配置文件
# vim /etc/cloudstack/agent/agent.properties
在末尾添加如下内容:
network.bridge.type=openvswitch
libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver
(4)启动ovs
# /etc/init.d/openvswitch start
设置开机自动启动
# chkconfig openvswitch on
验证Open vSwitch是否正确安装
# lsmod|grep openvswitch
出现以上提示说明您的ovs已经正确安装
(5)在agent1和agent2节点设置glusterfs
在配置文件/etc/glusterfs/glusterd.vol添加如下参数
option rpc-auth-allow-insecure on
执行命令(只需要在一台节点执行):
# gluster volume set gv2 server.allow-insecure on
重启glusterfs服务
# /etc/init.d/glusterd restart
(6)手动桥接
进入 /etc/sysconfig/network-scripts/
创建网卡
# touch ifcfg-cloudbr2
编辑cloudbr2网卡
编辑eth2网卡
重启agent1网络
# /etc/init.d/network restart
同步网卡配置文件到agent2
# scp ifcfg-cloudbr2 ifcfg-eth2 192.168.0.12:/etc/sysconfig/network-scripts/
重启agent2的网络
# /etc/init.d/network restart
初始化master节点
(1)初始化:
# cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456
# cloudstack-setup-management
(2)导入模板
#/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /opt/systemvm64template-4.6.0-kvm.qcow2.bz2 -h kvm -F
(3)进入web页面进行设置
【1】设置3倍内存超峰(真正生成环境不用设置)
【2】设置开放网段范围
(4)重启cloudstack-management
# /etc/init.d/cloudstack-management restart
关闭防火墙
# /etc/init.d/iptable stop
# chkconfig iptables off
系统配置
配置步骤如图所示:
点击“管理Edit”添加桥接网卡:cloudbr0
点击“来宾Edit”添加桥接网卡:cloudbr2
添加主存失败,我们直接在“基础架构”那里重新剩余未添加完成的部分
添加完成后启动“资源域”
我们可以查看一下ovs为我们自动创建的网卡:
如果系统VM正常启动那么至此cloudstack的ovs网络部署完成,现在我们就可以自由的进行添加网络、主机等操作了!
作者:废权
链接:https://blog.yjscloud.com/archives/31
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。


共有 0 条评论