资讯专栏INFORMATION COLUMN

关于marathon-lb中HAPROXY_{n}_VHOST等配置的说明

iliyaku / 3041人阅读

摘要:分析访问本机已配置,指向容器实例所在机器的可以返回对应结果。重点这里的为啥写呢在中,包含的与定义对应,从开始。模式下表示我要将定义的第一个号映射到的端口上,这里我把的配置文件贴上来的配置细节可自行百度。

概述

最近在做marathon-lb的虚拟域名配置,发现官方的文档中都是这样写的HAPROXY_0_VHOST,之前从官方文档知道如何绑定多个域名(多个域名用逗号隔开,marathon-lb会自动发现注册到haproxy的配置中),但是对其中的{n},为啥都用0表示,耿耿于怀~

背景

之前根据项目要求,访问同一域名需要根据目录转发到不同的容器上,继而配置了HAPROXY_0_PATH,该项和HAPROXY_0_VHOST项的值以笛卡尔积结果过滤请求的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(本机已配置host,IP指向marathon-lb容器实例所在机器的IP)可以返回对应结果。
此处有几点细节要注意:

自己的PC要配置hosts,IP指向marathon-lb容器实例所在机器的IP

marathon-lb应该固定主机启动,这样不至于容器乱飘,自己的PC要不停修改hosts

这里建议以Host模式启动容器,因为在centos7下启用的是firewall-cmd防火墙,marathon网关不支持开放bridge模式随机分配的端口,如果还是iptables则无此问题,自由选择

如果选择Host模式,需要配置marathon分配的端口号范围,然后开启firewall-cmd相同端口区间,再去容器的启动脚本里替换tomcat的启动端口号,server.xml中的8080,8005,8009,8443,还有catalina.sh文件中的8000端口,否则在同一台主机启动多个相同应用会报端口冲突(原因请自行研究Host模式细节),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": {}
}

]

启动(shell)脚本对应配置

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等环境变量获取容器在主机上分配的端口号,即完成Host模式启动脚本配置。

重点!!!

HAPROXY_{n}_VHOST这里的n为啥写0呢?
在labels中,包含0的Key与servicePort定义对应 ,从0开始。如果你有多个servicePort定义,你会遍历它们作为0,1,2,依此类推。
Host模式下HAPROXY_0_VHOST表示我要将portDefinitions定义的第一个port号映射到haproxy的80端口上,这里我把haproxy的配置文件贴上来

haproxy的配置细节可自行百度。

总结:n表示你想将自己的这个容器的第几个端口暴露在marathon-lb:80端上。

感觉总结的不太好,举个栗子吧:
假设portDefinitions定义的端口,第一个分到的主机port是20001,则对应容器暴露的也是20001,第二个分到的是20002,对应容器暴露的端口也是20002,(因为我们把tomcat的8080换成了20001,上面脚本的PORT0),如果再启动第二个tomcat的话,把第二个tomcat的8080也换成20002,然后配置

"HAPROXY_0_VHOST": "a.com"
"HAPROXY_1_VHOST": "b.com"

访问a.com,则会打开tomcat1的首页,访问b.com则会打开tomcat2的首页,其实就是告诉浏览器通过域名访问都是经过marathon-lb的haproxy的80端口然后根据VHOST的域名配置转发到后台容器暴露的端口上。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26806.html

相关文章

  • docker 必备 — marathon 基础教程

    摘要:基本概念采用与相同的机制,只是运行在不同的抽象层次上。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护名字服务分布式同步组服务等。它是集群的分布式,能够原样运行任何二进制发布版本,如等等。部署为了部署的方便全部使用部署。 筋斗云 岂安运维工程师爱游泳、爱旅行、爱计算机。 前言 目前越来越多的互联网企业开始使用 docker,在这之前,虚拟机占据着大部分的企业市场...

    罗志环 评论0 收藏0
  • docker 必备 — marathon 基础教程

    摘要:基本概念采用与相同的机制,只是运行在不同的抽象层次上。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护名字服务分布式同步组服务等。它是集群的分布式,能够原样运行任何二进制发布版本,如等等。部署为了部署的方便全部使用部署。 筋斗云 岂安运维工程师爱游泳、爱旅行、爱计算机。 前言 目前越来越多的互联网企业开始使用 docker,在这之前,虚拟机占据着大部分的企业市场...

    learning 评论0 收藏0
  • 基于Docker搭建多节点Mesos/Marathon

    摘要:摘要在之前的一篇博客中,我介绍了基于搭建单机版,但是仅仅使用了单个节点。具有容错功能当容器由于节点崩溃等原因意外停止运行时,会自动将容器调度到其他节点。因此,目前仅适合运行无状态的服务,而数据库等有状态服务应该单独部署。 摘要: 在之前的一篇博客中,我介绍了基于Docker搭建单机版Mesos/Marathon,但是仅仅使用了单个节点。而在这篇博客中,我将介绍基于Docker搭建多节点...

    ConardLi 评论0 收藏0
  • 飞驰在Mesos涡轮引擎上

    摘要:方案二和也运行在中。新增删除节点变更配置均需要手工介入。公司已有的大多都是容器形式部署在各个服务器上。目前我们在每个节点上部署了传统的。在接下来的阶段团队也会对此做进一步的探索。 回想起第一次接触Mesos, 当时有很多困惑: 这到底是用来做啥的?跟YARN比有什么优势?有哪些大公司在使用么?。 然而现在技术日新月异地发展, Mesos这个生态圈也开始被越来越多的团队熟悉关注, 像k8...

    xorpay 评论0 收藏0
  • Nginx反向代理实现均衡负载

    摘要:架设服务器均衡负载方式有多种,是目前使用最广泛的三种方案关于均衡负载架设服务器均衡负载方式有多种,是目前使用最广泛的三种方案。服务器集群环境接下来讲下想要搭的均衡负载环境。 http://homeway.me showImg(http://homeway.me/image/logo-nginx.png); 为jue.so架设一个服务器集群。 架设服务器均衡负载...

    zeyu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<