您的位置:首页 > 其它

在Mesos上创建Rancher容器服务

2015-09-18 14:12 197 查看
大家好,我是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.第一步设置网络配置,我们需要设置为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


然后运行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


然后,安装 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/


最后安装docker

wget -qO- https://get.docker.com | sh


3.启动rancher-server服务

这将开始rancher-server在80端口


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


5.启动mesos-master和mesos-slave

sudo nohup mesos-master --work_dir=$(pwd) --ip=$IP &
sudo nohup mesos-slave --master=$IP:5050 --ip=$IP &


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


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与我们的团队的合作,和所有其他社区成员提议或建议这种集成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: