2016年4月,Mesosphere開源了他們開發(fā)的DC/OS (數(shù)據(jù)中心操作系統(tǒng)),引起了廣泛的關(guān)注,雖然開源版本和他們的企業(yè)版本應(yīng)該還有一些差距,但是我們?nèi)匀豢梢詮闹袑W(xué)習(xí)其DC/OS的理念。本文介紹了DC/OS的一些基本概念,以及如何在一個(gè)小型集群中搭建一套DC/OS系統(tǒng)。
DC/OS 簡(jiǎn)介
DC/OS (Data Center Operating System) 核心思想是讓用戶可以像使用操作系統(tǒng)一般使用數(shù)據(jù)中心或者大規(guī)模集群。通過對(duì)于數(shù)據(jù)中心的的物理資源進(jìn)行抽象,使用統(tǒng)一的平臺(tái)管理起來,用戶可以使用簡(jiǎn)單的命令行或者圖形界面方便的運(yùn)行應(yīng)用。和現(xiàn)有的PaaS平臺(tái)主要專注于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)度給各個(gè)應(yīng)用,并且在容器中運(yùn)行應(yīng)用的具體任務(wù)。用戶空間由服務(wù)(Services) 和系統(tǒng)組件(Service Components)組成。服務(wù)可以認(rèn)為是一個(gè)Marathon或者Hadoop的進(jìn)程(process),而其中又會(huì)運(yùn)行具體的應(yīng)用或者任務(wù),比如通過Marathon啟動(dòng)的web 服務(wù)器。系統(tǒng)組件的功能包括提供用戶認(rèn)證和授權(quán),服務(wù)發(fā)現(xiàn),負(fù)載均衡等。
DC/OS的安裝有多種方式,可以直接在AWS或者Azure中選定安裝模版來安裝;也可以在自己的本地環(huán)境通過Vagrant安裝,或者下載DC/OS的installer,在本地集群中安裝。本文主要介紹的是第三種安裝方式。
系統(tǒng)和依賴軟件要求
對(duì)于機(jī)器CPU和內(nèi)存沒有硬性要求,官方推薦的集群規(guī)模是主節(jié)點(diǎn)4 core + 32 GB,所有計(jì)算節(jié)點(diǎn)2 core + 16 GB。如果只是將DC/OS運(yùn)行起來,當(dāng)然不需要這么多資源,但是如果還是想要在DC/OS上運(yùn)行一些應(yīng)用的話,最好保證每臺(tái)機(jī)子上都有足夠多的CPU和內(nèi)存。另外還需要一臺(tái)主機(jī)做為bootstrap node來運(yùn)行安裝程序安裝整個(gè)集群,這類似于使用chef部署應(yīng)用中的chef server。本文使用的機(jī)器配置如下。
DC/OS 支持的操作系統(tǒng)有CoreOS,CentOS7,以及RHEL7。本文中使用的的是CentOS7。在安裝DC/OS前要確保停止firewalld服務(wù)并且安裝一些需要的依賴包。
$ sudo yum install –y unzip ipset
在master和agent節(jié)點(diǎn)上設(shè)置selinux并且創(chuàng)建nogroup
$ sudo sed –i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config $ sudo groupadd nogroup
在所有節(jié)點(diǎn)上都需要安裝docker,版本要求大于1.7。docker安裝可以通過以下步驟:
$ sudo tee /etc <<-'EOF' [dockerrepo] name=Docker Repository baseurl=$releasever/ enabled=1 gpgcheck=1 gpgkey= EOF $ sudo yum install docker-engine
DC/OS 對(duì)于docker使用的存儲(chǔ)驅(qū)動(dòng)有特殊要求,如果在內(nèi)核中已經(jīng)加載了overlayfs,可以使用overlayfs做為docker的存儲(chǔ)驅(qū)動(dòng),打開 /etc/system/system 并修改,然后重啟docker。
ExecStart=/usr/bin/docker daemon —storage-driver=overlay -H fd://
也可以使用devicemapper做為存儲(chǔ)驅(qū)動(dòng),那就需要通過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。
安裝DC/OS軟件包
首先在安裝節(jié)點(diǎn)上下載并運(yùn)行DC/OS包(大概500M)
$ curl -O $ sudo bash dco
這個(gè)腳本會(huì)下載并運(yùn)行一個(gè)docker容器,之后在安裝節(jié)點(diǎn)上會(huì)創(chuàng)建一個(gè)/opt/mesosphere/ 文件夾。
也可以使用GUI來進(jìn)行安裝:
$ sudo bash dco --web
然后訪問http://<安裝節(jié)點(diǎn)IP>:9000。由于使用GUI方式安裝無法看安裝過程中的日志和錯(cuò)誤信息,不方便排查安裝中的具體問題,所以本文中使用的客戶端安裝方式。
安裝過程中需要?jiǎng)?chuàng)建一些配置文件,首先在/opt/mesosphere下創(chuàng)建一個(gè)genconf文件夾。在genconf文件夾下創(chuàng)建三個(gè)配置文件。
1.genconf/ip-detect:這個(gè)文件是為了在每個(gè)節(jié)點(diǎn)獲取自己的IP地址,之后DC/OS會(huì)將腳本的輸出廣播給所有集群中的其他節(jié)點(diǎn)。本文使用了官方網(wǎng)站上的腳本獲取本機(jī)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)建集群配置文件gencon: 在這個(gè)文件中需要指定master和slave的IP地址,dns服務(wù)器地址,以及安裝節(jié)點(diǎn)登陸其他節(jié)點(diǎn)的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.配置安裝節(jié)點(diǎn)對(duì)集群所有節(jié)點(diǎn)的無密碼訪問,并把ssh key拷貝到genconf/ssh_key。
接下來就可以運(yùn)行腳本來進(jìn)行安裝了:
// 創(chuàng)建所有配置文件 $ bash dco –genconf // 安裝依賴包 $ bash dco -install-prereqs // 檢查安裝前是否所有依賴都已經(jīng)安裝并配置正確 $ bash dco -preflight // 安裝集群 $ bash dco -deploy // 檢查是否所有服務(wù)都已經(jīng)啟動(dòng) $ bash dco --postflight
如果在運(yùn)行腳本的過程中沒有出現(xiàn)錯(cuò)誤的話,一個(gè)小的DC/OS集群已經(jīng)安裝成功了!現(xiàn)在就可以通過 http:// 來打開用戶界面了。需要注意的是DC/OS采用了OAUTH方式認(rèn)證用戶并默認(rèn)第一個(gè)登陸的用戶是管理員。使用你的github用戶來登陸自己的DC/OS集群吧。
作者簡(jiǎn)介:邱見,新加坡國(guó)立大學(xué)電子與信息工程專業(yè)博士,供職于IBM多年,主要從事云計(jì)算領(lǐng)域相關(guān)的工作,一直關(guān)注OpenStack, Mesos等開源社區(qū)。
1.《DC/OS 的安裝與部署》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《DC/OS 的安裝與部署》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/shehui/3267301.html