日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在RHEL7.1上設(shè)置Mesos/Marathon集群

Mesos 與 Marathon

Mesos

Mesos 是一套分布式集群管理器,旨在通過以動態(tài)方式于不同任務(wù)之間共享資源的方式改進(jìn)資源使用率。Mesos 提供一種統(tǒng)一化資源視角,其涵蓋全部集群節(jié)點,并能夠以無縫化方式利用類似于單一計算機內(nèi)操作系統(tǒng)內(nèi)核的方式實現(xiàn)資源訪問。因此,Mesos 亦被稱為數(shù)據(jù)中心的內(nèi)核機制。通過使用 Mesos,大家可以構(gòu)建起數(shù)據(jù)中心應(yīng)用,而且 Mesos 的主要組件亦可作為一種可擴展的兩段式調(diào)度工具。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計、成都做網(wǎng)站、樺川網(wǎng)絡(luò)推廣、小程序定制開發(fā)、樺川網(wǎng)絡(luò)營銷、樺川企業(yè)策劃、樺川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供樺川建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

以下為 Mesos 集群管理器中的各關(guān)鍵性組件:

  • 主節(jié)點:負(fù)責(zé)協(xié)調(diào)全部集群操作的集群管理器。多個主節(jié)點可同時存在以實現(xiàn)高可用性。
  • 從節(jié)點(亦被稱為節(jié)點):任務(wù)運行所在的各集群成員。
  • 框架:運行在集群之上的實際任務(wù)。目前存在多種框架,允許大家將一系列應(yīng)用程序及服務(wù)組合部署在 Mesos 集群管理器之上。

以下章節(jié)將探討如何利用 Marathon 框架將應(yīng)用程序與服務(wù)部署在 Mesos 之上。

可用性

以下列出了 IBM PowerPC Little Endian(ppc64le)平臺上的各相關(guān)軟件包位置:

Linux 發(fā)行版:Red Hat Enterprise Linux (RHEL) 7.X

軟件包位置:Unicamp,具體請參閱 Unicamp 庫:http://ftp.unicamp.br/pub/ppc64el/rhel/7_1/misc_ppc64el/ 。

注意:對于在 IBM PowerPC 之上運行其它發(fā)行版,大家必須從源處構(gòu)建軟件包。

Marathon

Marathon 是一套用于在 Mesos 之上運行長期運行應(yīng)用程序或者服務(wù)的框架。這些應(yīng)用程序具備高可用性要求,這意味著 Marathon 能夠監(jiān)控并在遭遇故障時以自動化方式重啟應(yīng)用實例,且可以通過彈性方式實現(xiàn)應(yīng)用規(guī)模擴展。Marathon 亦能夠運行其它框架,具體包括 Hadoop 以及 Marathon 自身。典型的 Marathon 使用工作流為在集群之內(nèi)運行 N 個同一應(yīng)用程序?qū)嵗?,且每個應(yīng)用實例都需要配備 1 個處理器與 1 GB 內(nèi)存容量。大家可以向 Marathon 提交請求以創(chuàng)建 N 個運行在各從節(jié)點之上的 Mesos 任務(wù)。

Marathon 提供一套具象狀態(tài)傳輸(簡稱 REST)API 用于對服務(wù)進(jìn)行啟動、終止以及擴展。其同時提供基于瀏覽器的 GUI 與命令行客戶端。其能夠以高可用性方式運行在多個 Marathon 實例當(dāng)中。在本篇文章中,大家將了解如何通過 Marathon 實現(xiàn)服務(wù)部署,以及如何將該服務(wù)使用于特定示例應(yīng)用當(dāng)中。這里提到的各項指令適用于英特爾與 IBM Power 架構(gòu)(即OpenPOWER)服務(wù)器。這里選擇的服務(wù)為 MySQL 數(shù)據(jù)庫服務(wù)。

從宏觀層面來看,一套 Mesos/Marathon 集群的結(jié)構(gòu)可抽象為以下示意圖形式:

圖一: Mesos/Marathon 集群

服務(wù)的概念

一項服務(wù)是指一組能夠自我容納且獨立部署與管理的功能單元。面向服務(wù)架構(gòu)(簡稱 SOA)以及最近頗為流行的微服務(wù)架構(gòu)鼓勵大家利用多項松散耦合的服務(wù)構(gòu)建應(yīng)用程序。更為現(xiàn)代的應(yīng)用程序則由多項微服務(wù)構(gòu)成,這種方式能夠帶來諸多優(yōu)勢,具體包括代碼復(fù)用性、簡化 scdefauult 端口范圍 31000 到 32000,使用 followaling、故障獨立、支持多種平臺、部署靈活以及出色的敏捷性等等。

