DC/OS 的安装与部署

2016年4月,Mesosphere开源了他们开发的DC/OS (数据中心操作系统),引起了广泛的关注,虽然开源版本和他们的企业版本应该还有一些差距,但是我们仍然可以从中学习其DC/OS的理念。本文介绍了DC/OS的一些基本概念,以及如何在一个小型集群中搭建一套DC/OS系统。

DC/OS 简介

DC/OS (Data Center Operating System) 核心思想是让用户可以像使用操作系统一般使用数据中心或者大规模集群。通过对于数据中心的的物理资源进行抽象,使用统一的平台管理起来,用户可以使用简单的命令行或者图形界面方便的运行应用。和现有的PaaS平台主要专注于Web应用的部署不同,DC/OS可以部署各种不同应用,从传统Web 服务器,数据库,到NoSQL服务器,分布式文件系统,以及大数据应用等。DC/OS提供了一套应用包管理服务,使用户可以像部署linux中的rpm/debian包一样在数据中心中部署应用。

类似操作系统,DC/OS 也可以分为内核空间和用户空间。Apache Mesos是DC/OS的内核,主要用来管理数据中心中的各种物理资源,把底层的物理资源调度给各个应用,并且在容器中运行应用的具体任务。用户空间由服务(Services) 和系统组件(Service Components)组成。服务可以认为是一个Marathon或者Hadoop的进程(process),而其中又会运行具体的应用或者任务,比如通过Marathon启动的web 服务器。系统组件的功能包括提供用户认证和授权,服务发现,负载均衡等。

DC/OS的安装有多种方式,可以直接在AWS或者Azure中选定安装模版来安装;也可以在自己的本地环境通过Vagrant安装,或者下载DC/OS的installer,在本地集群中安装。本文主要介绍的是第三种安装方式。

系统和依赖软件要求

对于机器CPU和内存没有硬性要求,官方推荐的集群规模是主节点4 core + 32 GB,所有计算节点2 core + 16 GB。如果只是将DC/OS运行起来,当然不需要这么多资源,但是如果还是想要在DC/OS上运行一些应用的话,最好保证每台机子上都有足够多的CPU和内存。另外还需要一台主机做为bootstrap node来运行安装程序安装整个集群,这类似于使用chef部署应用中的chef server。本文使用的机器配置如下。

DC/OS 支持的操作系统有CoreOS,CentOS7,以及RHEL7。本文中使用的的是CentOS7。在安装DC/OS前要确保停止firewalld服务并且安装一些需要的依赖包。

$ sudo yum install –y unzip ipset

在master和agent节点上设置selinux并且创建nogroup

$ sudo sed –i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config
$ sudo groupadd nogroup

在所有节点上都需要安装docker,版本要求大于1.7。docker安装可以通过以下步骤:

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF


$ sudo yum install docker-engine

DC/OS 对于docker使用的存储驱动有特殊要求,如果在内核中已经加载了overlayfs,可以使用overlayfs做为docker的存储驱动,打开

/etc/system/system/docker.service.d/override.conf 并修改,然后重启docker。

ExecStart=/usr/bin/docker daemon —storage-driver=overlay -H fd://

也可以使用devicemapper做为存储驱动,那就需要通过lvm创建thinpool来完成。具体命令如下:

// 创建volume
$ dd if=/dev/zero of=/root/docker-volumes bs=1 count=0 seek=2G
$ losetup /dev/loop2 /root/docker-volumes


// 创建PV和VG
$ pvcreate /dev/loop2
$ vgcreate docker /dev/loop2


// 创建thin pool
$ lvcreate -n pool0 -L 1.5G docker
$ lvcreate -n pool0meta -L 0.1G docker
$ lvconvert --type thin-pool --poolmetadata docker/pool0meta docker/pool0


// 配置override.conf
ExecStart=/usr/bin/docker daemon -H fd://--storage-opt dm.thinpooldev=/dev/mapper/docker-pool0

最后重启docker。

安装DC/OS软件包

首先在安装节点上下载并运行DC/OS包(大概500M)

$ curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh
$ sudo bash dcos_generate_config.sh 

这个脚本会下载并运行一个docker容器,之后在安装节点上会创建一个/opt/mesosphere/ 文件夹。

也可以使用GUI来进行安装:

$ sudo bash dcos_generate_config.sh --web

