Tag: 负载平衡

通过docker swarm模式负载平衡器,consul和外部负载平衡器消除混乱

家伙。 我正在尝试用小ASP.NET应用程序代表的微服务来devise项目。 作为服务发现,我使用Consul。 作为一个编排系统,我使用Docker Swarm模式。 另外,我使用外部负载均衡器(fabio或traefik)。 问题是,我不明白如何将docker swarm负载平衡器与外部的平衡器相结合? 这个想法如下。 每个服务都在启动时在领事处注册。 法比奥使用领事来获得需要负载均衡的服务。 但是当我们以群模式部署服务时,它使用内部负载均衡器,它在外部正常工作。 因此,例如,fabio指向(通过其内部algorithm和权重)serviceA到serviceB_node1,docker swlb可以将该请求指向另一个serviceB_node2。 它打破了lbalgorithm,服务使用统计等等。 如何正确地使docker群lb正常工作

WordPress的可扩展云架构

我必须准备一个运行Wordpress + Woocommerce的网站,在两个月内突然出现stream量高峰。 我正在将其从共享主机移到云端。 我已经成功集装箱了Wordpress应用程序,并且有一个在OTC(Deutsche Telekom Cloud)工作的原型。 下面你可以看到当前体系结构的图片和下面的描述: 当前架构图 容器集群有1个节点。 该节点包含: Docker容器(1-100个实例)Web服务器CentOS + NGINX Docker容器(1-100)PHP引擎CentOS + PHP 7 – FPM Web应用程序文件存储在/ var / www / html(wordpress +所有内容)的此节点(主机)上,并可通过容器 数据库 RDS主数据库实例 RDS辅助实例 多达5个读取实例 负载平衡器(TCP 443,TCP 80) 所以我可以select我的节点规格(例如16个vCPU和32 GB RAM)。 我有一个选项来configuration自动缩放意味着新的docker实例将popup(最小1和最大100)当CPU使用率超过某一点。 理论上我的节点可以运行数十个docker容器实例。 问题 由于每个节点都有一个固定的虚拟硬件规格,所以在一个节点中将docker实例相乘是否有意义? 如果我想将多个节点添加到我的集群中,则无法在节点上本地存储内容文件。 修改源代码是不可能的,所以插件将在本地存储文件。 在哪里最好的存储networking应用程序和内容? (docker允许我从主机上“挂载”目录到容器,如何在容器内的节点之外使用存储?) 加载testing我的configuration的最佳方法是什么? 我要在configuration中注意哪些缺陷? PS我是一个.NET开发人员和LAMP,Wordpress和Docker环境对我来说是新的,所以也可能有一些基本的东西我不知道。

使用Docker Swarm的Cassandra集群 – 从外部访问

我有一个cassandra集群/服务运行使用docker群模式和使用覆盖networking。 我需要我的应用程序从覆盖networking之外访问cassandra数据库。 应用程序应该能够直接访问任何cassandra节点。 有什么解决scheme可以帮助实现吗? 我试了一下docker-flow-proxy,但是不能实现目标。 这是我试过的。 创build了cassandra集群… sudo docker service create -e CASSANDRA_SEEDS=192.168.0.3 –detach=false –network overlay-net –network proxy –replicas 5 –name cassclu bitnami/cassandra 开始dockerstream代理容器… sudo docker service create –name proxy –detach=false -p 80:80 -p 443:443 -p 9042:9042 -p 9160:9160 -p 8080:8080 –network proxy -e MODE=swarm vfarcic/docker-flow-proxy configuration代理…. sudo curl "192.168.1.76:8080/v1/docker-flow-proxy/reconfigure?reqMode=tcp&serviceName=cassclu&servicePath.1=/&port.1=9042&srcPort.1=9042&&servicePath.2=/&port.2=9160&srcPort.2=9160" 但是当我尝试使用cqlshtesting从主机访问时,我得到以下错误 cqlsh -u cassandra Password: […]

Docker Swarm混合环境

我正在尝试Docker Swarm,我有四个节点: – 1个Windows 10企业主机上的Hyper-v Ubuntu 17.04,我的笔记本(这台主机上没有Docker) – 1个带有Docker的Ubuntu 17.04(惠普笔记本) – 1台台式电脑,带Docker的Windows 10 Enterprise – 1个带Docker的MacMini Hyper-v Ubuntu实例是Docker节点pipe理器,其他是工作者; 我在Hyper-v节点上启动,pipe理器: docker服务创build – 名称exploder -p:9001:3000 然后 docker服务规模爆炸= 1 在这个爆炸服务,如果我问题 HTTP://本地主机:9001 /关键 被称为不受pipe理的exception,导致服务的重新启动。 所有工作正常,只有Hyper-V节点和惠普笔记本运行,我可以发出http:// localhost:9001 /关键 ,有时爆炸作品在惠普笔记本,但http:// localhost:9001 /关键仍然是到达。 如果我单独运行MacMini,或者也运行Windows 10桌面,那么在这些节点上重新启动服务时http:// localhost:9001 / critical不再工作,我必须使用地址,例如http://192.168.0.11: 9001 /关键 我试图只使用没有实验性function的MacMini实例,但没有成功:当服务在MacMini节点上移动时, http:// localhost:9001 / critical不再有效,似乎“入口”networking无法pipe理混合操作系统群。 混合OS Swarms是一个公认的问题吗? 有一个解决scheme,或者我应该在一个群体中使用相同的操作系统只有节点?

