成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)人云工程師手記 | 雙劍合璧,分布式部署兩步走

Jonathan Shieber / 2125人閱讀

摘要:今天小數(shù)給大家?guī)淼氖菙?shù)人云工程師金燁的分享,有關(guān)于自動快速部署服務(wù)相關(guān)組件的一些實踐。當(dāng)與相遇,雙劍合璧,一切變得如此簡單有趣。通過將服務(wù)注冊到來做健康檢查。

今天小數(shù)給大家?guī)淼氖菙?shù)人云工程師金燁的分享,有關(guān)于自動快速部署DCOS服務(wù)相關(guān)組件的一些實踐。
當(dāng)Ansible與Docker相遇,雙劍合璧,一切變得如此簡單有趣。

本次分享將包括以下內(nèi)容:

云平臺部署使用的服務(wù)、組件

Docker化服務(wù)組件

初始化安裝控制主機

集群主機系統(tǒng)檢測

使用Ansible初始化集群主機

使用Ansible安裝、檢測DCOS相關(guān)服務(wù)

一、使用的服務(wù)、組件簡介

Ansible 批量管理配置服務(wù)

初始化主機、批量安裝各服務(wù)使用

test yum repo 部署軟件包源

啟動一個簡單 http 服務(wù),把安裝使用的軟件包全放到這個項目中

Docker 輕量級容器服務(wù)

Cadvisor 監(jiān)控服務(wù)

test-registry 組件安裝使用鏡像倉庫

Haproxy 負載均衡組件

Keepalived 高可用組件

部署在master1 和 master2 兩臺主機,通過檢查這兩臺主機部署的haproxy進行VIP 漂移。

MySQL數(shù)據(jù)庫

自研組件

Consul 服務(wù)發(fā)現(xiàn)、健康檢查、健值存儲外訪問的切換

Zookeeper Mesos Marathon

DCOS 核心組件,負責(zé)集群資源管理,應(yīng)用調(diào)試

二、主要服務(wù)的功能說明及邏輯架構(gòu)

上面簡單介紹了安裝整個 DCOS 服務(wù)的完整過程,在安裝各組件前,我們都會先檢測是否已經(jīng)安裝了該服務(wù),如果已經(jīng)存在會中止安裝,人工檢查后,再進行后續(xù)操作。

1、test yum repo

test-yumrepo 是一個簡單的 yum 源服務(wù),里面放置了安裝 DOCS 需要使用的所有 rpm 包,使用 createrepo 命令進行創(chuàng)建和更新yum 源。

2、test registry

在安裝 DCOS 前會把組件鏡像全 push 到 registry ,不設(shè)置認證用戶,配置申請好的證書。

使用這個 registry 時,只需要添加域名解析就可以。

registry 的數(shù)據(jù)目錄,直接復(fù)制目錄到其它主機。

再啟動 registry 服務(wù)容器就可以直接使用,而不需要導(dǎo)入導(dǎo)出浪費時間。

因為 docker 鏡像是分層的,不同的鏡像,也會共用一些公共的鏡像層。

使用這個原理,鏡像大多數(shù)的服務(wù)都使用相同的 base 鏡像,這樣所有的鏡像都放置到 registry 中,就可以減少占用磁盤的容量。

3、自研組件

DCOS 自研的控制界臺

4、Consul

用它來做各服務(wù)的健康檢查、服務(wù)發(fā)現(xiàn)、MySQL主從切換等。

consul 分為server 和 client ,我們注冊、注銷服務(wù)都是通過 client API 進行,這樣的好處是 client 上的主機服務(wù)都綁定在 client 端,健康檢查也都是通過 client 端進行本地檢查。

服務(wù)本身的狀態(tài)查詢查詢則是通過 Server 端。

consul 的服務(wù)發(fā)現(xiàn)

consul 有多種服務(wù)發(fā)現(xiàn)機制,我們使用的是比較簡單的 dns 模式,通過 consul 自帶的 DNS 解析功能實現(xiàn)的。