Mesos 能夠處理批量、實時及其它處理框架,其執(zhí)行時間一般更短。企業(yè)基礎(chǔ)設(shè)施運行有大量應(yīng)用程序及服務(wù),因此需要更長時間完成且對于正常運行提出了不同于數(shù)據(jù)處理框架的諸多要求。這些長期運行的服務(wù)對于業(yè)務(wù)而言可能非常關(guān)鍵,因此需要占用相當(dāng)一部分基礎(chǔ)設(shè)施資源。因此,將服務(wù)運行在 Mesos 之上就變得非常必要。

為了以規(guī)?;绞竭\行服務(wù),基礎(chǔ)設(shè)施需要能夠支持以下要求:

  • 如果服務(wù)依賴于其它服務(wù)且對于服務(wù)的部署位置擁有嚴(yán)格要求,那么相關(guān)部署工作將變得較為復(fù)雜。

  • 配置管理與軟件包旨在確保某項服務(wù)的全部依賴性皆得到滿足,且環(huán)境應(yīng)在服務(wù)啟動前配置妥當(dāng)。

  • 服務(wù)交付與負(fù)載均衡在同一服務(wù)的多個實例并行運行時非常重要。服務(wù)發(fā)現(xiàn)負(fù)責(zé)應(yīng)答特定服務(wù)所運行實例的具體位置,而負(fù)載均衡則負(fù)責(zé)決定特定請求應(yīng)被分配至哪個實例處。

  • 在服務(wù)部署完成之后,最重要的是對服務(wù)的運行狀態(tài)加以監(jiān)控。運行狀態(tài)監(jiān)控信息可用于指導(dǎo)后續(xù)操作,例如對服務(wù)規(guī)模進(jìn)行伸縮,或者在發(fā)生故障時對服務(wù)加以重啟。

  • 可用性要求指定服務(wù)需要滿足的可用性,從而應(yīng)對高負(fù)載與故障狀況。

在運行有 RHEL 的 OpenPOWER 服務(wù)器之上設(shè)置一套 Mesos 與 Marathon 集群

以下步驟將闡述如何在 OpenPOWER 系統(tǒng)之上,例如運行有 RHEL Little Endian(簡稱LE)的 Tyan 服務(wù)器,設(shè)置一套 Mesos/Marathon 集群。

安裝并設(shè)置 Mesos 主節(jié)點與 Marathon

執(zhí)行以下步驟以安裝并設(shè)置 Mesos 主節(jié)點與 Marathon。

添加 Unicamp 軟件包庫。確保以下庫被添加至將成為 Mesos 集群組成部分的全部系統(tǒng)當(dāng)中(即 mesos-master 與mesos-slave):

# cat > /etc/yum.repos.d/unicamp-misc.repo <

使用以下命令以安裝各必要軟件包:

# yum install mesos python-mesos zookeeper marathon

配置 Mesos 主節(jié)點。編輯 /etc/sysconfig/mesos-master文件并添加以下信息:

MESOS_ip=MESOS_MASTER_IP
MESOS_ZK=zk://localhost:2181/mesos
MESOS_QUORUM=1

如果 mesos-master 的 IP 地址為 192.168.122.31,那么完整配置文件應(yīng)如下所示:

# This file contains environment variables that are passed to mesos-master.
# To get a description of all options run mesos-master --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# Some options you're likely to want to set:
MESOS_log_dir=/var/log/mesos
MESOS_work_dir=/var/run/mesos
MESOS_port=5050
 
# For isolated sandbox testing
#MESOS_ip=127.0.0.1
MESOS_ip=192.168.122.31
MESOS_ZK=zk://localhost:2181/mesos
MESOS_QUORUM=1

使用以下命令重啟 ZooKeeper 以及 mesos-master 服務(wù):

# service zookeeper start
# service mesos-master start

打開網(wǎng)絡(luò)端口。在默認(rèn)情況下,mesos-master 利用端口 5050 進(jìn)行通信。確保其如下所示,從而滿足本地防火墻部署需求。如果大家使用防火墻,請運行以下命令以打開面向公共區(qū)域的 TCP 端口:

# firewall-cmd --zone=public --add-port=5050/tcp --permanent
# firewall-cmd –reload

運行該 Mesos 主節(jié)點以在系統(tǒng)上配置 Marathon。

# cat >/etc/sysconfig/marathon<

使用以下命令以啟動 marathon 服務(wù):

# service marathon start

安裝并設(shè)置 Mesos 從節(jié)點

