摘要:在之前公眾號的數(shù)人云工程師手記基于的集群管理開發(fā)實踐對的服務(wù)發(fā)現(xiàn)及負載均衡有詳細的介紹。服務(wù)名稱為服務(wù)命名,必須為英文或數(shù)字。
引言本文是數(shù)人云9月22日線上微信群分享的文章實錄。數(shù)人云容器管理面板Crane開源以來,很多小伙伴對它還不是非常了解,數(shù)人云工程師金鑫從Crane技術(shù)背景、環(huán)境準備和使用步驟等方面為大家做了詳細的介紹,并整理大家常見的問題逐一進行了解答。
Docker1.12發(fā)布已有一段時間了,像Swarm mode模式、應(yīng)用編排、滾動更新、健康檢查、服務(wù)發(fā)現(xiàn)等等、這些功能給開發(fā)者們帶來了更多驚喜,之前在安裝 Docker之外,還要安裝其它的組件來配合完成,比如Mesos-Marathon,比如K8S,現(xiàn)在Docker決定大包大攬,將這些功能整合到了一起。安裝Docker1.12以后,通過命令行,幾條命令,Swarm集群,overlay網(wǎng)絡(luò),服務(wù)發(fā)現(xiàn)等均可創(chuàng)建完成。
這里再提一下Docker1.12的服務(wù)發(fā)現(xiàn)和負載均衡是結(jié)合在一起實現(xiàn)的,有兩種方式,一種是DNS輪詢,一種是IPVS;IPVS這種方式,Docker為每個服務(wù)都分配來一個虛擬ip,這個ip是為服務(wù)做保留,不是對外提供服務(wù)。在創(chuàng)建服務(wù)時,通過entrypoint-mode的參數(shù)來確定是基于dnsrr(輪詢)還是VIP(IPVS)的服務(wù)發(fā)現(xiàn)方式。
考慮到基于DNS的方式做負載均衡,會有時效性的問題,DNS生效的時間導(dǎo)致不能實時反映服務(wù)的變化情況。會有服務(wù)發(fā)現(xiàn)不準確的情況。而且,IPVS支持udp協(xié)議。稍有遺憾的是,不支持會話保持,我們在Crane發(fā)布的服務(wù)默認的服務(wù)發(fā)現(xiàn)的方式是后一種,IPVS的方式也是Docker1.12默認的服務(wù)發(fā)現(xiàn)方式。
Docker1.12的功能很誘人,但是在使用上來講,一旦服務(wù)數(shù)量增加,單純靠命令行管理,畢竟不是很方便,所以,數(shù)人云開發(fā)了這樣一款工具,并且把它開源出來,供大家更方便的使用新版 Docker帶來的新特性。
Crane!!!
數(shù)人云容器管理面板Crane安裝使用指南 背景Crane作為國內(nèi)第一款基于SwarmKit的容器管理工具,開源之后,小伙伴們試用熱情高漲,也有小伙伴表示,體驗時會在使用的某一處卡住,無法進行進一步的體驗。這里針對大家反饋比較多的使用問題,做一點說明,避免環(huán)境原因,影響到小伙伴們的Crane體驗。
環(huán)境準備目前推薦的主機系統(tǒng)是CentOS7或者Ubuntu14.04,及以上版本,雖然Docker新版本已經(jīng)可以在Mac上安裝,考慮不是主流,該版本未在Mac下的測試。
請確保Docker安裝版本 >=1.12, 并確保Docker正常運行.(如何安裝和配置Docker請參考https://docs.docker.com/engin...
按照如上說明,安裝的Docker版本因該是1.12.1。service docker restart,啟動Docker。
請確保docker-compose已經(jīng)正確安裝.(如何安裝docker-compose請參考https://docs.docker.com/compo...
注意,這里安裝后的docker-compose版本是1.8.0,如果您已經(jīng)按照過較早版本的docker-compose,需要按照上述的地址更新到新版本,因為程序啟動的語法是按照docker-compose的2.0語法。版本較早會影響程序的安裝。
請確保主機的selinux和firewalld為關(guān)閉狀態(tài),如果不關(guān)閉,會影響Docker的一些功能使用。
關(guān)閉selinux 方法:vim /etc/sysconfig/selinux 設(shè)置 SELINUX=disabled 并重啟系統(tǒng)
關(guān)閉firewalld方法:CentOS 7.0默認使用的是firewall作為防火墻,如果是Ubuntu,可以跳過這步。
systemctl status firewalld.service#查看firewall狀態(tài) systemctl start firewalld.service#啟動firewall systemctl stop firewalld.service#停止firewall systemctl disable firewalld.service#禁止firewall開機啟動
確保iptables對Docker沒有規(guī)則限制,通常來講,系統(tǒng)默認即可,如果您的環(huán)境內(nèi)基于iptables的防火墻限制,建議刪除。因為Swarm mode的服務(wù)發(fā)現(xiàn)和負載均衡均利用到iptables的轉(zhuǎn)發(fā)規(guī)則。避免使用中遇到限制,需要將iptables的限制 規(guī)則清空。在之前公眾號的《數(shù)人云工程師手記 | 基于 Docker 1.12 Swarm 的集群管理開發(fā)實踐》對Swarm的服務(wù)發(fā)現(xiàn)及負載均衡有詳細的介紹。有想深入了解的小伙伴可以在微信公眾號內(nèi)查找到該文章。
請確保NTP服務(wù)開啟,收到的反饋比較多的是安裝腳本執(zhí)行過程中提示:
NTP is unsynchronised, Please confirm your ntp status before continue.
解決方式:以CentOS7為例,安裝NTP服務(wù),
yum install -y ntp && systemctl start ntpd && systemctl enable ntpd && systemctl disable chronyd ntpdate time.nist.gov
ntpsat 查看,顯示如下正常,
synchronised to NTP server (59.46.44.253) at stratum 3 time correct to within 62 ms polling server every 1024 s
若仍出現(xiàn)unsynchronised字樣,需要重啟ntpd服務(wù)
service ntpd restart
確保開啟Docker的TCP連接端口。
centos:
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl daemon-reload && service docker restart
ubuntu:
vim /etc/default/docker
OCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
service docker restart
2375為Docker默認的tcp通訊端口,稍后在使用主機連接時需要用到。
至此,基礎(chǔ)環(huán)境準備完畢!
安裝Crane的主機默認會作為集群的管理節(jié)點,可以直接發(fā)布服務(wù)。
作為剛開始接觸1.12的同學(xué)可以先按向?qū)J絹戆l(fā)布,這樣更便于了解新增的Docker運行參數(shù),選擇向?qū)J絼?chuàng)建。這里對參數(shù)做一下介紹。然后我們發(fā)布一個ZooKeeper的集群作為演示的demo。
服務(wù)名稱: 為服務(wù)命名,必須為英文或數(shù)字。
鏡像名稱: 服務(wù)使用的鏡像,主機已存在的鏡像或者為集群可以pull的鏡像。
服務(wù)模式: 設(shè)定服務(wù)模式類型,分為固定實例數(shù)和一節(jié)點一任務(wù)模式。
選擇網(wǎng)絡(luò): 服務(wù)使用的網(wǎng)絡(luò),需要在網(wǎng)絡(luò)里預(yù)先創(chuàng)建。
認證標(biāo)識: 預(yù)先設(shè)置的倉庫認證信息,如果使用的鏡像倉庫需要登錄驗證,可以預(yù)先在倉庫認證處設(shè)置登錄信息的用戶名、密碼,設(shè)置不同的標(biāo)簽;此處選擇相應(yīng)的認證標(biāo)簽。
端口映射:建立宿主機的端口與容器端口的映射關(guān)系,支持TCP和UDP協(xié)議。
環(huán)境變量:設(shè)置容器啟動時的環(huán)境變量。
啟動參數(shù):
容器工作目錄:容器內(nèi)工作路徑,如設(shè)置/root,容器內(nèi)工作路徑在/root,如需執(zhí)行/root/test.sh,此處設(shè)置/root,命令行設(shè)置sh test.sh即可;
命令行:容器啟動的運行命令。需要說明的是,此處的命令行更相當(dāng)于dockerfile中的entrypoint。
參數(shù):為命令行提供參數(shù)。
示例: 本地docker run命令為:
docker run centos bash -c "while [ true ]; do echo "this is a test"; sleep 10; done;"
命令行輸入
bash
參數(shù)輸入兩項
-c while [ true ]; do echo "this is a test"; sleep 10; done;
標(biāo)簽: 可以分別為服務(wù)和服務(wù)添加標(biāo)簽。
資源限制:設(shè)定服務(wù)每個容器的限制資源及預(yù)留資源。
容錯策略:針對容器健康狀態(tài)設(shè)置的重啟策略,分別為退出、失敗,退出指只要容器退出了,重啟策略即生效,失敗指容器非正常退出,重啟策略才生效,若不設(shè)置重啟策略,可以選擇從不。
評估間隔:設(shè)定的時間用來評估重啟政策。
重啟間隔:容器重啟的時間間隔。
嘗試次數(shù):嘗試次數(shù)后,不再重啟。
更新策略:服務(wù)更新時執(zhí)行的策略
間隔:更新間隔,通常指更新的并行數(shù)<現(xiàn)有實例數(shù);二次更新時的間隔時間。
并行數(shù):一次更新的最大實例數(shù)
失敗后策略,如果更新失敗執(zhí)行的策略,分繼續(xù)嘗試和立即停止兩種。
調(diào)度策略:指服務(wù)發(fā)布的容器的調(diào)度分布,可以將服務(wù)的容器發(fā)布到指定的node* 節(jié)點或者指定label的節(jié)點,label需要預(yù)先編輯,label為key:value格式,
限定label輸入方式node.labels.yourkey:yourvalue
限定節(jié)點id輸入方式node.id:yournodeid
限定hostname的輸入方式node.hostname:yourhostname
文件掛載:掛載宿主機路徑到容器內(nèi),可以選擇該路徑到屬性,如只讀,讀寫。source為主機路徑,taget為容器內(nèi)路徑。
發(fā)布ZooKeeper集群。因為表單較長,這里摘取了主要參數(shù)。
創(chuàng)建項目:zookeeper
服務(wù)1 node1
鏡像:zookeeper
網(wǎng)絡(luò)默認選擇ingress
端口映射
`2181 tcp 2181
2888 tcp 2888
3888 tcp 3888 `
環(huán)境變量:
ZOO_SERVERS=server.1=node1:2888:2888 server.2=node2:2889:3889 server.3=node3:2890:3890
ZOOMYID=1 點擊繼續(xù)添加
服務(wù)2 node2
鏡像:zookeeper
網(wǎng)絡(luò)默認選擇ingress
端口映射
2181 tcp 2182
2888 tcp 2889
3888 tcp 3889
環(huán)境變量:
ZOO_SERVERS=server.1=node1:2888:2888 server.2=node2:2889:3889 server.3=node3:2890:3890
ZOOMYID=2 點擊繼續(xù)添加
服務(wù)3 node3
鏡像:zookeeper
網(wǎng)絡(luò)默認選擇 ingress
端口映射
2181 tcp 2183
2888 tcp 2890
3888 tcp 3890
環(huán)境變量:
ZOO_SERVERS=server.1=node1:2888:2888 server.2=node2:2889:3889 * server.3=node3:2890:3890
ZOOMYID=3
點擊部署,等待鏡像拉取成功后,(點擊容器id--終端)執(zhí)行./bin/zsServer.sh status 查看該容器的節(jié)點屬性leaderorfollow
發(fā)布好的服務(wù)可以直接保存為模版。保存好的模版可以通過快捷創(chuàng)建,直接使用。也可以通過bundle的文件來快速部署應(yīng)用。
點擊項目-創(chuàng)建項目-DAB創(chuàng)建-輸入項目名稱-試試看中選擇wordpress-部署。(也可以直接讀取已有的DAB文件來發(fā)布。)
鏡像拉取會有一小段時間,等待服務(wù)運行,訪問主機的8000的端口,即可訪問剛剛創(chuàng)建的應(yīng)用。
Crane提供更直觀的方式創(chuàng)建網(wǎng)絡(luò)、添加主機、管理已發(fā)布的服務(wù)。詳細的操作手冊可以參考我們的線上的使用手冊(https://dataman.gitbooks.io/c...
Q:應(yīng)用商店里怎么添加第三方應(yīng)用?第三方應(yīng)用需要怎么去做?
A:之前我們的內(nèi)測版本,自行設(shè)定編排模版的接口沒有開放,現(xiàn)在已經(jīng)增加,有兩種方式,一種是在鏡像--新建項目模版處,直接創(chuàng)建項目模版。項目名稱為英文或數(shù)字。因為這個模版事基于bandle來發(fā)布,需要準備符合格式dab文件項目描述,圖片不是必要選項。
另一種方式:通過已經(jīng)發(fā)布的服務(wù),直接轉(zhuǎn)換為模版。
點擊創(chuàng)建好的項目名稱,右上角會看到添加至模版,點擊該按鈕,操作與上一方式類似,dab文件默認為現(xiàn)有項目的設(shè)置。
Q:容器資源配置時,不能手動輸入大小, 鼠標(biāo)滑鼠很麻煩。
A:這個設(shè)計瀏覽器規(guī)約,怪我們之前沒有說明,我們建議使用瀏覽器是Chrome和Firefox,優(yōu)先建議使用新版本Chrome。
Q:拉取rolex_db鏡像時,響應(yīng)較慢。
A:之前的鏡像倉庫出現(xiàn)了一點點問題,現(xiàn)已經(jīng)修復(fù)。
Q:DAB方式很超前很強大。只是配置文件有學(xué)習(xí)曲線,如果做成可視化界面能幫助用戶生成DAB配置文件就好了。
A:這個功能其實已經(jīng)做了的,可能是方式不太直觀,我們可以在創(chuàng)建好服務(wù)之后,將json文件導(dǎo)出,這樣就會生出一個DAB的文件,默認的導(dǎo)出會帶有參數(shù)的空置,如果您和我一樣,有點點強迫癥,可以修改文件,刪除多余的空值信息,另外,推薦一個json.cn的網(wǎng)站,可以將混在一起的json文件格式化。
Q:能否增加持續(xù)集成功能。gitlab/github項目代碼變更觸發(fā)本系統(tǒng)的鉤子,構(gòu)建鏡像,發(fā)布鏡像,更新應(yīng)用。
A:持續(xù)集成相對于docker現(xiàn)有功能來講,算是一個比較重的配套功能,目前考慮到方案選型和整合會帶來更大的復(fù)雜性,暫時不會加到這個項目中。不過更新功能已經(jīng)集成??梢詤⒖汲掷m(xù)部署功能。
Q:起初上傳鏡像時 docker login 172.18.24.69:5000/ [email protected] -padminadmin 報錯 Error response from daemon: Get https://172.18.24.69:5000/v1/... http: server gave HTTP response to HTTPS client。
A:測試環(huán)境內(nèi)沒有復(fù)現(xiàn)這個問題,需要提供更多的參考信息。
Q:單節(jié)點部署完畢后嘗試登錄,提示"服務(wù)忙,請稍后重試"。
A:建議檢查起的容器狀態(tài),如果方便,可以微信群發(fā)消息,遠程查看。
我們列舉了幾個比較典型的反饋問題,如果您的反饋沒有及時得到回復(fù),可以在微信群里交流或者在GitHub上提交issue,反饋的處理優(yōu)先級較高。
改進建議我們的Crane開源之后,許多熱情的小伙伴在試用之后,也給我們提了許多很好的功能建議,我們也內(nèi)部討論準備在后續(xù)的版本中將部分功能整合到Crane之中。感謝所有支持Crane同學(xué)的建議!
易用性比如有同學(xué)建議在應(yīng)用部署完成之后通過一個link可以直接打開應(yīng)用的界面,這個功能目前的位置不明顯,后續(xù)我們會加強操作便捷性的改進。
還有大家提及的安裝建議,按照如上的環(huán)境準備說明操作之后,部署會減少重復(fù)的操作。如果直接修改本機配置顯得又點霸道。我們考慮還是將修改的內(nèi)容在環(huán)境準備時說明。
部署時按照應(yīng)用向?qū)?chuàng)建時,選擇相應(yīng)參數(shù)但是未填寫值,如果恰好點了折疊,應(yīng)用無法部署,提示不夠明顯,這部分的用戶提醒,我們正在改進。
高可用目前的部署方式為單點,在我們的roadmap中,將來會支持高可用的多節(jié)點部署。
更多系統(tǒng)的兼容,比如在Mac上部署。
自動伸縮策略功能已經(jīng)在我們的roadmap中,方案正在論證,如果有好的思路可以給我們提建議。
SwarmKit的一些不完美作為Docker的大版本更新,1.12帶來了大幅的功能更新,但新功能總有那么一些不完美,建議現(xiàn)用Docker的小伙伴酌情更新。
原有的docker-compose文件需要轉(zhuǎn)換為bundle格式,如果有之前應(yīng)用使用了docker-compose,考慮升級時,需要一點轉(zhuǎn)換的工作量, 另外bundle并不能完全支持所有的參數(shù)。
不能支持host模式,雖然可以做到一主機一個任務(wù),但是無法使用主機網(wǎng)絡(luò),如果您的應(yīng)用需要暴露多個端口,需要一一映射。
網(wǎng)絡(luò)性能,overlay的網(wǎng)絡(luò)性能損耗較多,也是需要考量的一個點
服務(wù)發(fā)現(xiàn)還不是很完美,偶有不能正常發(fā)現(xiàn)的bug。
結(jié)語歡迎更多的小伙伴體驗、支持數(shù)人云的開源項目,開源項目地址:https://github.com/Dataman-Cl...。 目前建議的使用場景為開發(fā)測試環(huán)境。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26709.html
摘要:今天小數(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ù)、組件 Do...
摘要:容器內(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é)合實例分享日志采集、存儲以...
摘要:指導(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...
摘要:改進了安裝腳本,新的安裝腳本將會檢查集群的狀態(tài),是否開啟。它根據(jù)的原生編排功能,采用輕量化架構(gòu),幫助開發(fā)者快速搭建環(huán)境,體驗的各種最新功能。 馬上就要投身到國慶節(jié)的美好假期中,小伙伴們是不是已經(jīng)迫不及待了呢?為了歡度國慶, 小數(shù)這里也有一個好消息要告訴大家——我們的Cranev1.0.5 release 啦! 自從9月12日宣布開源以來,Crane受到很多開發(fā)者的關(guān)注,也收獲了很...
閱讀 803·2023-04-26 00:30
閱讀 2712·2021-11-23 09:51
閱讀 1059·2021-11-02 14:38
閱讀 2617·2021-09-07 10:23
閱讀 2257·2021-08-21 14:09
閱讀 1405·2019-08-30 10:57
閱讀 1615·2019-08-29 11:20
閱讀 1163·2019-08-26 13:53