使用GraphQL API网关作为“子平衡”的Traefik

我打算在我的堆栈中使用Traefik – 外部它工作得很好。 我想知道是否会有冲突,如果我为我的GraphQL API网关做了第二个Traefik Docker容器作为“子平衡器”服务。 而这将是一个完美的方法。 我将使用新的Apollo合并function(GraphQL-Tools 2.0与模式拼接)。 另一件事是在服务之间在内部发出HTTP或gRPC请求(我在GraphQL中全部使用微服务)。 基本上我的问题是,我可以这样做吗? 一个“小平衡器”。 如果在同一个环境中有另一个Traefik服务,会带来冲突吗? 我使用牧场主。 Rancher拥有自己的DNS内部服务器。 但我不确定它如何能与Traefik合作。 干杯

健康的ECS容器返回504

使用容器中的7种不同服务pipe理AWS ECS群集。 应用程序负载平衡器与目标组和path基于路由。 应用程序是.NET Core WebApi,没有什么特别的或不寻常的。 健康检查是正常的,目标正在工作(自动缩放也是如此)。 有时(没有任何模式)所有的服务(或大多数)开始返回504没有理由。 健康检查还行。 日志表明请求没有到达容器。 这是一个错误或function,以及如何解决它? 到目前为止重新启动容器的工作,但这不能是一个永久的解决scheme。

负载平衡器和HTTP下载docker群上的stream

我已经把高层次的架构放在一起,下面会有详细的介绍 五节点docker群集群 有5个我的dockerized微服务实例在每个swarm节点上运行一个副本 该服务通过REST端点提供function 一个这样的function是下载,他们完美的工作,我写了一些代码在Scala / Play framerwork,docker化服务,并部署它。 我也知道,因为我使用swarm,它在内部为每个请求做LB。 我在WebSocket上有一些问题,以及在下载过程中负载平衡器不会毁掉东西。 我开始一个5GB的文件下载,它的工作原理。 我正在使用HTTPstream或分块我想这没有关系。 现在我的问题是,一旦我的REST下载终点被击中,TCP连接保持打开状态,并且由于它在服务器closures连接之前一直打开,这是因为群集负载平衡不会干扰? 简而言之,每当客户端请求HTTP调用时,群集负载均衡,但是一旦build立了TCP套接字,就像在特定下载示例的情况下一样,请求由一个节点服务,因为在下载过程中连接不被重新build立? 如果一个客户端打开一个Web套接字,它将击中服务正在运行的群集中的一个节点,并打开Websocket连接,同一个服务实例将推送通知? 如果由于某种原因WebSocket死亡,客户端可能会build立一个新的连接,但是请求可能以其他服务实例结束,并且将保持这种状态直到重新build立新的连接。 我的理解是否超过3分? 是否有一些阅读材料/博客我可以find更多详细说明这一点?

我需要单独的VIP为我的子域名吗?

我们将在我们的环境中拥有多个域名 主要url是:maven-qa.xx.com 子域名是:docker-local.maven-qa.xx.com,docker-registry.maven-qa.xx.com,docker.io.maven-qa.xx.com等 为了解决这个问题,我们得到了通配证书* .maven-qa.xx.com 我的问题是:我们需要创build单独的VIPS,使其工作或只是一个DNS条目* .maven-qa.xx.com负载平衡器IP将是足够的 请求正在通过负载均衡器 我问这个是因为我从artifactory中获取低于错误 root@vagrant:~# docker pull docker-registry.maven-qa.xx.com/busybox:latest Error response from daemon: Get https://docker-registry.maven-qa.xx.com/v2/: dial tcp 10.29.xxx.xx:443: getsockopt: connection refused

有关Kubernetes群集中的LoadBalancing的查询

我刚刚开始使用Kubernetes,并且对kubernetes负载均衡方法有一些疑问,无法在kubernetes文档中find明确的答案。 首先,让我们说我们已经创build了一个部署“iis”,并把它扩展到3个副本。 现在,如果不创build服务,我们如何访问这些端点? 现在,我们已经使用ClusterIP为这个部署创build了一个服务(有3个副本),所以它只能在集群中公开。 现在,该服务如何负载均衡在集群内传输到该服务的stream量? 它是使用循环法还是随机select端点? 根据kubernetes的文档,有2个服务代理,用户空间或iptables,我怎么知道我的服务使用哪一个? 接下来,我们使用LoadBalancer公开了这个服务。 它在云提供商上创build负载均衡器并使用它。 我的问题是,这个外部负载均衡如何平衡stream量到豆荚? 它是否将stream量平衡到服务和服务将其redirect到端点,还是将stream量直接平衡到端点(pod)? 此外,在这个LoadBalancer的情况下,内部stream量(来自集群内部)如何负载平衡? 请尝试给出详细的答案。

Docker群模式下服务副本之间的networking请求负载均衡

在群集模式下,Docker服务副本之间的负载均衡algorithm找不到任何文档。 我创build了一个基于Dockerfile的图像mynodeapp: FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app EXPOSE 8080 CMD [ "npm", "start" ] npm启动以下server.js : const LATENCY = 5000; var app = require('express')(); app.get('/', (req,res)=>{ console.log('Sending response'); setTimeout( function() { res.send('All ok'); }, LATENCY ); }); app.listen( 8080 ); 代码在延迟5秒后才发送All ok 。 […]