日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

Mesos 與 Marathon

Mesos

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

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

以下為 Mesos 集群管理器中的各關鍵性組件:

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

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

可用性

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

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ā)行版,大家必須從源處構建軟件包。

Marathon

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

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

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

圖一: Mesos/Marathon 集群

服務的概念

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

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

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

  • 如果服務依賴于其它服務且對于服務的部署位置擁有嚴格要求,那么相關部署工作將變得較為復雜。

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

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

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

  • 可用性要求指定服務需要滿足的可用性,從而應對高負載與故障狀況。

在運行有 RHEL 的 OpenPOWER 服務器之上設置一套 Mesos 與 Marathon 集群

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

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

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

添加 Unicamp 軟件包庫。確保以下庫被添加至將成為 Mesos 集群組成部分的全部系統(tǒ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,那么完整配置文件應如下所示:

# 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 服務:

# service zookeeper start
# service mesos-master start

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

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

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

# cat >/etc/sysconfig/marathon<

使用以下命令以啟動 marathon 服務:

# service marathon start

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

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

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

# yum install mesos python-mesos

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

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

# 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 服務:

# service mesos-slave restart

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

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

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

通過 Marathon 進行應用程序部署

相關源代碼可通過 GitHub 網站獲取。

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

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

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

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 會被分配給某個隨機端口。當然,大家也可以明確指定 hostPort 值。確保在 hostPort 中指定的各個端口包含相關資源。舉例來說,如果需要使用 7000 到 8000 范圍的端口,同時將 31000 到 32000 設定為默認端口范圍,則請使用以下選項:

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

利用 Marathon 框架接入已部署完成的服務

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

利用 Docker 鏈接接入服務

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

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

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

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

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)服務發(fā)現(xiàn)與連接

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

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

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

以下為用于本次設置的示例配置文件內容:

{
  "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ù)相關的更多細節(jié)信息,請參閱 Mesos-DNS Configuration Parameters 網站。

大家可以選擇在任意主機之上運行 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=

利用以下格式命名該項服務:

..

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

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

在這里:

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

此條 SRV 記錄可由其它 Marathon 應用用于發(fā)現(xiàn)服務。舉例來說,任何需要配合 MySQL 服務的應用都能夠從 SRV 記錄當中找到 _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 記錄,從而檢索對應主要及端口以訪問該項服務的示例 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

以下為示例設置的輸出結果:

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

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

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


網站名稱:在RHEL7.1上設置Mesos/Marathon集群
URL網址:http://www.dlmjj.cn/article/codgdhp.html