optimize openstack when using lxc and ceph › files › pengdonglin137 › optimize_ope… ·...

20
Optimize OpenStack When using LXC and Ceph Li W Li Wang Kylin Cloud

Upload: others

Post on 29-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

Optimize OpenStack When using LXC and Ceph

Li WLi WangKylin Cloudy

Page 2: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

KylinCloud简介y基于OpenStack研发

为用户提供IaaS、PaaS层次的云服务解决方案,可构建公有云和私有云服务

提供虚拟化管理 项目管理 系统资源管理 资源状态提供虚拟化管理、项目管理、系统资源管理、资源状态监控、告警管理、计费管理、用户管理等功能

KylinCloudBased on OpenStack

2

Page 3: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

应用平台天河二号超算平台

家国家十二五863重大科技项目,广州科技一号工程

峰值计算性能10亿亿次以上,连续四次位居国际Top500榜首

建有广州超算中心,目前系统20000个节点

双路12核E5-2692,64GB内存

定制的内部高速互联(224Gbps)

总存储容量12.4PB

3

Page 4: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

应用部署部署节点

当前部署约2000个节点当前部署约2000个节点

基于TH-NI高速网(224Gbps)

基于Ceph构建全局分布式存储

支撑应用

电子政务类应用

广东省省级教育数据中心广东省省级教育数据中心

广州市萝岗区电子政务

渲染类应用

华强文化科技集团

凡拓数码科技

创意云

4

创意云

Page 5: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

KylinCloud社区贡献y积极参与OpenStack社区并贡献社区,累计贡献代码超过30000+行超过30000+行最新Liberty版核心组件代码commits数排名国内第四

一名Rally的core reviewer

组件贡献比例

5

组件贡献比例

数据来源:http://stackalytics.com/

Page 6: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

Ceph社区贡献

积极参与Ceph社区并贡献社区,向Ceph社区提交100 it100+commits

RBD

Rbd diff / C R d f RBD Cl / RbdRbd diff merge/ Copy on Read for RBD Clones/ Rbd offline recovery tool

Cache Tiering

Writeback throttling/ Temperature based cache management

CephfsCephfs

Punch hole support/ quota support/ Inline data support

在Ceph v0.77版本中代码贡献排名第三在 p 版本中代码贡献排名第

在Ceph v0.91版本中代码贡献排名第二

6

Page 7: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

OpenStack基于KVM 启虚拟机的传统流程

Request①

Nova-API

Request①

Glance Nova- Scheduler②

Nova-compute获取image

调用libvirt启动VM

下载 image

生成启动VM的xml文件③ ④

Local disk下载 image到本地

VM

7

Page 8: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

OpenStack基于KVM从ceph rbd启虚拟机

Request①

Nova-API

Request①

Glance Cinderimage?

Location Nova Scheduler

image Volume

Location Nova-Scheduler④

Nova-computepool pool

调用libvirt

Ceph VM启动VM⑥

8

Page 9: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

OpenStack基于LXC启虚拟机的流程

Request①

Gl

Nova-API

Glance

获取image

Nova- Scheduler②

Nova-compute调用libvirt生成启动VM的xml文件④

下载 image

libvirt启动VM

生成启动VM的xml文件③

⑤挂载镜像到rootfs

Local disk到本地

VM

9

Page 10: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

KVMKVM

不需要下载镜像到本地不需要下载镜像到本地

分布式存储,支持更好的性能

便于虚拟机快照和迁移便于虚拟机快照和迁移

10

Page 11: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

LXCLXC

当前KVM+ bd的启动方式对当前KVM+ rbd的启动方式对

于LXC+ rbd不适用。于LXC+ rbd不适用。

11

Page 12: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

方案选择

OpenStack+KVM+qemu-rbdOpenStack+LXC+qemu-rbd

LXC+CephfsCephfs当前仍在积极的开发中Cephfs当前仍在积极的开发中

LXC+kernel rbd+localfs成通过rbd map块设备,再mkfs格式化成

文件系统

12

Page 13: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

待解决的问题rbd是在内核级实现的

rbd内核模块的开发比用户空间的librbd要滞后要滞后

当前rbd内核模块的灵活性和可移植性均不是很好

在ARM 64 平台上启容器时 使用 bd在ARM 64 平台上启容器时,使用rbd内核模块容易导致系统内核挂起和磁盘利用率达100%的问题

13

Page 14: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

基于NBD框架,结合librbd,实现bd irbd in userspace

Openstack+rbd-use+localfsOpenstack+rbd-use+localfs

14

Page 15: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

rbd-use:rbd in userspacep思路

nbd框架提供一个块设备 并将操作请求转发到用nbd框架提供一个块设备,并将操作请求转发到用户空间

由rados的librbd接口处理最终的操作请求由rados的librbd接口处理最终的操作请求

在用户空间实现一个rbd-use服务模块,负责转换nbd发送到用户空间的操作请求到librbd接口来处理

Requestread/write/trim/flush rbd-use librbdread/write/trim/flush

kernel

userspacerbd use

nbd0

NBD

15

NBDNBD

Page 16: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

rbd-use:rbd in userspacepreader_entry

实现方法:② 建立两个队列

请求队列:负责处理NBD发送的请求

read

write

read

write

① ②

的请求响应队列:负责响应librbd处理完成的结果由两个线程分别维护上述列队

flush flush④③

由两个线程分别维护上述列队trim discard

librbdNBD

writer_entry

16

Page 17: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

rbd-use:rbd in userspacep用法: 效果

rbd-nbdmap/unmap/list-

rbd-use与rbd-kernel的性能接近map/unmap/list

mapped

bd bd

的性能接近

使用方法简单rbd --nbd

其它的功能仍由rbd良好的稳定性

良好的可移植性完成

良好的可移植性

代码简单易于维护

17

Page 18: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

OpenStack基于LXC从Ceph rbd启虚拟机

流程

是否LXC 虚拟机?

Y

_get_guest_xml

新建并指定虚拟机的rootfs目录,生成XML文件

挂载镜像到rootfs目录_lxc_disk_handler

libvirt启动LXC 虚拟机_create_domain_and_network

18

Page 19: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

OpenStack基于LXC从Ceph rbd启虚拟机

_lxc_disk_handler(virt/libvirt/driver.py)

获取Ceph rbd中volume的地址信息

通过rbd-use将远程的volume映射为本地的块设备的块设备

将块设备挂载到LXC container的rootfs

19

Page 20: Optimize OpenStack When using LXC and Ceph › files › pengdonglin137 › Optimize_Ope… · Optimize OpenStack When using LXC and Ceph Li Wang Kylin Cloud. KylinCloud 简介 基于

谢谢!

20