第1页
@WENTIAN JIANG
作者:康岩林
第2页
OpenStack 常见操作 (实验)
OpenStack 疑难解答
OpenStack 网络架构 (实验+)
OpenStack 调优 (实验)
OpenStack 测试 (实验)
Introduction
OpenStack 的发展
OpenStack 的优势
OpenStack 的基本功能
OpenStack 的逻辑架构
OpenStack 的工作流程
OpenStack 部署方式
Vagrant (实验)
OpenStack 手动部署 (实验)
OpenStack Packstack 快速部署 (实验+)
Deployment
Operations
オーバービュー
第3页
第4页
云计算需求
第5页
私有云计算平台
第6页
OpenStack 版本和特性
第7页
开源社区状况
第8页
OpenStack CI 体系
第9页
OpenStack 支持的厂商
操作系统平台
存储设备
网络设备
虚拟化平台
第10页
何为 OpenStack?
第11页
OpenStack 组件 (一)
第12页
OpenStack 组件 (二)
第13页
OpenStack 组件 (三)
第14页
OpenStack 逻辑结构
第15页
Keystone 概念架构
第16页
Glance 概念架构
第17页
Nova 概念架构 (一)
第18页
Nova 概念架构 (二)
第19页
Neutron 概念架构
Neutron Server
Neutron Database
DHCP Agent
L3 Agent
OpenVSwitch Agent
Message Queue
FC
OpenVSwitch
OVS Kernel Module
ovs-vswitchd
ovsdb-server
第20页
Cinder 概念架构 (一)
第21页
Cinder 概念架构 (二)
第22页
Keystone 认证机理
第23页
Glance 工作流程
nova-compute
Glance
API
Registry Server
Store Adapter
Glance DB
Swift
S3
Filesystem
REST
RBD
Cinder
REST
OpenStack Image Service
User
1
2
3
4
5
6
7
8
第24页
Nova 工作流程
第25页
Neutron 工作流程
Neutron Server
Neutron Database
DHCP Agent
L3 Agent
OpenVSwitch Agent
Message Queue
FC
OpenVSwitch
OVS Kernel Module
ovs-vswitchd
ovsdb-server
1
2
3
4
5
6
7
8
9
10
第26页
Cinder 工作流程 (一):创建卷
第27页
Cinder 工作流程 (二):挂载卷
第28页
第29页
OpenStack 部署方式
Packstack
手动部署
OpenStack Installer for RHEL OpenStack Platform
RHEL OpenStack Platform Director
第30页
Vagrant 简介
何为 Vagrant?
Vagrant 的优点
使用方法
第31页
OpenStack 网络
管理网络
API 网络
外部网络
虚拟机网络
第32页
路由器
网络 (二层广播域)
子网 (地址段)
网卡 (端口)
负载均衡
防火墙
是否需要提供多租户的网络
是否需要考虑二层隔离
QoS
虚拟数据中心
OpenStack 网络规划
第33页
OpenStack 网络模型 (一)
第34页
OpenStack 网络模型 (二)
第35页
OpenStack OpenVSwitch (一)
第36页
OpenStack OpenVSwitch (二)
第37页
OpenStack OpenVSwitch (三)
第38页
OpenStack 部署步骤
准备物理环境
规划实验拓扑
初始化操作系统
NTP
Package Repository
SQL Database (MariaDB)
Message Queue (RabbitMQ)
Web Server (Apache HTTP Server)
Keystone
Glance
Nova
Neutron
Horizon
Cinder
安装基础服务
部署 OpenStack 组件
准备预实验环境
第39页
第40页
OpenStack 常见操作
创建/删除网络、子网
创建/删除路由
创建镜像
启动/删除实例
获取浮动 IP
添加/挂载卷
第41页
OpenStack 疑难解答 (Trouble-shooting)
OpenStack 日志疑难解答
Neutron 网络故障疑难解答
消息队列疑难解答
Nova 实例疑难解答
第42页
Keystone排错
数据库问题,权限问题,数据库缺失,初始化失败,用户名密码错误等。
保留好配置文件备份,cp xxx.conf xxx.conf.sample
配置文件出错,确保mysql和keystone配置文件和文档一致。(注意:IP和密码等字段,清除注释)
文件权限问题,如更换配置文件之后没有配置权限。
检查软件日志和系统日志,排查时第一步就要做
Keystone执行完命令时不确定执行结果,如添加service、endpoint、project、user,role,给user和project关联role时。用echo $?检查执行结果0为没有错,1以上表示有问题。
第43页
Nova排错
时间同步问题ntp,多节点时间不同步。
数据库问题,权限问题,数据库缺失,初始化失败,用户名密码错误等。
保留好配置文件备份,cp xxx.conf xxx.conf.sample
配置文件出错,确保配置文件和文档一致。(注意: IP和密码等字段,清除注释)
文件权限问题,如更换配置文件之后没有配置权限。
Nova服务状态。
检查软件日志和系统日志,排查时第一步就要做。
执行完命令时不确定执行结果,用echo $?检查执行结果0为没有错,1以上表示有问题。
nova到rabbitmq之间的通信。
第44页
Neutron排错
数据库问题,权限问题,数据库缺失,初始化失败,用户名密码错误等。
软件包没有正确安装,用国外的源因为网络波动或其他原因导致软件安装时出现问题。
保留好配置文件备份,cp xxx.conf xxx.conf.sample
配置文件出错,确保配置文件和文档一致。(注意: IP和密码等字段,清除注释)
文件权限问题,如更换配置文件之后没有配置权限。
Neutron agent服务状态。
检查软件日志和系统日志,排查时第一步就要做。
执行完命令时不确定执行结果,用echo $?检查执行结果0为没有错,1以上表示有问题。
第45页
Neutron网络排错
vm没有绑定floating ip不通
1、检查vm能否获取到地址,在vm里面执行dhclient重新获取。
2、检查br-ex网卡配置正确,用ovs-vsctl show和brctl 检查各个网卡和bridge之 间关系是否正确,tunnel之间是否能沟通,网卡是否都处于up状态。
3、检查dhcp-agent服务和dnsmasq进程。
4、检查/var/lib/neutron/dhcp/xxxxx-845b-485d-8fe3-xxxx/host文件里面有对应虚拟机的mac和ip。
5、进入qrouter命名空间,检查vm到网关也就是qr是否通,路由表是否正确,iptables规则是否正确。
vm绑定floating ip不通
1、查询安全组规则
2、检查br-ex网卡配置正确,用ovs-vsctl show和brctl 检查各个网卡和bridge之间关系是否正 确,tunnel之间是否能沟通,网卡是否都处于up状态。
3、如果vm到DHCP server的网卡都正确,则需要查看br-tun上ovs-ofctl dumpflows 查看flows规则,对包的改写是否正确,规则是否正确。
4、检查vm到其网关是否通。
5、进入router所在命名空间,检查到vm到公网网络的网关是否通,路由表是否正确,iptables对应的 SNAT规则是否正确。
6、进入qrouter所在命名空间,查看 floatingip是否存在。
第46页
OpenStack 网络架构
bridge:网桥,Linux中用于表示一个能连接不同网络设备的虚拟设备,linux中传统实现的网桥类似一个hub设备,而ovs管理的
网桥一般类似交换机。
br-int:bridge-integration,综合网桥,常用于表示实现主要内部网络功能的网桥。
br-ex:bridge-external,外部网桥,通常表示负责跟外部网络通信的网桥。
GRE:General Routing Encapsulation,一种通过封装来实现隧道的方式。在openstack中一般是基于L3的gre,
即original pkt/GRE/IP/Ethernet
VETH:虚拟ethernet接口,通常以pair的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道。
qvb:neutron veth, Linux Bridge-side
qvo:neutron veth, OVS-side
TAP设备:模拟一个二层的网络设备,可以接受和发送二层网包。
TUN设备:模拟一个三层的网络设备,可以接受和发送三层网包。
iptables:Linux 上常见的实现安全策略的防火墙软件。
Vlan:虚拟 Lan,同一个物理 Lan 下用标签实现隔离,可用标号为1-4094。
VXLAN:一套利用 UDP 协议作为底层传输协议的 Overlay 实现。一般认为作为 VLan 技术的延伸或替代者。
namespace:用来实现隔离的一套机制,不同 namespace 中的资源之间彼此不可见
涉及的 Linux 网络技术
第47页
网络类型
Flat
Flat DHCP
VLAN
MULTI-HOST
GRE
VXLAN
Flat
Flat DHCP
VLAN
MULTI-HOST
OpenStack早些版本的网络方案
nova-network负责网络功能
第48页
FLAT模式
指定一个子网,规定虚拟机能使用的ip范围,也就是一个ip池。
创建实例时,从有效ip地址池接取一个IP,为虚拟机实例分配,然后在虚拟机启动时候注入虚拟机镜像(文件系统)。
必须手动配置好网桥(br100),所有的系统实例都是和同一个网桥连接;网桥与连到网桥的实例组成一个虚拟网络。
此后,网络控制器(nova-network节点)对虚拟机实例进行NAT转换,实现与外部的通信。
目前配置注入只能够对Linux类型的操作系统实例正常工作。
第49页
FLAT DHCP模式
与Flat模式一样,从ip池取出ip分配给虚拟机实例,所有的实例都在计算节点中和一个网桥相关。
网络控制器(运行nova-network服务的节点)运行dnsmasq作为DHCP服务器监听这个网桥。
实例通过做一次dhcp discover操作,发送请求。
网络控制器把从一个指定的子网中获得的IP地址响应给虚拟机实例。
实例通过网络控制器与外部实现互相访问。
第50页
MULTI-HOST
没有集中的nova-network服务,消除网络瓶颈。
每个nova-compute节点上,同时运行nova-network和dnsmasq,nova-network提供NAT和iptables服务,dnsmasq负责DHCP IP地址分配。
可以和VLAN配置一起使用,同一个VLAN里面的虚拟机相互之间可以互通。
符合公有云部署需求,但是nova-network HA是个隐患。
第51页
VLAN模式
每个用户分配一个VLAN,每个用户创建的instance在同一VLAN里。
每个用户分配一个网段,网络控制器上的DHCP服务器所有的VLAN所启动,为虚拟机分配私网IP地址。
网络控制器为所有instance做NAT转换。
解决了二层隔离的问题,但是VLAN 4096的限制,导致单个集群只能最多4096个用户使用,符合企业私有云使用,但不适合公有云。
第52页
通用路由封装协议(GRE)
跨不同网络实现二次IP通信
L3上面包装L3
封装在IP报文中
点对点隧道
IP header in GRE tunnel
GRE header
第53页
通用路由封装协议(GRE)
第54页
GRE tunnel的不足
大规模部署问题
性能问题
第55页
VXLAN
IP中封装MAC
L3上包装L2
L2 over UDP
1600万个VXLAN网络
第56页
VXLAN解决了GRE和VLAN的哪些不足
VLAN ID个数限制
跨机房互通问题
GRE点对点隧道过多,广播风暴
实现了大二层网络
第57页
Neutron典型部署模式
Single FLAT Network
Multi FLAT Network
Mixed FLAT and Private Network
Provider Router with private network
Per-tenant Routers with private network
第58页
网络模型
单一平面网络
多平面网络
混合平面私有网络
私有网络共享路由网络
私有网络独立路由网络
第59页
Neutron Multi-host
Data network
Management network
Control node
external network
第60页
分布式路由(DVR)
任何需要跨子网的访问都需要路由器进行路由。
让计算节点自己来处理原先的大量东西向流量和非 SNAT 南北流量(有 floating IP 的 vm 跟外面的通信)。
这样网络节点只需要处理占到一部分的 SNAT (无 floating IP 的 vm 跟外面的通信)流量,大大降低了负载和整个系统对网络节点的依赖。
DHCP 服务、VPN 服务目前仍然需要集中在网络节点上进行。
第61页
DVR用例1:同一租户不同机器
第62页
DVR用例2:SNAT(无floating IP)
第63页
DVR用例3:有 floating IP
第64页
命名空间
Tenant1-VM1 eth0 -> vnet0 -> qbrAAA -> pvbAAA -> pvoAAA -> br-int -> qr-FFF
-> qr-GGG -> br-int -> pvoBBB -> pvbBBB -> pbrBBB -> vnet1 -> Tenant1-VM2 eth0
第65页
OpenStack 调优
Mariadb调优
Rabbitmq 调优
Keystone调优
Glance调优
Nova调优
Neutron调优
第66页
Mariadb调优
max_connections = 1000 #mysql的最大连接数
max_connect_errors = #当有客户端连接服务端超时,服务端就会给它记录一次error
skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间
back_log = 200 #TCP/IP连接队列的最大值。
connect_timeout #连接超时秒数
innodb_file_per_table
query_cache_limit = 2M #指定单个查询能够使用的缓冲区大小.
query_cache_size = 80M #查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果
第67页
Mariadb HA
Master/Slave Replication
第68页
Pacemaker,Corosync and DRBD
Pacemaker
high availability and load
balancing stack for the Linux platform
Interacts with applications through
resource agents (Ras)
Corosync
Totem single-ring ordering and membership
protocol. It also pro-vides UDP and InfiniBand
based messaging, quorum, and cluster
membership to Pacemaker
DRBD
synchronizes data at the block device
requires the use of a journaling file
system such as ext3 or ext4
第69页
Keepalived ,HAProxy & VRRP
HAProxy
可靠、高性能的TCP / HTTP负载均衡器,代理
用于负载均衡api服务。
Keeplived
基于linux虚拟服务器内核模块提供第四层负载均衡
实现了健康状态检查
负载均衡主机和BackUP主机之间failover的实现
VRRP(Virtual Router Redundancy Protocol)
消除在静态路由环境中出现的SPOF。
第70页
Rabbitmq HA
RabbitMQ原生的分布式消息队列
单一模式:最简单,非集群模式
普通模式:默认的集群模式
镜像模式:把队列作做成镜像队列,
属于RabbitMQ的HA方案。
第71页
Rabbitmq & HAProxy
Rabbitmq + HAProxy
The Reliable, High Performance TCP/HTTP
Load Balancer.
Works over multiple connections
第72页
Openstack APIs
Keystone
glance-api
nova-api
cinder-api
neutron-api
第73页
HA with Keepalived ,VRRP& HAProxy
VRRP
第74页
OpenStack multi-host service
nova-scheduler
nova-compute
cinder-scheduler
第75页
Keystone的HA
Keystone是整个Openstack的关键
负责用户管理和权限控制
OpenStack每个组件都和Ketstone有交互
单个Keystone压力大
单点问题
第76页
Keystone的HA部署
第77页
Glance的HA
Glance负责整个Openstack的image管理,上传和下载操作多,对后端存储压力大
Image文件丢失与损坏
Glance API接受所有的外部请求,压力较大
第78页
Glance的HA部署
第79页
Nova的HA
Nova支持Muilt-Host模式部署+监控
可以做HA的包括nova-api和nova-scheduler,其中,
nova-scheduler内置了HA支持
对nova-api做负载均衡
第80页
Nova的HA部署
第81页
Neutron的HA
网络节点做HA(Active/Active)
dhcp-agent/openvswitch-agent/neutron-server
support Active/Passive
L3-agent and metadata-agent
DVR(分布式路由)
网络节点压力大,网络的瓶颈
第82页
overview HA solution
第83页
OpenStack 测试
功能测试(集成测试)
Tempest 项目
压力测试、压力测试
Rally项目
第84页
Tempest是什么
Tempest项目
Openstack集成测试用例套件,主要用来对OpenStack的API做
smoke test以及压力测试,也包含对CLI client的测试和scenario测试。
技术
实现基于python的unittest2测试框架和nose测试框架,Tempest使
用nose来驱动,其测试主要风格按照pyunit来写的,同时使用了testtools和
testresources等几个测试工具库。
测试范围
核心组件Keystone、Glance、Nova、Neutron、Cinder等。
第85页
Tempest explored
Tempest代码目录
├── api # API的测试集
├── common # 一些公共的工具类和函数
├── scenario # 对openstack复杂场景进行测试
├── services # tempest自己实现的 client
├── stress # 压力测试集
第86页
Openstack CI & Tempest
第87页
Rally是什么
OpenStack,毫无疑问是一个多服务协作的庞大的生态系统。Rally 是一个基准测试工具,它回答了:“OpenSack 是如何大规模运作的?” 这样的问题。Rally 自动化并统一了多个节点的OpenStack 部署、云的验证、基准测试以及分析。Rally 以一个 通用的方式去完成这项工作,使验证 OpenStack 正常工作成为可能,也就是说可以完成在高负载下的 1000 台服务器的安装。因此,它可以作为 OpenStack CD/CI 系统 的一个基本工具来使用,这将持续化地改进它的 SLA、性能和稳定性。
Deploy engine:并不是一个OpenStack的部署器(deployer),而是一个类似于插件的结构(pluggable mechanism),可以很好的与流行的部署器如DevStack、Fuel等结合使用。
Verification:使用tempset来验证已部署的OpenStack云环境的功能性。
Benchmark engine:允许在云环境中制造并发负载,并进行基准测试。
第88页
架构
通常 OpenStack 的项目是以“as-a-Service”的方式实现的,因此,Rally 提供了这种方式。另外,它实现了一个不需要守护进程的CLI-driven方式:
Rally as-a-Service:以一套守护进程运行 Rally,它可以显示 Web 界面(在开发中),所以 1 个 RaaS 云就可以被整个团队所使用。
Rally as-a-App:Rally 仅仅作为一个轻量级的、便携的 CLI 应用 (没有任何守护进程) 运行,它可以让使用和开发更简单。
第89页
组件
Rally由以下四个组件构成:
Server Providers- 为不同的虚拟化技术 (LXS、Virsh等) 和云供应商 (如Amazon) 交互提供一个统一的接口,其通过ssh访问和L3 网络来进行操作。
Deploy Engines- 在执行基准测试之前,使用从 Server Providers 获取到的服务器部署OpenStack 发行版 (如DevStack或FUEL)。
Verification- 在部署好的云中运行Tempest(或另一套特定的测试),以确认其是否正确运行,收集结果并以易于用户阅读的方式展现出来。
Benchmark Engine- 允许写一些参数化的基准测试场景,并在云环境上运行。
由 Rally 架构的简单介绍,我们知道 Rally 不仅可以写一些参数化的场景测试,以特定的参数去执行测试,还可以直接运行 Tempest 测试,得到 Tempest 的易于理解的结果。这正是推荐使用 Rally 的原因。
第90页
使用案例
Rally 已经证实其中几个典型的案例是非常有用的:
自动测量和分析,关注新代码修改后对系统性能有怎样的影响;
使用 Rally 分析器来测出规模和性能的问题;
不同的部署对系统性能的影响:
找到一套合适的 OpenStack 的部署架构;
为应对不同的负载 (控制节点的数目、swift 节点的数目等) 创建部署的规格;
第91页
Complex Scenarios
绝大多数的 Rally 场景都显示为一系列的“原子”操作。例如,NovaServer.snapshot是由 6 个原子操作组成的:
boot VM
snapshot VM
delete VM
boot VM from snapshot
delete VM
delete snapshot
第92页
第93页
OpenStack 其他的课程
OpenStack And Ceph (3天)
OpenStack And CloudForm(3天)
OpenStack Automatic Platform (5天)