OneData是我們實(shí)驗(yàn)室某個(gè)存儲(chǔ)項(xiàng)目的對(duì)比項(xiàng)目之一,因此我在阿里云上部署了一套OneData的測(cè)試集群,在部署的過程中遇到不少坑,故記錄下來以免以后再走。
由于之前借助開源項(xiàng)目https://github.com/wgslr/getting-started 部署過OneData号杠,因此這次也是輕車熟路,做好了如下準(zhǔn)備工作:
- 在阿里云上申請(qǐng)了 北京、上海姨蟋、成都屉凯、深圳等5個(gè)ECS實(shí)例
- 由于僅僅是測(cè)試需要,因此將五個(gè)實(shí)例的安全組設(shè)為
all open
眼溶,操作系統(tǒng)選擇ubuntu server 18.04 (圖省事) - 系統(tǒng)內(nèi)部悠砚,通過docker官方源安裝
docker 19.03.8
,同時(shí)準(zhǔn)備好了docker-compose
等環(huán)境
然而還是碰到了坑
坑1 - 容器運(yùn)行失敗 hostname -f return non-zero value
這里不得不承認(rèn)我并不熟悉docker的使用堂飞,因此對(duì)于已經(jīng)運(yùn)行失敗stop的容器我根本不知道如何進(jìn)去debug灌旧。一種可行的debug方式為將運(yùn)行失敗的容器commit為image,然后以此image啟動(dòng)新的容器并且執(zhí)行bash程序可以幫助調(diào)試绰筛。
最終我通過將docker-compose file中的網(wǎng)絡(luò)類型從host
改成了橋接枢泰,并且手動(dòng)暴露了9443/443/80/53
等端口,繞過了這個(gè)坑铝噩。
坑2 - 容器運(yùn)行失敗 cannot connect to node1.xxx
到這里我放棄了getting-started
帶來的簡(jiǎn)便腳本衡蚂,因?yàn)槲乙庾R(shí)到這份三年前的腳本在新新環(huán)境下的適應(yīng)能力需要一個(gè)時(shí)間充裕且富有挑戰(zhàn)精神的冒險(xiǎn)家來調(diào)試,而不是熬夜到兩點(diǎn)快抓狂的我骏庸。因此我開始直接使用官網(wǎng)提供的最新docker-compose file毛甲,其中依賴的onedata image為19.02.1,幾個(gè)月前剛出爐的版本具被。
坑3 - dns resolve failed
我實(shí)在是沒想到onedata 19.02.1竟然需要一個(gè)專屬域名來支持子域名管理玻募,現(xiàn)在買域名和走域名審批根本不現(xiàn)實(shí)。一姿。七咧。
因此我在上海ECS上自己搭建了一個(gè)老牌DNS服務(wù)器,用的是bind叮叹,為自己賦予了一個(gè)假域名坑雅,并通過把ECS中resolv.conf全都指向我的dns server來獲得一個(gè)局部地區(qū)認(rèn)可的假域名。
坑4 - oneprovider無法連接onezone
仔細(xì)less日志的時(shí)候我突然發(fā)現(xiàn)衬横,已經(jīng)02:30了,所以不再細(xì)看直接ctrl+G到末尾终蒂,問題出在我雖然用了假域名和假的證書蜂林,然而證書oneprovider并沒有認(rèn),導(dǎo)致ssl連接失敗拇泣。幸虧onedata早就為了假證書的問題留了后路噪叙,通過overlay.config設(shè)定{force_insecure_connections, true}
能夠忽略不安全的ssl連接。
坑5 - oneprovider無法通過域名連接onezone
通過忽略證書問題霉翔,已經(jīng)能直接通過ip連接onezone了睁蕾,然而通過域名時(shí)就會(huì)出現(xiàn)connection reset
,使用任一非onezone主機(jī)curl -k https://mydomain.com
也會(huì)出現(xiàn)SSL_SYSCALL_ERROR (35)
的錯(cuò)誤。奇怪了子眶,只聽說過域名能過ip不給過的瀑凝,今天竟然還反了,不睡覺了臭杰。經(jīng)過wireshark抓包粤咪、tcpdump抓包,各種分析渴杆,發(fā)現(xiàn)使用域名進(jìn)行ssl連接的時(shí)候寥枝,在第一次握手階段就onezone就沒反應(yīng)了,這種場(chǎng)景讓我不禁回想起當(dāng)年我VPS被封時(shí)候的場(chǎng)景磁奖,該不會(huì)被封了吧囊拜?
果然,沒有備案的域名無法綁定到阿里云ECS比搭,所以http協(xié)議80端口的會(huì)友情提示備案冠跷,而https協(xié)議443端口的則一聲不吭就drop了。解決方式是換成香港地區(qū)的ECS重新搭建一個(gè)Onezone敢辩。
睡覺蔽莱!