2016年4月,Mesosphere開源了他們開發(fā)的DC/OS (數(shù)據(jù)中心操作系統(tǒng)),引起了廣泛的關(guān)注,雖然開源版本和他們的企業(yè)版本應(yīng)該還有一些差距,但是我們?nèi)匀豢梢詮闹袑W(xué)習(xí)其DC/OS的理念。本文介紹了DC/OS的一些基本概念,以及如何在一個小型集群中搭建一套DC/OS系統(tǒng)。
DC/OS (Data Center Operating System) 核心思想是讓用戶可以像使用操作系統(tǒng)一般使用數(shù)據(jù)中心或者大規(guī)模集群。通過對于數(shù)據(jù)中心的的物理資源進行抽象,使用統(tǒng)一的平臺管理起來,用戶可以使用簡單的命令行或者圖形界面方便的運行應(yīng)用。和現(xiàn)有的PaaS平臺主要專注于Web應(yīng)用的部署不同,DC/OS可以部署各種不同應(yīng)用,從傳統(tǒng)Web 服務(wù)器,數(shù)據(jù)庫,到NoSQL服務(wù)器,分布式文件系統(tǒng),以及大數(shù)據(jù)應(yīng)用等。DC/OS提供了一套應(yīng)用包管理服務(wù),使用戶可以像部署linux中的rpm/debian包一樣在數(shù)據(jù)中心中部署應(yīng)用。
類似操作系統(tǒng),DC/OS 也可以分為內(nèi)核空間和用戶空間。Apache Mesos是DC/OS的內(nèi)核,主要用來管理數(shù)據(jù)中心中的各種物理資源,把底層的物理資源調(diào)度給各個應(yīng)用,并且在容器中運行應(yīng)用的具體任務(wù)。用戶空間由服務(wù)(Services) 和系統(tǒng)組件(Service Components)組成。服務(wù)可以認為是一個Marathon或者Hadoop的進程(process),而其中又會運行具體的應(yīng)用或者任務(wù),比如通過Marathon啟動的web 服務(wù)器。系統(tǒng)組件的功能包括提供用戶認證和授權(quán),服務(wù)發(fā)現(xiàn),負載均衡等。
DC/OS的安裝有多種方式,可以直接在AWS或者Azure中選定安裝模版來安裝;也可以在自己的本地環(huán)境通過Vagrant安裝,或者下載DC/OS的installer,在本地集群中安裝。本文主要介紹的是第三種安裝方式。
對于機器CPU和內(nèi)存沒有硬性要求,官方推薦的集群規(guī)模是主節(jié)點4 core + 32 GB,所有計算節(jié)點2 core + 16 GB。如果只是將DC/OS運行起來,當然不需要這么多資源,但是如果還是想要在DC/OS上運行一些應(yīng)用的話,好保證每臺機子上都有足夠多的CPU和內(nèi)存。另外還需要一臺主機做為bootstrap node來運行安裝程序安裝整個集群,這類似于使用chef部署應(yīng)用中的chef server。本文使用的機器配置如下。
DC/OS 支持的操作系統(tǒng)有CoreOS,CentOS7,以及RHEL7。本文中使用的的是CentOS7。在安裝DC/OS前要確保停止firewalld服務(wù)并且安裝一些需要的依賴包。
$ sudo yum install –y unzip ipset
在master和agent節(jié)點上設(shè)置selinux并且創(chuàng)建nogroup
$ sudo sed –i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config
$ sudo groupadd nogroup
在所有節(jié)點上都需要安裝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使用的存儲驅(qū)動有特殊要求,如果在內(nèi)核中已經(jīng)加載了overlayfs,可以使用overlayfs做為docker的存儲驅(qū)動,打開
/etc/system/system/docker.service.d/override.conf 并修改,然后重啟docker。
ExecStart=/usr/bin/docker daemon —storage-driver=overlay -H fd://
也可以使用devicemapper做為存儲驅(qū)動,那就需要通過lvm創(chuàng)建thinpool來完成。具體命令如下:
// 創(chuàng)建volume $ dd if=/dev/zero of=/root/docker-volumes bs=1 count=0 seek=2G
$ losetup /dev/loop2 /root/docker-volumes // 創(chuàng)建PV和VG $ pvcreate /dev/loop2
$ vgcreate docker /dev/loop2 // 創(chuàng)建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。
首先在安裝節(jié)點上下載并運行DC/OS包(大概500M)
$ curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh $ sudo bash dcos_generate_config.sh
這個腳本會下載并運行一個docker容器,之后在安裝節(jié)點上會創(chuàng)建一個/opt/mesosphere/ 文件夾。
也可以使用GUI來進行安裝:
$ sudo bash dcos_generate_config.sh --web
然后訪問http://<安裝節(jié)點IP>:9000。由于使用GUI方式安裝無法看安裝過程中的日志和錯誤信息,不方便排查安裝中的具體問題,所以本文中使用的客戶端安裝方式。
安裝過程中需要創(chuàng)建一些配置文件,首先在/opt/mesosphere下創(chuàng)建一個genconf文件夾。在genconf文件夾下創(chuàng)建三個配置文件。
1.genconf/ip-detect:這個文件是為了在每個節(jié)點獲取自己的IP地址,之后DC/OS會將腳本的輸出廣播給所有集群中的其他節(jié)點。本文使用了官方網(wǎng)站上的腳本獲取本機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.創(chuàng)建集群配置文件genconf/config.yaml: 在這個文件中需要指定master和slave的IP地址,dns服務(wù)器地址,以及安裝節(jié)點登陸其他節(jié)點的ssh用戶名。
--- agent_list:
- 1 > - 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:
- 1 > resolvers:
- 8.8.4.4 - 8.8.8.8 ssh_port: 22
ssh_user:
3.配置安裝節(jié)點對集群所有節(jié)點的無密碼訪問,并把ssh key拷貝到genconf/ssh_key。
接下來就可以運行腳本來進行安裝了:
// 創(chuàng)建所有配置文件 $ bash dcos_generate_config.sh –genconf // 安裝依賴包 $ bash dcos_generate_config.sh -install-prereqs // 檢查安裝前是否所有依賴都已經(jīng)安裝并配置正確 $ bash dcos_generate_config.sh -preflight // 安裝集群 $ bash dcos_generate_config.sh -deploy // 檢查是否所有服務(wù)都已經(jīng)啟動 $ bash dcos_generate_config.sh --postflight
如果在運行腳本的過程中沒有出現(xiàn)錯誤的話,一個小的DC/OS集群已經(jīng)安裝成功了!現(xiàn)在就可以通過 http:// 來打開用戶界面了。需要注意的是DC/OS采用了OAUTH方式認證用戶并默認個登陸的用戶是管理員。使用你的github用戶來登陸自己的DC/OS集群吧。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個個人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。