各服務(wù)安裝好后,通過調(diào)用 consul 的 API 注冊服務(wù)。

需要服務(wù)發(fā)現(xiàn)的組件通過 docker run 參數(shù) 添加 --dns , 在容器內(nèi)部就可以解析到 consul 中注冊的服務(wù)地址 , 例如: 訪問數(shù)據(jù)庫的配置就可以設(shè)置為 mysql.service.consul:3306, 這樣的配置。(當(dāng)然支持srv 服務(wù)可以直接用)

5、Haproxy

haproxy做為平臺服務(wù)的負載均衡服務(wù),對外服務(wù)配置服務(wù)時,配置的是 consul 中的服務(wù)域名。

這里有個坑,原來使用 haproxy 1.5 版本, 后端服務(wù)使用域名時,啟動后只解析一次(和nginx類似),這時如果解析到的服務(wù)掛掉,訪問haproxy頁面時會503.
查詢官網(wǎng)得知 haproxy 1.6 支持了動態(tài) dns 域名解析的配置,后升級為 haproxy 1.6。

下面是動態(tài) dns 解析相關(guān)的配置內(nèi)容:

6、MySQL 基于 Consul 的主從切換

最初的MySQL主從切換是基于 haproxy+keepalived 來做高可用的。

這種機制下,MySQL主從切換的簡單需求需要引入2個開源組件,架構(gòu)上也非常復(fù)雜。

為了減輕架構(gòu)復(fù)雜度和可維護性,我們將主從切換改為了使用 Consul 進行主從切換。MySQL是安裝了兩臺,一主一從,設(shè)置權(quán)限時,主是讀寫的,從是普通用戶只讀權(quán)限。

通過將服務(wù)注冊到 consul 來做健康檢查。

MySQL Master 和 Slave 注冊到一共注冊四個服務(wù)到Consul, 如下代碼:

正常情況 mysql-vip.service.consul 解析到 主mysql ip。

這里會分兩種情況切換到從解析:

主MySQL掛掉后,ip解析到從mysql ip,mysql-vip 切換到從Mysql IP

主庫的 consul 掛掉也會導(dǎo)致服務(wù)無法解析,即使 mysql-master 正常,所以如果 consul 掛掉也會被激活切換。

請注意:因為MySQL從是只讀的,相當(dāng)于降級服務(wù)。

7、Zookeeper Mesos Marathon

參考以前寫的文章:容器公司如何用容器進行產(chǎn)品迭代
http://blog.dataman-inc.com/s...

三、Docker化服務(wù) 1、dockerfile語法

dockerfile 的語法比較簡單,類似shell, 常用的命令主要有:

FROM 依賴的基礎(chǔ)鏡像

RUN 執(zhí)行的shell命令

ADD 添加本地文件目錄或下載網(wǎng)絡(luò)中的文件并且解壓到鏡像中

COPY 復(fù)制本地文件或目錄到鏡像中

ENTRYPOINT docker容器啟動時的默認命令

CMD docker容器啟動時的默認參數(shù)

參考:https://docs.docker.com/engin...

下面是dockerfile的示例

2、dockerfile 的一些小技巧

docker 鏡像的默認啟動命令可以是一個自定義的 shell 腳本,例如我們編寫一個 entrypoint.sh 腳本,可以在啟動腳本中做很多事情,比如初始化服務(wù)、拉取配置、替換變量等等。

3、Dockerfile示例:Zookeeper

Dockerfile

Zookeeper啟動腳本:
cat /data/run/dataman_zookeeper.sh


4、docker build

5、docker run

參考 https://docs.docker.com/engin...

6、數(shù)人云開放的一些服務(wù)的 Dockerfile

https://github.com/Dataman-Cl...

四、初始化安裝控制主機 1、啟動test yum repo

啟動test yum repo,把 test yum repo 配置到當(dāng)前主機的/etc/yum.repos.d/test.repo

配置內(nèi)容如下:

然后就可以很方便的安裝一些必要的工具服務(wù)。

test yum repo的使用方法

