在一家公司,他们目前有一个典型的网络服务器设置:一个网络服务器和一个数据库服务器。不幸的是,由于网络服务器和数据库的高负载经常出现问题,所以我被要求使用 2 个网络服务器配置负载平衡。
然而,有人要求我将第二个网络服务器放在另一个公司站点(不同国家/地区)上,以尽量减少网络问题的影响。
这是一个好主意吗?由于重定向到这么远的网络服务器,这不会导致更多的网络问题吗?
我在 Google Cloud 网络负载均衡器后面(在虚拟机上)设置了 UDP 服务器。服务器绑定到0.0.0.0. UDP 服务器可以接收发送到平衡器的消息,但回复不会返回到客户端。没有报告任何错误,并且tcpdump没有显示任何异常情况。我已确保所有防火墙规则都允许此流量,并且负载均衡器设置为转发所有端口。
我绝不是网络专家,但我怀疑UDP 服务器出了问题,因为接收消息的地址与用于回复的地址不同 ( sendto())。
socketserver我正在使用标准库中的 Python 模块作为回显服务器来测试所有这些:
import SocketServer
class MyUDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
print "{} wrote:".format(self.client_address[0])
print data
socket.sendto(data.upper(), self.client_address)
if __name__ == "__main__":
HOST, PORT = "0.0.0.0", 5029
server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
虚拟机只有一个网络接口,具有本地IP 10.240.x.x。如果我将 UDPServer 绑定到该本地 IP,则该服务器甚至不会接收消息。
如果没有负载均衡器,一切都会正常工作,即消息会正确回显给客户端。
问题:我应该怎样做才能让我的 UDP 服务器回复消息?
编辑: 这个讨论可能是相关的。
networking load-balancing udp google-cloud-platform google-cloud-network-load-balancer
我有一个 api,在 https 中我会收到很多请求。由于它是restful,每次发送api时,都需要进行一次完整的ssl握手。启用 http-keepalive 后,请求的延迟大大降低(第一个请求需要相同的时间,但后续请求与 http 一样快)。
现在,我正在试验亚马逊的 elb(我还将使用云前沿)。我的问题是,如何在相同的设置中保持活动状态,来自客户端的请求可以随机路由到不同的机器?
还是根本不可能在每次发出请求时阻止 ssl 握手?
我对安全有一些担忧,想知道 AWS 将如何存储部署到 ELB 的 SSL 证书。我的域有一个通配符 SSL 证书,我想确保它不会在我不知道保护它的步骤的任何地方持续存在。
我正在尝试在通过 HTTPS 提供服务的 AWS 上设置一个非常简单的图像服务器。我所做的是在 T2-micro 上创建一个 nginx 服务器,该服务器使用我的图像代理到 S3 存储桶,并将其放在 ELB 后面。如果我把它放在 ELB 上,那个证书最终会在哪里保存?
作为旁注,AWS 是否真的支持将 SSL 卸载到 ELB 指向的实例?我发现在某些文档中这是可能的提示,但在该提示之外找不到任何其他内容。
我对虚拟 IP 如何实现故障转移有几个疑问。目标是实现 TCP 服务器上运行的服务的高可用性。
这个问题可以很容易地描述:
问题:
假设运行主服务器的机器 A 挂掉了。机器 1 上的虚拟 IP 软件如何工作?客户端是否需要重新连接才能重定向到机器 B 上的备份服务器?这台机器/连接切换是否透明发生?
虚拟IP是通过软件还是硬件实现的?您能给我提供我可以使用/测试的软件解决方案的示例吗?
虚拟 IP 软件是否存在单点故障?如果机器 1 死掉了会发生什么?虚拟 IP 软件本身是否具有某种故障转移/高可用性功能?
cluster failover high-availability load-balancing failovercluster
所以我有两个站点在运行,每个站点都在一个 Amazon ELB 后面。
出于这篇文章的目的(以及我公司的隐私),每个主机名都使用这些主机名:
两者都安装了证书。两个证书都是可信的(从 CA 购买)。
它们通过浏览器/等完美运行,并且在请求站点时使用正确的证书(ELB 的预期行为)。已通过各种浏览器和请求确认在访问每个站点时正在加载和验证适当的证书。
但是,在尝试使用 Nagios 监控证书到期时,我发现了一个奇怪的问题。
证书监控有效,但仅适用于 ELB 中的默认证书,无论正在访问哪个主机。
这是命令定义,标准设置:
define command{
command_name check_cert_expire
command_line $USER1$/check_http -S -H $HOSTADDRESS$ -C $ARG1$
}
Run Code Online (Sandbox Code Playgroud)
然后在主机/服务定义中:
define host{
host_name example.com
use docker-container
display_name Example Site 1
check_command check_https_page!/
}
define host{
host_name anotherexample.com
use docker-container
display_name Example Site 2
check_command check_https_page!/
}
define service{
host_name example.com
use generic-service
service_description Cert Expiry Site1
check_command check_cert_expire!45
}
define service{
host_name anotherexample.com
use generic-service
service_description …Run Code Online (Sandbox Code Playgroud) monitoring load-balancing nagios amazon-web-services amazon-elb
我正在将我们的 Web 应用程序的部署从 Azure 应用程序服务更改为应用程序网关后面的 VM,因为应用程序服务无法处理我们几天前的峰值负载。
我现在想要做的是保护应用程序免受可能的非常短的高峰使用的影响是实现速率限制(例如,每个客户端/IP 每分钟最多 60 个请求)。
预计该应用程序的使用高峰期非常短(售票应用程序并开始销售非常受欢迎的活动)。
上次出现峰值并且服务器变慢时,人们开始尽可能快地点击“刷新”并完全关闭整个系统而没有机会恢复(每秒有数千个请求,我们的系统无法启动再次,因为它并不是真正为如此高的负载而设计的,因为在 99.9% 的时间里,我们每秒有 <100 个请求) - 所以我们希望有可能避免此类用户对系统进行“DDoS”攻击”意外或因为害怕没有拿到他们的票”...
这可以使用应用程序网关吗?
任何其他想法如何实现这种(按需)速率限制?
我发现如下:https://docs.microsoft.com/en-us/azure/api-management/api-management-sample-flexible-throttling 但这似乎不适用于应用程序网关,或者至少我做到了不知道怎么...
web-applications load-balancing azure rate-limiting azure-networking
将通用 Web 应用程序代码共享到多个 Web 服务器的最佳方式是什么?
例如,我有一个包含用 PHP 编写的 Web 应用程序的目录。现在,我有多台机器可以提供相同的内容,每台机器都运行一个网络服务器,使用 TCP/IP 平衡器进行负载平衡。
对于这种情况,我还没有尝试过 NFS。但是根据Slow NFS transfer performance of small files,传输性能会很慢,因为涉及到很多[小]文件。
编辑:我想将所有文件集中存储在一个位置,因此网络服务器将立即读取代码更新。
我正在寻找可以完成以下任务的 DNS 软件:
这是我想到的等价物:
我很难相信已经没有什么可以完成上述任务了。我不是在寻找付费服务,而且我仅限于使用 VPS 的 root 访问权限可以运行的任何内容。任何建议都会很棒。谢谢!
domain-name-system failover high-availability load-balancing
我有一台 Windows Server 2003 SP2 服务器,它作为我的 testlab.com forrest 的活动目录运行。
我观察到“netlogon”服务经常自动停止,因为它导致无法使用 nwtwork 资源。
为此,我想为 AD 使用故障转移服务器,这意味着我将创建另一台服务器作为 ADC,然后将其配置到集群中,这样当 ADserver 出现故障时,ADC01 将自动上线。
是否可以?任何人都可以帮助实现这一目标吗?
更新:
我在 AD 中配置了 2 个站点
案例 1:假设一个站点没有正确复制,那么域用户将如何进行身份验证?另外我怎么知道用户正在哪个站点进行身份验证
案例 2:如果我持有所有 FSMO 角色的 AD 服务器由于某种原因关闭,在这个阶段我如何进行故障转移,即如何自动启用另一台服务器来持有所有 FSMO 角色和用户身份验证。
请注意 AD 和所有服务器都在作为操作系统的 Windows 2003 SP2 Enterprises 上运行。
windows-server-2003 active-directory failover load-balancing
load-balancing ×10
failover ×3
amazon-elb ×2
azure ×1
cluster ×1
google-cloud-network-load-balancer ×1
keep-alive ×1
monitoring ×1
nagios ×1
networking ×1
php ×1
security ×1
ssl ×1
udp ×1
web-server ×1