我想使用Amazon Elastic Load Balancer将WebSocket连接代理到多个node.js服务器.由于Amazon ELB不提供实际的WebSocket支持,我需要使用其vanilla TCP消息传递.但是,我试图了解如果没有某种粘性会话功能,这将如何工作.
我知道WebSockets的工作方式是首先从客户端发送HTTP升级请求,该请求由服务器通过发送正确处理密钥身份验证的响应来处理.在服务器发送该响应并且客户端批准后,该客户端与服务器之间存在双向连接.
但是,假设客户端在批准服务器响应后将数据发送到服务器.如果它将数据发送到负载均衡器,然后负载均衡器将该数据中继到不处理原始WebSocket升级请求的其他服务器,那么这个新服务器将如何知道WebSocket连接?或者客户端是否会自动绕过负载均衡器并将数据直接发送到处理初始升级的服务器?
我收到以下错误
ERROR 2013 (HY000): Lost connection to MySQL server at
'reading authorization packet', system error: 0
Run Code Online (Sandbox Code Playgroud)
当试图连接到我的MySQL服务器.
我在做什么:
但是当我尝试使用配置了F5的IP连接到我的MySQL服务器时,我得到了
ERROR 2013 (HY000): Lost connection to MySQL server at
'reading authorization packet', system error: 0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新我的进度:ZERO
- 我收到相同的错误我在/ var/log/secure中没有条目,好像有人会尝试验证来自我创建负载均衡服务器的ip.
没有引入mysql错误日志.
命令 - 什么都不返回
mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connections';
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我已经改变了我的my.cnf文件并添加了
[mysqld]
skip-name-resolve
Run Code Online (Sandbox Code Playgroud)
Alterd的connect_timeout到10
这样看来,我得到了我对我的F5创建的服务器没有回应
,我终于说服了F5管理员递给我在日志中F5服务器和我exctraced所有我需要形成的.
这是输出:
Jan 28 15:46:39 tmm debug tmm[6459]: Rule /Common/iRule-f5_mysql_proxy <CLIENT_ACCEPTED>: BIG-IP MySQL Proxy -- …Run Code Online (Sandbox Code Playgroud) 任何人都可以解释VM负载平衡(在新的Azure门户中)和Azure流量管理器(目前仅从旧门户管理)之间的区别,以及它们如何交互?
作为一个例子,我创建了两个相互连接的虚拟机,共享一个负载均衡的端点.据我了解,那将在两个虚拟机之间进行循环.
更新:请参阅我在下面提供的答案,了解我最终在AWS上设置的解决方案.
我目前正在尝试使用有关如何在Digital Ocean上为我的应用服务器最佳实现全局负载平衡层的方法,还有一些我尚未整理的部分.
目标
通过将所有连接路由到SFO,NYC,LON和最终新加坡最近的"服务器集群",为我的用户提供高可用性服务.
另外,我最终希望通过编写一个可以监视,扩展和修复系统上任何服务器的守护程序来自动维护它.或者我将结合各种服务来实现相同的自动化目标.首先,我需要弄清楚如何手动完成.
堆栈
全球域名细分
一旦我完成了所有工作,我的域名将如下所示:
**GLOBAL**
global-balancing-1.myapp.com
global-balancing-2.myapp.com
global-balancing-3.myapp.com
**NYC**
nyc-load-balancing-1.myapp.com
nyc-load-balancing-2.myapp.com
nyc-load-balancing-3.myapp.com
nyc-app-1.myapp.com
nyc-app-2.myapp.com
nyc-app-3.myapp.com
nyc-api-1.myapp.com
nyc-api-2.myapp.com
nyc-api-3.myapp.com
**SFO**
sfo-load-balancing-1.myapp.com
sfo-load-balancing-2.myapp.com
sfo-load-balancing-3.myapp.com
sfo-app-1.myapp.com
sfo-app-2.myapp.com
sfo-app-3.myapp.com
sfo-api-1.myapp.com
sfo-api-2.myapp.com
sfo-api-3.myapp.com
**LON**
lon-load-balancing-1.myapp.com
lon-load-balancing-2.myapp.com
lon-load-balancing-3.myapp.com
lon-app-1.myapp.com
lon-app-2.myapp.com
lon-app-3.myapp.com
lon-api-1.myapp.com
lon-api-2.myapp.com
lon-api-3.myapp.com
Run Code Online (Sandbox Code Playgroud)
然后,如果有任何给定层上的任何应变,在任何给定的区域,我就可以旋转了一个新的液滴助阵:nyc-app-4.myapp.com,lon-load-balancing-5.myapp.com,等...
现行工作方法
(最少)三个global-balancing服务器接收所有流量.这些服务器是$geoip_city_continent_code平衡的,如本文(坦率地说令人困惑)文章所示:如何配置DNS循环负载平衡.
使用Nginx GeoIP模块和
MaxMind GeoIP数据
,任何给定请求的来源都将确定为
global-balancing.
所述load-balancing然后层将请求路由到nyc-load-balancing-1所述服务器上 …
希望是一个简单的问题.如果之前已经报道过,我道歉.我正在学习haproxy,整体看起来非常简单明了.但是我很好奇使用前端/后端和listen配置块之间的区别是什么?我的假设是,对于基本配置,listen更简单,而前端/后端更高级,允许您动态切换后端或共享后端等.这是简单的吗?
谢谢,
人
我有一个在Google Compute Engine上运行的Kubernetes集群,我想为我的外部服务(type: LoadBalancer)分配静态IP地址.我不确定此刻是否可行.我在该主题上找到了以下来源:
我觉得在设置Web服务时使用静态IP非常重要.我在这里错过了什么吗?如果有人能在这里开导我,我将非常感激!
编辑:澄清:我没有使用Container Engine,我自己使用Compute Engine的官方安装说明设置了一个集群.与我的k8s服务相关联的所有IP地址都标记为"临时",这意味着重新创建kubernetes服务可能会导致不同的外部IP地址(这就是我需要它们为静态的原因).
我正在AWS上运行节点/快速服务,并在其前面部署了一个ELB.当我启用启用了SSL的ELB实例时,它适用于我点击的第一个页面,但之后会为每个服务器访问切换到HTTP.
ELB上的路由规则终止SSL并转发到节点正在侦听的端口8080.
SSL终止解决方案适用于我的目的,但如何在HTTPS上保留后续服务器调用?
我在几个上游应用服务器前面使用nginx作为负载均衡器,我想设置跟踪ID以用于将请求与应用服务器日志相关联.在Nginx中做到这一点的最好方法是,有一个很好的第三方模块吗?
否则一个非常简单的方法是将它从时间戳(可能加上一个随机数,如果它不够精确),并在请求上设置为额外的头,但我在文档中看到的唯一的set_header命令是设置一个响应标题.
我是Dockers和容器的新手.我正在浏览docker的教程,并发现了这些信息. https://docs.docker.com/get-started/part3/#docker-composeyml
networks:
- webnet
networks:
webnet:
Run Code Online (Sandbox Code Playgroud)
什么是网络?该文件说
指示Web容器通过称为webnet的负载平衡网络共享端口80.(在内部,容器本身将在短暂的端口发布到Web的端口80.)
那么,默认情况下,覆盖网络在docker集群中是负载均衡的?什么是负载平衡算法使用?
实际上,我不清楚为什么我们在覆盖网络上进行负载平衡.