在Mesos上创建Rancher容器服务
家好,我是Sidhartha Mani,一名Rancher Labs的工程师,在过去几个月里,我一直在使用Apache Mesos,一个开源的资源管理器和调度器,可以用于对基础设施的部署工作。Mesos非常擅长于资源的理解和容量管理,但是对于更高级的工作负载或容器管理,许多用户选择一个像Marathon之类的框架。这样的框架可以提供框架提供的功能如负载平衡、服务发现、滚动升级,应用程序可组合性,持续部署等这样的功能。
许多Rancher的社区成员也使用Mesos,感到需要一个结合了容错,和调度功能的便多租户、Rancher提供的私有容器服务功能的系统。一个来自于从AT&T的社区用户Marcel Neuhausler,提出一个广泛的设计和设计这样一个集成的工作流。安排VM的功能和Rancher的能力并管理这些VM部署容器。他为Rancher写了一个基于Mesos的框架,这被证明是一个伟大的起点写我今天要讲的框架。
在这篇博客,我将阐述这个想法和这个软件(Rancher Mesos framework),通过与Marcel合作的行为了。这个框架可以用来设置大规模生产工作Hadoop,Kafka,ElasticSearch等在Docker 容器,以及DevOps过程的任何部分,如构建、测试、分段或生产应用程序环境。
在这个部分,我将描述这个框架的架构并展示如何在你本地环境上配置。
Rancher Mesos架构
下面有个图来解释 Rancher Mesos 框架:
如你所见,Rancher集成了Mesos,使用标准的Mesos接口——Mesos框架。各种组件有:
1.mesos-master:mesos-master是机器运行的集群mesos-master的进程。它维护和监视mesos-slave,并处理资源提供、任务启动,任务监控、容错和消息传递等。
2.Mesos Slave:
3.Rancher Server:这是运行rancher/server 的docker容器的一个主机集群。它维护和监控rancher主机,向用户提供一个多租户容器服务,包括容器管理和基础设施的特性,如私有部署环境中,容器网络、docker组建的支持,服务发现、滚动升级,注册管理等。
4.Rancher Hosts:这些使用Mesos主机提供的资源提供。这些主机运行docker和 rancher/agent运行,用于 rancher的私有网络,容器为各种任务调度和包括主机。
5.Rancher-Mesos Scheduler:是一个两层的应用程序,Rancher外部事件处理程序以及Mesos 调度器。事件处理程序是用来监听Rancher从创建主机事件。当Rancher-Mesos调度程序接收到创建主机事件,它添加事件到事件队列。一旦便提供了一个合适的slave安排任务,执行事件,和Rancher主机上创建,如果它有足够的能力。
6.Rancher-Mesos Executor:被调用的过程提供了一个可用的slave为rancher创建主机。这个过程使用QEMU-KVM创建vm,使用桥接网络。安装在这些vm然后rancher/agent 将它注册到rancher server上。
7.Rancher-Mesos Framework: 是用来参考 Rancher-Mesos Scheduler 和Rancher-Mesos Executor collectively.
Rancher Mesos 的工作流程
1.用户会点击添加主机在UI中,这将提供一个主机在一个可用的Mesos slaves。Mesos slaves的分配是由 Mesos master来做决定。
2.主机一旦供应将自己登注册到 rancher server。它将显示在UI,用户可以查看统计数据,执行shell或启动/停止容器像正常情况一样。
看下面这张图解释了事件的顺序使用rancher server:
1.当你点击添加主机在UI中,rancher服务器创建一个physicalhost.create事件。
2.这个事件接收到所有的外部订阅该事件处理程序。在这种情况下,Rancher-Mesos调度器订阅该事件。
3.收到事件时,调度程序可以保存这个事件在事件队列中。
4.然后调度器等待资源来自于Mesos Master提供的一个空闲主机。
5.一旦调度器接收资源提供,它可以检索最早的事件从队列中,并启动该任务提供主机。
6.任务开始执行Rancher Mesos。执行程序使用QEMU-KVM启动一个新的虚拟机。
7.然后在新的虚拟机安装。
8.执行程序指示新虚拟机与rancher必须作为一个主机服务器。
配置和运行Rancher框架
在这一节中,我将向您展示如何配置这个体系结构并在你的电脑上试一下。我们将使用VMware fusion pro虚拟化的设置,因为它需要改变网络配置,及其容易工作。
下载Ubuntu桌面14.04.2 iso。在VMware fusion,选择Add >从磁盘安装或图像。确保启用了嵌套的虚拟化,和启动之前至少有2 G的内存。
开启嵌套虚拟化
Click on settings > Processors and Memory > Advanced Options > Enable Hypervisor Applications
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
1.第一步设置网络配置,我们需要设置为eth0设置一个桥网络,操作之前,确保bridge-utils软件包已经安装,使用sudo apt-get install bridge-utils,按以下内容配置你的/etc/network/interfaces文件。
auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
然后运行ifup -a命令,它将读取这个配置文件并且设置这个网桥接口。
2.下一步安装 necessary软件包。首先,你需要git,执行这个命令sudo apt-get install
git sudo apt-get install -y qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils echo 'allow br0' > /etc/qemu/bridge.conf
- 1
- 2
- 3
- 1
- 2
- 3
然后,安装 executor(你需要golang,mercurial和Godeps)
go get -d github.com/wlan0/rancher-mesos-executor Cd $GOPATH/src/github.com/wlan0/rancher-mesos-executor && ./scripts/build sudo cp build/rancher-mesos-executor /bin/ $GOPATH/src/github.com/wlan0/rancher-mesos-executor && ./scripts/build sudo cp build/rancher-mesos-executor /bin/
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
最后安装docker
wget -qO- https://get.docker.com | sh
- 1
- 1
3.启动rancher-server服务
这将开始rancher-server在80端口
- 1
- 1
4.安装mesos-master和mesos-slave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E56151BF echo "deb http://repos.mesosphere.io/ubuntu/ trusty main" > /etc/apt/sources.list.d/mesosphere.list sudo apt-get -y update sudo apt-get -y install mesos service zookeeper stop sudo apt-get -y remove --purge zookeeper echo manual > /etc/init/mesos-master.override
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
5.启动mesos-master和mesos-slave
sudo nohup mesos-master --work_dir=$(pwd) --ip=$IP & sudo nohup mesos-slave --master=$IP:5050 --ip=$IP &
- 1
- 2
- 1
- 2
6.启动 rancher-mesos scheduler
CATTLE_URL=http://$IP:8080/v1 CATTLE_ACCESS_KEY=service CATTLE_SECRET_KEY=servicepass MESOS_MASTER=$IP:5050 IP_CIDR=$IP/24 rancher-mesos-scheduler
- 1
- 1
7.从一个浏览器,去IP:8080 看到rancher的UI。现在,我必须做一些其他的让UI调用 mesos,rancher使用docker的机器从云中添加资源,我还没有时间创建一个自定义的 Mesos的机器驱动。添加一个主机,点击添加主机在任何环境和选择“Rackspace”图标,使用任何无效的凭证,点击创建。您应该看到一个主机的基础设施选项卡添加到rancher。等待几分钟主机连接成功。你就可以使用这个主机启动容器。注意:我在外部处理的身份验证的部分处理程序(rancher-mesos-scheduler)忽略云类型和总是提供便主机,这将从任何不同的云的驱动和API。在未来我将添加一个合适的驱动Mesos创建主机功能。
8.每一次你提供主机,控制台创建VM将在你的屏幕上弹出。你可以可以禁用这个在生产环境中。
希望这能给你一个思路,如何部署rancher作为Mesos的一个框架。再次感谢来自AT&T 的Marcel Neuhausler与我们的团队的合作,和所有其他社区成员提议或建议这种集成。
http://blog.csdn.net/lixudan/article/details/48545911