確保全部 Mesos 從節(jié)點皆完成了 Docker 配置。欲了解更多在 RHEL LE 之上安裝并配置 Docker 的細(xì)節(jié)信息,請參閱 Power 系統(tǒng)上的 Linux 環(huán)境 Docker 安裝指南。

使用以下命令以安裝必要軟件包:

# yum install mesos python-mesos

配置 Mesos 從節(jié)點。在 /etc/sysconfig/mesos-slave 當(dāng)中編輯 HOSTNAME 變量,將其指向 Mesos 主節(jié)點 IP,而后設(shè)置 MESOS_EXECUTOR_REGISTRATION_TIMEOUTMESOS_IP 變量。

舉例來說,如果 mesos-master 的 IP 地址為 192.168.122.31,而 mesos-slave 為 192.168.122.48,那么配置文件內(nèi)容將如下所示:

# This file contains environment variables that are passed to mesos-slave.
# To get a description of all options run mesos-slave --help; any option
# supported as a command-line option is also supported as an environment
# variable.
# The mesos master URL to contact. Should be host:port for
# non-ZooKeeper based masters, otherwise a zk:// or file:// URL.
MESOS_master=192.168.122.31:5050
MESOS_EXECUTOR_REGISTRATION_TIMEOUT=10mins
MESOS_IP=192.168.122.48
# For isolated sandbox testing
#MESOS_master=127.0.0.1:5050
# For a complete listing of options execute 'mesos-slave --help'
MESOS_log_dir=/var/log/mesos
MESOS_work_dir=/var/run/mesos
MESOS_containerizers=docker,mesos
# systemd cgroup integration
MESOS_isolation='cgroups/cpu,cgroups/mem'
MESOS_cgroups_root='system.slice/mesos-slave.service'
MESOS_cgroups_hierarchy=/sys/fs/cgroup

使用以下命令以重啟該 mesos-slave 服務(wù):

# service mesos-slave restart

打開網(wǎng)絡(luò)端口。在默認(rèn)情況下,mesos-slave 利用端口 5051 進(jìn)行通信。確保其不要被本地防火墻所屏蔽。如果大家需要使用防火墻,請運行以下命令以開啟一個面向公共區(qū)域的 TCP 端口:

# firewall-cmd --zone=public --add-port=5051/tcp -permanent
# firewall-cmd -reload

Marathon UI 可通過 http://mesos_master_ip:8080 網(wǎng)站進(jìn)行訪問。舉例來說,如果 mesos-master 的 IP 地址為 192.168.122.31,那么 Marathon UI 鏈接則可通過 http://192.168.122.31:8080 網(wǎng)站進(jìn)行訪問。

通過 Marathon 進(jìn)行應(yīng)用程序部署

相關(guān)源代碼可通過 GitHub 網(wǎng)站獲取。

此源代碼當(dāng)中包含 Docker 文件以及相關(guān)設(shè)置腳本,用于在英特爾與 Power(ppc64le)系統(tǒng)之上構(gòu)建 MySQL Docker 鏡像。

在以下示例當(dāng)中,192.168.122.48 將作為運行在 Mesos 服務(wù)器與 Marathon 之上系統(tǒng)的 IP 地址。

大家可以利用 Marathon UI 或者 REST API 直接部署一款應(yīng)用。舉例來說,以下代碼即利用 Marathon 的 REST API 進(jìn)行應(yīng)用程序部署:

curl -X POST http://192.168.122.48:8080/v2/apps -d @mysqlcontainer.json -H "Content-type: application/json"
#cat mysqlcontainer.json
{
  "id": "mysql",
  "cpus": 0.5,
  "mem": 64.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "ppc64le/mysql",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 3306, "hostPort": 0, "servicePort": 0, "protocol": "tcp" }
      ]
    }
  },
  "env": {
     "MYSQL_ROOT_PASSWORD" : "password",
     "MYSQL_USER" : "test",
     "MYSQL_PASSWORD" : "test",
     "MYSQL_DB" : "BucketList"
   }
}

一個非零 hostPort 會被分配給某個隨機端口。當(dāng)然,大家也可以明確指定 hostPort 值。確保在 hostPort 中指定的各個端口包含相關(guān)資源。舉例來說,如果需要使用 7000 到 8000 范圍的端口,同時將 31000 到 32000 設(shè)定為默認(rèn)端口范圍,則請使用以下選項:

–resources="ports(*):[7000-8000, 31000-32000]"

利用 Marathon 框架接入已部署完成的服務(wù)

