AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

Red Hat OpenStack Platform 7 Training

发布者 wsgzao
发布于 1456969482874  浏览 6411 关键词 互联网, 架构, 大数据 
分享到

第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天)
支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。