狠狠撸

狠狠撸Share a Scribd company logo
Cgourp-lxc 在17173的应用
此处为大标题。。。。。。。。。。。
此处为说明文字。。。。。。。。。。。。。。

技术中心 系统部
2013.8.15
提纲
?

背景:应用池现状

?

需求:我们要的是什么

?

Cgroup/LXC介绍

?

选择:为什么是LXC

?

场景:LXC应用在17173符合的场景

?

LXC学习的情况

?

存在的问题和以后的发展
背景:应用池的现状
在物理服务器运行的主要是php/java应用
?

纯业务逻辑、本地无重要数据、无状态

?

一台物理服务器上至少部署了6个以上的应用

?

服务器性能、状态参差不齐

?

服务器的数量会越来越多

?

业务的重要等级严重差异

?

业务突发情况无法预估

?

磁盘/网络IO小,主要负载集中在CPU和内存上
背景:应用池调度、运算主体结构
IAAS的雏形,具备部分调度功能
需求:我们要的是什么
从原始的意义上,我们要的很多,最现实的问题是:
?

一台服务器能够部署更多的应用

?

更好协调和控制应用之间的资源竞争

?

动态的调整由于业务峰值差异造成的应用资源需求

?

尽量不去增加运维、监控、开发的工作量和成本
Cgroup/LXC介绍
LXC是什么?
?

Containers可以作为OS层面的虚拟化的一个替代方案,你可以在一个宿主机上运行多个隔离的系统。在单一的操作系统
下运行container更加高效,因此,container将会替代VM,成为未来云计算基础架构中的主导技术。

?

container namespace cgroup virtualisation,LXC是针对Linux Containers的用户空间控制包。这是一个轻量级的系统虚拟化
机制,有时被描述为“chroot on steroids”(类固醇上的chroot,意思是功能类似chroot,但比chroot提供了更多的隔离功
能)

?

LXC基于chroot实现了完整了系统虚拟化,并在Linux现有的进程管理架构上添加了资源管理和隔离的机制。

?

Container是安全容器与资源容器的组合

安全容器:chroot, UID/PID/IPC/Network Namespace

资源容器:Control Cgroup (Cgroup)
Cgroup/LXC介绍
Cgroup有么用?(抄taobao的,他们了解的更深入)
?

基于进程组的资源管理

基础框架 + 子控制器
使用Cgroup的分组机制,对一组进程就某种系统资源实现资源管理。
?

cpuset子控制器

为进程组分配一组允许使用的CPU和内存结点
?

memcg子控制器

限制进程组允许使用的物理内存
只限制匿名页和Page Cache,不包括内核自己使用的内存

内存紧张时使用与全局回收同样的算法在组内回收
?

Blkio子控制器

限制进程组的磁盘IO带宽
实际控制的是磁盘为各进程组服务的时间片数量,和进程调度器cfs针对cpu的分时服务原理相同
方案比较
动态迁移
XEN (半虚拟化)

支持

KVM (全虚拟化)

支持

LXC

不支持

XEN (半虚拟化)
KVM (全虚拟化)
LXC

速度
比本地环境慢
比本地环境慢
同本地环境

CPU增减
内存增减
通过Guest OS CPU 通过b allo o nd river
热插拔机制 支持
支持
通过Guest OS CPU 通过b allo o nd river
热插拔机制 支持
通过cp uset 和CFS
组调度扩展 支持
消耗
最高
高
对比楼上的几乎为零

支持
通过Cg ro up 支持
异构模拟
支持
支持
不支持

可运行不同OS
支持
支持
不支持

安全隔离性
强
强
差
LXC优缺点
?

优点

虚拟化开销小,一台物理机跑很多“小”虚拟机,资源隔离,竞争小
通过Cgroup增减CPU/内存非常方便,调整速度很快
和本地环境相同的速度

?

缺点

不能热迁移 -> 我们需要热迁移吗?
不能模拟不同体系结构、装不同os -> 不需要?为什么你不需要?
安全隔离差 -> 已经有了应用程序的隔离了,其他都系统部在操作,为什么要隔离?
ForkBomb、优先级反转、Cgroup实现缺陷 -> rhel6.4已经好些了,测试环境不怕
- Memcg不能控制buffer和内核内存
Proc下的多数文件不认识Container -> top/sar/free/iostat 都用不了;没办法,要么改内核,要么等RHEL7
LXC使用场景
?

总结这么多,它真的符合应用池使用;

?

RHEL5.x,RHEL6.x的内核版本较低,对LXC支持不是最好

?

debian、ubuntu、opensuse对LXC支持已经很完善了,由于历史原因我们不方便迁
移

?

第一步:我们在功能测试环境测试

?

第二步:我们在压力环境上测试

?

第三步:拿出生产环境30%的实例,进行LXC测试

?

总结、积累运维经验

?

第四步:等待RHEL7在生产环境上使用
LXC学习的情况
?

学会安装、初步测试成功

?

一个人的力量有限,求帮助、求同伙
Cgroup lxc在17173 iaas应用池中应用

More Related Content

Cgroup lxc在17173 iaas应用池中应用