proxy – 在一个url下运行marathon(mesos)中的redis

我有问题在mesos,marathon中的一个IP地址上启动redis服务器.

我的步骤

>创建自己的包含自己的redis.conf的Dockerfile
>我创建自己的docker图像并将其拉入docker repo(名称为arekmax / redis-instancje)
>在马拉松中我开始我的码头图像 – redis启动并正常工作.
 介质中的故障转移redis服务器也能正常工作 – 当我关闭192.168.18.21服务器时 – 马拉松在第二个或第三个实例中启动Redis.

现在我想给我的开发人员一个地址IP,他们可以使用redis服务器(我不想现在给他们192.168.18.21:31822并在故障转移后例如192.168.18.22:23124).我需要一些代理服务器如何自动检查实际的redis IP和端口.

我尝试使用bamboo project,但它适用于端口80 – 我不知道使用竹子与redis服务器的可能性 – 我找不到如何重定向31822(在我的情况下,在docker容器中的redis端口)的信息,例如IP 192.168.18.10:6739(地址IP 192.168.18.10这是我的开发人员redis服务器)

谁能帮我?什么是问题的最佳解决方案?我应该使用什么样的代理服务器/实例/应用程序?

在Mesos环境中有十几种用于执行发现服务的解决方案.

我们可以通过客户端查找服务的方式将它们分为3组:

>基于代理

>当客户端和服务之间存在代理时,例如,HAProxy(marathon-lb基于它),fabio,traefik,nixy)负责基于HTTP路径,头,域e.t.c负载平衡服务.该解决方案易于开发,并提供根据请求调整负载均衡的机会.另一方面,我们添加额外的跳,作为代理我们有MitM的情况.

proxy

> DNSlike(询问特殊的知名端点的服务位置)

> Software Defined Network – 我们可以使用带有SDN的每个容器的IP,因此每个容器都使用唯一的IP公开,并使用HTTP的默认端口80,HTTPS的443等提供服务.这是最先进和相对较新的技术,尽管它使用普通的旧DNS来查找服务IP.然后介入代理可能更难,但适用于任何类型的流量.
> Service record – 每个容器都在全球DNS中注册,客户端使用DNS SRV查询获取IP和PORT. Consul Mesos DNS提供此类型的DNS服务器.此外,一些其他协议也基于这一想法(请参阅Bonjure).它尝试获得SDN和代理的最佳效果.它的设置相对容易,并且与协议无关.

dns

>其他

>任何不适合其他类型的东西,例如内部开发的解决方案,etcdEureka.它可能与基础架构和应用程序提供一些优化非常紧密.值得一提的是,有一些尝试使用基于DHT的发现服务 – Meta Service Discovery

您可以找到有关可用于创建Discovery Service here的工具的更多详细信息

我们可以通过服务条目填充Discovery Services来划分它们:

>汇集

>定期查询Mesos / Marathon状态.这就是Mesos DNS的工作方式.这是最简单的方法,但会导致服务启动/停止和更改进入服务发现之间的巨大延迟.这可以通过使用健康检查来最小化.

>基于事件

>马拉松有能力push events提供有关状态变化的信息(有启动也包括事件总线int Mesos – design doc.这样marathon-lb正在工作.类似的工作在marathon-consul完成,但数据传递给领事.

>在app /容器中

>以上解决方案是异步的,因此当您的服务发现状态过时时可能存在时间跨度,例如服务开始但尚未准备好服务请求,或服务刚刚死亡.即使有了healtcheck,我们也无法假设所有事情都会在0停机时发生.最小化停机时间的解决方案是让应用程序在准备好处理请求时注册自己,并在停止之前注销(也称为正常关闭).

https://stackoverflow.com/questions/37811262/run-redis-in-marathon-mesos-under-one-url

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:proxy – 在一个url下运行marathon(mesos)中的redis