然后访问http://<安装节点IP>:9000。由于使用GUI方式安装无法看安装过程中的日志和错误信息,不方便排查安装中的具体问题,所以本文中使用的客户端安装方式。

安装过程中需要创建一些配置文件,首先在/opt/mesosphere下创建一个genconf文件夹。在genconf文件夹下创建三个配置文件。

1.genconf/ip-detect:这个文件是为了在每个节点获取自己的IP地址,之后DC/OS会将脚本的输出广播给所有集群中的其他节点。本文使用了官方网站上的脚本获取本机eth0上的IP地址。

#!/usr/bin/env bash


set -o nounset -o errexit
export PATH=/usr/sbin:/usr/bin:$PATH
echo $(ip addr show eth0 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)

2.创建集群配置文件genconf/config.yaml: 在这个文件中需要指定master和slave的IP地址,dns服务器地址,以及安装节点登陆其他节点的ssh用户名。

--- 
agent_list:
- <agent-private-ip-1> 
- <agent-private-ip-2> 


# Use this bootstrap_url value unless you have moved the DC/OS installer assets.
bootstrap_url: file:///opt/dcos_install_tmp 
cluster_name: test
master_discovery: static
master_list:
- <master-private-ip-1>


resolvers:
- 8.8.4.4
- 8.8.8.8 


ssh_port: 22
ssh_user: <username>

3.配置安装节点对集群所有节点的无密码访问,并把ssh key拷贝到genconf/ssh_key。

接下来就可以运行脚本来进行安装了:

// 创建所有配置文件
$ bash dcos_generate_config.sh –genconf


// 安装依赖包
$ bash dcos_generate_config.sh -install-prereqs


// 检查安装前是否所有依赖都已经安装并配置正确
$ bash dcos_generate_config.sh -preflight


// 安装集群
$ bash dcos_generate_config.sh -deploy


// 检查是否所有服务都已经启动
$ bash dcos_generate_config.sh --postflight

如果在运行脚本的过程中没有出现错误的话,一个小的DC/OS集群已经安装成功了!现在就可以通过 http:// 来打开用户界面了。需要注意的是DC/OS采用了OAUTH方式认证用户并默认第一个登陆的用户是管理员。使用你的github用户来登陆自己的DC/OS集群吧。

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2016-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏耕耘实录

CentOS7.X的系统管理、安全设置及系统优化思路

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

28020
来自专栏FreeBuf

Redis未授权访问配合SSH key文件利用分析

1.更新情况 ? 2.漏洞概述 Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导...

30460
来自专栏编程坑太多

『中级篇』Docker Cloud自动构建 Docker image(55)

PS:自动化构建的build image,是不是感觉很爽,但是这里的Dockfile这是需要基础牢靠。本节也是以后学习的基础。

18250
来自专栏快乐八哥

搭建AngualarJS开发环境

1.选择Web浏览器 Chrome和Firefox浏览器 2.选择代码编辑器 Subline Text和Visual Studio Code 3.安装Web...

21160
来自专栏JAVA高级架构

高并发解决方案--负载均衡

29120
来自专栏快乐八哥

Ajax几种常用模式

设计模式不是要遵循的标准,只不过是对增进行之有效的解决方案的总结。每个模式都凝聚了开发人员社区的集体智慧,而每个开发人员都可以决定是否在其应用中实现某个模式。 ...

212100
来自专栏北京马哥教育

能当主力,能入虚拟机,还能随时打包带走,Linux 就是这么强大

这里介绍一下自己管理自己的Linux桌面的一点经验吧,我觉得还是有不少可取之处的。先来说一下大多数人管理Linux桌面的方法有哪些不方便的地方吧:

29400
来自专栏主机笔记

windows2003为iis添加伪静态规则

最近开始使用一个新的cms,网站由于是基于thinkphp开发的,而服务器还是古老的windows2003,所以一些伪静态的问题导致网站始终安装不成功。 可能以...

30880
来自专栏决胜机器学习

高性能网站架构方案(二)——优化网站响应时间

高性能网站架构方案(二)——优化网站响应时间 (原创内容,转载请注明来源,谢谢) 一、概述 优化网站响应时间是保证网站受用户关注的要点,主要方案有: 1、减...

32160
来自专栏北京马哥教育

10个方法助你轻松完成Linux系统恢复

在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

56050

扫码关注云+社区

领取腾讯云代金券