摘要:分析訪問本機(jī)已配置,指向容器實(shí)例所在機(jī)器的可以返回對(duì)應(yīng)結(jié)果。重點(diǎn)這里的為啥寫呢在中,包含的與定義對(duì)應(yīng),從開始。模式下表示我要將定義的第一個(gè)號(hào)映射到的端口上,這里我把的配置文件貼上來的配置細(xì)節(jié)可自行百度。
概述
最近在做marathon-lb的虛擬域名配置,發(fā)現(xiàn)官方的文檔中都是這樣寫的HAPROXY_0_VHOST,之前從官方文檔知道如何綁定多個(gè)域名(多個(gè)域名用逗號(hào)隔開,marathon-lb會(huì)自動(dòng)發(fā)現(xiàn)注冊到haproxy的配置中),但是對(duì)其中的{n},為啥都用0表示,耿耿于懷~
背景之前根據(jù)項(xiàng)目要求,訪問同一域名需要根據(jù)目錄轉(zhuǎn)發(fā)到不同的容器上,繼而配置了HAPROXY_0_PATH,該項(xiàng)和HAPROXY_0_VHOST項(xiàng)的值以笛卡爾積結(jié)果過濾請(qǐng)求的URL。
"labels": { "HAPROXY_GROUP": "dsp", "HAPROXY_0_PATH": "-i /dsp-admin /dsp-api", "HAPROXY_0_VHOST": "test.dsp.com.cn,test.api.dsp.com" }分析
訪問http://test.dsp.com.cn/dsp-admin(本機(jī)已配置host,IP指向marathon-lb容器實(shí)例所在機(jī)器的IP)可以返回對(duì)應(yīng)結(jié)果。
此處有幾點(diǎn)細(xì)節(jié)要注意:
自己的PC要配置hosts,IP指向marathon-lb容器實(shí)例所在機(jī)器的IP
marathon-lb應(yīng)該固定主機(jī)啟動(dòng),這樣不至于容器亂飄,自己的PC要不停修改hosts
這里建議以Host模式啟動(dòng)容器,因?yàn)樵赾entos7下啟用的是firewall-cmd防火墻,marathon網(wǎng)關(guān)不支持開放bridge模式隨機(jī)分配的端口,如果還是iptables則無此問題,自由選擇
如果選擇Host模式,需要配置marathon分配的端口號(hào)范圍,然后開啟firewall-cmd相同端口區(qū)間,再去容器的啟動(dòng)腳本里替換tomcat的啟動(dòng)端口號(hào),server.xml中的8080,8005,8009,8443,還有catalina.sh文件中的8000端口,否則在同一臺(tái)主機(jī)啟動(dòng)多個(gè)相同應(yīng)用會(huì)報(bào)端口沖突(原因請(qǐng)自行研究Host模式細(xì)節(jié)),Host模式端口配置
"portDefinitions": [
{ "port": 0, "protocol": "tcp", "labels": {} }, { "port": 0, "protocol": "tcp", "labels": {} }, { "port": 0, "protocol": "tcp", "labels": {} }, { "port": 0, "protocol": "tcp", "labels": {} }, { "port": 0, "protocol": "tcp", "labels": {} }
]
啟動(dòng)(shell)腳本對(duì)應(yīng)配置
echo "PORT0:${PORT0}"
if [ x"${PORT0}" != x ]; then
sed -i "s;8080;${PORT0};" /app/tomcat/conf/server.xml
echo "tomcat http port is replaced by : ${PORT0}"
fi
echo "PORT1:${PORT1}"
if [ x"${PORT1}" != x ]; then
sed -i "s;8000;${PORT1};" /app/tomcat/bin/catalina.sh
echo "tomcat catalina 8000 port is replaced by : ${PORT1}"
fi
echo "PORT2:${PORT2}"
if [ x"${PORT2}" != x ]; then
sed -i "s;8005;${PORT2};" /app/tomcat/conf/server.xml
echo "tomcat server 8005 port is replaced by : ${PORT2}"
fi
echo "PORT3:${PORT3}"
if [ x"${PORT3}" != x ]; then
sed -i "s;8009;${PORT3};" /app/tomcat/conf/server.xml
echo "tomcat server 8009 port is replaced by : ${PORT3}"
fi
echo "PORT4:${PORT4}"
if [ x"${PORT4}" != x ]; then
sed -i "s;8443;${PORT4};" /app/tomcat/conf/server.xml
echo "tomcat server 8443 port is replaced by : ${PORT4}"
fi
通過PORT0等環(huán)境變量獲取容器在主機(jī)上分配的端口號(hào),即完成Host模式啟動(dòng)腳本配置。
重點(diǎn)!!!HAPROXY_{n}_VHOST這里的n為啥寫0呢?
在labels中,包含0的Key與servicePort定義對(duì)應(yīng) ,從0開始。如果你有多個(gè)servicePort定義,你會(huì)遍歷它們作為0,1,2,依此類推。
Host模式下HAPROXY_0_VHOST表示我要將portDefinitions定義的第一個(gè)port號(hào)映射到haproxy的80端口上,這里我把haproxy的配置文件貼上來
haproxy的配置細(xì)節(jié)可自行百度。
總結(jié):n表示你想將自己的這個(gè)容器的第幾個(gè)端口暴露在marathon-lb:80端上。
感覺總結(jié)的不太好,舉個(gè)栗子吧:
假設(shè)portDefinitions定義的端口,第一個(gè)分到的主機(jī)port是20001,則對(duì)應(yīng)容器暴露的也是20001,第二個(gè)分到的是20002,對(duì)應(yīng)容器暴露的端口也是20002,(因?yàn)槲覀儼裻omcat的8080換成了20001,上面腳本的PORT0),如果再啟動(dòng)第二個(gè)tomcat的話,把第二個(gè)tomcat的8080也換成20002,然后配置
"HAPROXY_0_VHOST": "a.com"
"HAPROXY_1_VHOST": "b.com"
訪問a.com,則會(huì)打開tomcat1的首頁,訪問b.com則會(huì)打開tomcat2的首頁,其實(shí)就是告訴瀏覽器通過域名訪問都是經(jīng)過marathon-lb的haproxy的80端口然后根據(jù)VHOST的域名配置轉(zhuǎn)發(fā)到后臺(tái)容器暴露的端口上。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26806.html
摘要:基本概念采用與相同的機(jī)制,只是運(yùn)行在不同的抽象層次上。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運(yùn)行任何二進(jìn)制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運(yùn)維工程師愛游泳、愛旅行、愛計(jì)算機(jī)。 前言 目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機(jī)占據(jù)著大部分的企業(yè)市場...
摘要:基本概念采用與相同的機(jī)制,只是運(yùn)行在不同的抽象層次上。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護(hù)名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運(yùn)行任何二進(jìn)制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運(yùn)維工程師愛游泳、愛旅行、愛計(jì)算機(jī)。 前言 目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機(jī)占據(jù)著大部分的企業(yè)市場...
摘要:摘要在之前的一篇博客中,我介紹了基于搭建單機(jī)版,但是僅僅使用了單個(gè)節(jié)點(diǎn)。具有容錯(cuò)功能當(dāng)容器由于節(jié)點(diǎn)崩潰等原因意外停止運(yùn)行時(shí),會(huì)自動(dòng)將容器調(diào)度到其他節(jié)點(diǎn)。因此,目前僅適合運(yùn)行無狀態(tài)的服務(wù),而數(shù)據(jù)庫等有狀態(tài)服務(wù)應(yīng)該單獨(dú)部署。 摘要: 在之前的一篇博客中,我介紹了基于Docker搭建單機(jī)版Mesos/Marathon,但是僅僅使用了單個(gè)節(jié)點(diǎn)。而在這篇博客中,我將介紹基于Docker搭建多節(jié)點(diǎn)...
摘要:方案二和也運(yùn)行在中。新增刪除節(jié)點(diǎn)變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個(gè)服務(wù)器上。目前我們在每個(gè)節(jié)點(diǎn)上部署了傳統(tǒng)的。在接下來的階段團(tuán)隊(duì)也會(huì)對(duì)此做進(jìn)一步的探索。 回想起第一次接觸Mesos, 當(dāng)時(shí)有很多困惑: 這到底是用來做啥的?跟YARN比有什么優(yōu)勢?有哪些大公司在使用么?。 然而現(xiàn)在技術(shù)日新月異地發(fā)展, Mesos這個(gè)生態(tài)圈也開始被越來越多的團(tuán)隊(duì)熟悉關(guān)注, 像k8...
摘要:架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案關(guān)于均衡負(fù)載架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案。服務(wù)器集群環(huán)境接下來講下想要搭的均衡負(fù)載環(huán)境。 http://homeway.me showImg(http://homeway.me/image/logo-nginx.png); 為jue.so架設(shè)一個(gè)服務(wù)器集群。 架設(shè)服務(wù)器均衡負(fù)載...
閱讀 1697·2021-10-09 09:44
閱讀 3263·2021-09-27 13:36
閱讀 1520·2021-09-22 15:33
閱讀 1274·2021-09-22 15:23
閱讀 1159·2021-09-06 15:02
閱讀 1695·2019-08-29 16:14
閱讀 2901·2019-08-29 15:26
閱讀 2408·2019-08-28 18:08