本章節(jié)將探討如何利用 MySQL 服務(wù)經(jīng)由 Marathon 接入已部署完成的服務(wù),并在示例 Web 應(yīng)用中加以使用。相關(guān)源代碼可通過 GitHub 網(wǎng)站獲取。這部分示例代碼包含同時面向英特爾與 PowerPC LE(即ppc64le)架構(gòu)的 Docke r文件。

利用 Docker 鏈接接入服務(wù)

在服務(wù)部署完成之后,大家需要將其發(fā)現(xiàn)而后進(jìn)行接入,即立足于應(yīng)用程序使用接入該服務(wù)的鏈接。當(dāng)前服務(wù)的運行可能依賴于其它服務(wù)。因此,接入容器就變得非常重要。當(dāng)使用 Marathon 接入服務(wù)時,請注意以下幾項要點:

Mesos/Marathon 并不具備使用 Docker 鏈接別名的方法。因此,如果大家的應(yīng)用程序配置使用到鏈接別名,則其將無法正常起效。舉例來說,如果 Web 應(yīng)用程序依賴于一套數(shù)據(jù)庫容器且使用包含數(shù)據(jù)庫鏈接前綴(例如 DB_PORT 或者 DB_TCP_ADDR 等)的環(huán)境變更,請確保該應(yīng)用配置不依賴于鏈接別名前綴。作為連接兩端的應(yīng)用及服務(wù)需要被部署在同一主機之上方可實現(xiàn)通信。

使用限制參數(shù)在同一節(jié)點之上部署各相連容器,具體如以下示例所示:

$ curl -X POST -H "Content-type: application/json" localhost:8080/v2/apps -d '{
   "id": "sleep-cluster",
   "cmd": "sleep 60",
   "instances": 3,
   "constraints": [["hostname", "CLUSTER", "a.specific.node.com"]]
}'

要使用以上代碼,首先使用 hostname 參數(shù)啟動 mesos-slave,具體如下所示:

# mesos-slave --master=zk://192.168.122.48:2181/mesos --containerizers=docker,mesos --executor_registration_timeout=10mins --ip=192.168.122.253 --hostname=Ubuntu

使用 Marathon API 啟動相連容器

這部分設(shè)置以 OpenPOWER(即 PowerPC 架構(gòu))為基礎(chǔ)環(huán)境。當(dāng)然,大家也可以在英特爾環(huán)境下使用同樣的指令。

將目標(biāo)容器名稱作為值指定給鏈接鍵。另外,使用限制參數(shù)以確保新容器被部署在目標(biāo)容器運行所在的同一主機之上。

curl -X POST http://192.168.122.48:8080/v2/apps -d @flaskcontainer.json -H "Content-type: application/json"
# cat flaskcontainer.json
{
  "id": "flaskappcontainer",
  "cpus": 0.5,
  "mem": 64.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "ppc64le/flaskapp",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "hostPort": 0, "servicePort": 0, "protocol": "tcp" }
      ],
      "parameters": [
                { "key": "link", "value": "mesos-b81f9a21-3133-49de-acf6-988226eb6874-S18.5d3dcaa7-05c6-4a5b-af68-dba32b7d1835"}
            ]
    }
  },
  "constraints": [
                [ "hostname","CLUSTER","ubuntu" ]
              ]
}

使用 mesos-DNS 實現(xiàn)服務(wù)發(fā)現(xiàn)與連接

這里的 mesos-DNS 負(fù)責(zé)創(chuàng)建指向 IP 地址的應(yīng)用,而端口編號則映射運行在 Mesos 集群之上的各應(yīng)用程序。

Mesos-DNS 可通過 GitHub 網(wǎng)站獲取。其要求配合 Go 編譯器使用,并可直接構(gòu)建于任何平臺之上。

大家可以通過 GitHub 網(wǎng)站找到包含源代碼的示例配置文件。

以下為用于本次設(shè)置的示例配置文件內(nèi)容:

{
  "zk": "zk://192.168.122.48:2181/mesos",
  "masters": ["192.168.122.48:5050"],
  "refreshSeconds": 60,
  "ttl": 60,
  "domain": "mesos",
  "port": 53,
  "resolvers": ["8.8.8.8"],
  "timeout": 5,
  "listener": "0.0.0.0",
  "SOAMname": "ns1.mesos",
  "SOARname": "root.ns1.mesos",
  "SOARefresh": 60,
  "SOARetry":   600,
  "SOAExpire":  86400,
  "SOAMinttl": 60,
  "dnson": true,
  "httpon": true,
  "httpport": 8125,
  "externalon": true,
  "IPSources": ["netinfo", "mesos", "host"],
  "EnforceRFC952": false
}