其中 --disablerepo=* 是禁用其它 yum repo, --enablerepo=repo 是開啟數(shù)人云 testrepo ,這樣做是為了防止其它 的yum repo 影響 yum 安裝 的過程,減少出錯。

2、安裝需要使用的基礎(chǔ)服務(wù)

安裝需要部署DOCS需要使用的服務(wù),和一些調(diào)試工具
yum --disablerepo=* --enablerepo=testrepo install -y net-tools iptables ansible 等。

修改 NTP server 的配置。

3、啟動安裝集群組件使用的鏡像倉庫test-registry服務(wù) 五、集群主機系統(tǒng)安裝前配置及檢測

安裝機準(zhǔn)備好 yum repo 和 test registry, 我們就可以準(zhǔn)備安裝 DCOS集群了。

安裝前我們會先檢測當(dāng)前安裝機的服務(wù)是否是我們要求的主機狀態(tài),檢查包括:

yum repo 狀態(tài)正常

test registry 狀態(tài)正常

NTP server 狀態(tài)正常

然后修改ansible 配置ansible/inventory/hosts。

規(guī)劃好主機列表及角色,內(nèi)容示例如下:

修改自定義的主配置文件config.cfg,這個配置中主要包含了,集群使用的 DCOS master 列表,mysql 主機、用戶、初始密碼,Keepalived 主機、VIP地址,以后面各服務(wù)就從這兩個配置中讀取內(nèi)容生成最終配置,再進行安裝。

在安裝服務(wù)前會檢測各主機:

系統(tǒng)版本、內(nèi)核版本檢測

文件系統(tǒng)檢測

磁盤容量檢測

如果檢測到的結(jié)果異常會跟中止安裝。

六、初始化集群主機

前面的初步檢測步驟通過后,我們就會對集群主機進行初始化操作。

包含的內(nèi)容有:

基礎(chǔ)操作
防火墻、selinux 等

主機名
設(shè)置主機機名解析

NTP 客戶端
設(shè)置 ntp 服務(wù)

Docker
安裝配置等

安裝運維調(diào)試工具
出問題檢查的各種工具,比如 netstatdig等

主機初始化后的環(huán)境檢查
以上初始化的檢查

七、總結(jié)

最終我們通過 Ansible 完成了將整套的分布式部署抽象成了兩步完成:

在一個配置文件中配置整套安裝方案的服務(wù);

執(zhí)行安裝腳本。

這個服務(wù)并不是完美的,還有很多可以優(yōu)化的,比如大數(shù)量主機安裝的效能問題等,我們會持續(xù)對其進行改進。

歡迎大家一起交流、探討經(jīng)驗。謝謝大家。

Q&A

Q1:現(xiàn)在Docker的版本更新也很快,那數(shù)人云是怎么來考慮這個版本的,每次跟著更新,還是延后多少個小版本?
A1:每次Docker更新我們都在在內(nèi)部進行測試,經(jīng)過一段時間的驗證,沒有什么大坑的時候,就更新。沒有特定的,延后固定幾個版本。

Q2:此前看到一篇文章說,Docker是沒有后向兼容的,每次更新版本都會非常痛苦。你們是怎么處理這個問題?
A2:這個問題我們也很煩惱,我們是一臺一臺主機的升級,不會影響業(yè)務(wù)的正常使用。DCOS集群本身是高可用的,所以宕機1、2臺也不會有問題。

(承接上一問)
Q3:一般來說,DCOS集群我們都建議上百臺主機,那一個DCOS集群升級一次大概要耗時多久?
A3:升級的話,提前規(guī)劃,按應(yīng)用或集群的角色劃分好批次 比如說 Master不能同時升級,兩個MySQL主從不能同時升級,Elasticsearh 集群不能同時升級等 提前進行docker pull 預(yù)熱 100臺主機,完整升級一次預(yù)計要半小時左右。這個半小時不包含準(zhǔn)備時間。