欲了解與 mesos-DNS 配置參數(shù)相關(guān)的更多細(xì)節(jié)信息,請參閱 Mesos-DNS Configuration Parameters 網(wǎng)站。

大家可以選擇在任意主機之上運行 mesos-dns 目錄,或者通過 Marathon 框架加以運行。舉例來說:

curl -X POST http://192.168.122.48:8080/v2/apps -d @mesos-dns.json -H "Content-type: application/json"

此為通過 Marathon 啟動 mesos-dns。

curl -X POST http://192.168.122.48:8080/v2/apps -d @mesos-dns.json -H "Content-type: application/json"
此為通過Marathon啟動mesos-dns。
# cat mesos-dns.json
{
    "cmd": "/mesos-dns -config=/config.json",
    "cpus": 1.0,
    "mem": 1024,
    "id": "mesos-dns",
    "instances": 1,
}

直接在該主機上使用以下命令以運行 mesos-dns:

# mesos-dns -v=1 -config=

利用以下格式命名該項服務(wù):

..

如此一來,該 MySQL 服務(wù)的 DNS 名稱將為 mysql.marathon.mesos。

Mesos-DNS 還能夠為各項服務(wù)創(chuàng)建 DNS SRV 記錄。一條 SRV 記錄負(fù)責(zé)將一條服務(wù)名稱與一個主機名稱及一個 IP 端口相關(guān)聯(lián)。 Mesos-DNS 為服務(wù)生成一條名為 _task._protocol.framework.domain 的 DNS-SRV 記錄。

在這里:

  • Task(即任務(wù))代表所啟動的應(yīng)用/服務(wù)(在本示例中為 MySQL)。
  • Protocol(即協(xié)議)為 UDP 或者 TCP。
  • framework(框架)為 Marathon 或者任意其它框架。
  • Domain(域)即為集群域(在本示例中為 Mesos)。

此條 SRV 記錄可由其它 Marathon 應(yīng)用用于發(fā)現(xiàn)服務(wù)。舉例來說,任何需要配合 MySQL 服務(wù)的應(yīng)用都能夠從 SRV 記錄當(dāng)中找到 _mysql_tcp.marathon.mesos。

# docker ps
CONTAINER ID IMAGE          COMMAND    CREATED       STATUS                PORTS                        NAMES
e227390bfb3d ppc64le/mysql "/setup.sh" 3 seconds ago Up Less than a second 0.0.0.0:31172->3306/tcp   mesos-fabb6e52-064a-425a-a501-330bc772cd55-S16.85fb3e7c-b2ca-412f-ac75-1ec314bee575
# dig _mysql._tcp.marathon.mesos -t SRV
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> _mysql._tcp.marathon.mesos -t SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2126
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;_mysql._tcp.marathon.mesos. IN SRV
;; ANSWER SECTION:
_mysql._tcp.marathon.mesos. 60 IN SRV 0 0 31172 mysql-4huw5-s16.marathon.slave.mesos.
;; ADDITIONAL SECTION:
mysql-4huw5-s16.marathon.slave.mesos. 60 IN A 192.168.122.48
;; Query time: 1 msec
;; SERVER: 192.168.122.48#53(192.168.122.48)
;; WHEN: Mon Feb 08 14:27:38 IST 2016
;; MSG SIZE rcvd: 147

以下為利用 dnspython 模塊查詢 SRV 記錄,從而檢索對應(yīng)主要及端口以訪問該項服務(wù)的示例 Python 代碼:

import dns.resolver
 
a = dns.resolver.query("_mysql._tcp.marathon.mesos",dns.rdatatype.SRV)
for i in a.response.answer:
    for j in i.items:
        print j.target
        print j.port

以下為示例設(shè)置的輸出結(jié)果:

mysql-4huw5-s16.marathon.slave.mesos.
31172

因此,可以推斷出 MySQL 服務(wù)器運行在主機名稱為 mysql-4huw5-s16.marathon.slave.mesos 的從節(jié)點之上,且使用端口 31172。

類似的邏輯亦可直接結(jié)合應(yīng)用程序配置使用,或者將該數(shù)據(jù)用于設(shè)置應(yīng)用程序配置所必需的相關(guān)環(huán)境變量。舉例來說,大家可以分別將由目標(biāo)及端口返回的值設(shè)置為 MYSQL_TCP_ADDRMYSQL_TCP_PORT。


當(dāng)前文章:在RHEL7.1上設(shè)置Mesos/Marathon集群
網(wǎng)址分享:http://m.5511xx.com/article/codgdhp.html