Q4:你們docker volume怎么解決的?
A4:例如MySQL這種需要持久化數(shù)據(jù) 的服務(wù),我們是發(fā)到固定主機。如果是Elasticsearch,這種本身已經(jīng)有數(shù)據(jù)同步的服務(wù),我們是直接掛載出來,指定一個主機范圍。

Q5:能分享下數(shù)人云在DCOS+DevOps方面的經(jīng)驗么?
A5:這次分享的集群安裝就是我們DevOps的一部分,我們的應(yīng)用和組件都是Docker化的,使用ansible docker run或調(diào)用marathon api 進行、更新發(fā)布應(yīng)用,平時的工作主機就是Docker化服務(wù)和把這些服務(wù)發(fā)到DCOS集群中。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27954.html

相關(guān)文章

  • 阿里服務(wù)器租賃配置怎么選,阿里官網(wǎng)推薦的配置有哪些

    摘要:阿里云官網(wǎng)推薦購買租賃配置地址首先我們要確認我們是個人用戶還是企業(yè)用戶,賬戶實名認證是個人認證的即為個人用戶,實名認證是企業(yè)認證的即為企業(yè)用戶。對于初次租賃阿里云服務(wù)器的用戶來說,首先面臨的就是云服務(wù)器配置該如何選擇,因為對于一般性用戶來說,沒有專業(yè)的技術(shù)人員推薦指導(dǎo)購買什么樣的云服務(wù)器,買高了容易浪費云服務(wù)器資源,成本也高一些,買低了可能又容易出現(xiàn)問題,比如CPU,內(nèi)存消耗過高導(dǎo)致服務(wù)器卡...

    Warren 評論0 收藏0
  • 數(shù)人程師手記 | 容器日志管理實踐

    摘要:容器內(nèi)文件日志平臺支持的文件存儲是,避免了許多復(fù)雜環(huán)境的處理。以上是數(shù)人云在實踐容器日志系統(tǒng)過程中遇到的問題,更高層次的應(yīng)用包括容器日志分析等,還有待繼續(xù)挖掘和填坑,歡迎大家提出建議,一起交流。 業(yè)務(wù)平臺每天產(chǎn)生大量日志數(shù)據(jù),為了實現(xiàn)數(shù)據(jù)分析,需要將生產(chǎn)服務(wù)器上的所有日志收集后進行大數(shù)據(jù)分析處理,Docker提供了日志驅(qū)動,然而并不能滿足不同場景需求,本次將結(jié)合實例分享日志采集、存儲以...

    saucxs 評論0 收藏0
  • 數(shù)人容器管理工具 Crane 現(xiàn)已開源

    摘要:指導(dǎo)員明伯伯?dāng)?shù)人云工程師手記相關(guān)閱讀基于的集群管理開發(fā)實踐服務(wù)發(fā)現(xiàn),負載均衡和 這是一個容器信息臃腫的時代。 Docker 鯨魚鼓著圓圓的肚子在西雅圖開了一場名為 DockerCon2016 的大會,全球 4000 人參加, 8 大看點留下對容器生態(tài)的更多暢想。 數(shù)人云一直專注于以企業(yè)級的 Mesos +容器技術(shù)棧,出于對容器新技術(shù)的熱愛,我們在社區(qū)版的工具上小試牛刀,距 Docker...

    NeverSayNever 評論0 收藏0
  • 數(shù)人程師手記 | 新手快速入門Docker最新版管理工具

    摘要:在之前公眾號的數(shù)人云工程師手記基于的集群管理開發(fā)實踐對的服務(wù)發(fā)現(xiàn)及負載均衡有詳細的介紹。服務(wù)名稱為服務(wù)命名,必須為英文或數(shù)字。 本文是數(shù)人云9月22日線上微信群分享的文章實錄。數(shù)人云容器管理面板Crane開源以來,很多小伙伴對它還不是非常了解,數(shù)人云工程師金鑫從Crane技術(shù)背景、環(huán)境準(zhǔn)備和使用步驟等方面為大家做了詳細的介紹,并整理大家常見的問題逐一進行了解答。 引言 Docker1....

    Tangpj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<