问题标签 [server-farm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2665 浏览

asp.net - ASP.NET网站使用状态服务器时如何避免单点故障

在我当前的项目中,我们必须创建一个网站(ASP.NET MVC),它可能有足够的负载来要求一个服务器场。我知道如果使用服务器场,会话状态必须存储在其他地方,例如 SQL 服务器数据库或状态服务器。

经过一些实验,我们倾向于使用状态服务器机制,但它会出现单点故障,这让我很紧张。使用状态服务器时,有什么方法可以避免“单点故障”?

0 投票
1 回答
1006 浏览

asp.net - Web 场中的 Windows 服务(如何防止并发冲突)

展望未来,何时创建网络农场......

我们有各种 Windows 服务应用程序执行各种后台任务:发送电子邮件、缩略图/处理文件等。

在服务器场环境中,理论上我们可以在每台机器上安装和运行每个服务,但是由于基于业务对象的“先写双赢”或不希望的任务重复,例如:发送相同的电子邮件,可能会出现冲突。次。

可以通过解决问题或跳过项目的代码或逻辑来克服“先写获胜”的情况。(如果它是一个基本的排队机制(查询列表和进程记录),它将再次尝试)

对于任务的重复,可以在事务中执行任务以防止其他进程抢占相同的资源,但是我猜他们只会等待,我们需要根据再次发生的事情来处理一些登录?会是这样吗?

为了防止重复任务,我正在考虑建立一些机制,将“锁定标志”写入数据库,该标志将由启动的第一个服务设置。此标志将注明日期并引用服务实例。“拥有”标志的服务将运行任务并定期更新此日期。在服务不拥有标志的情况下,每个服务也会有一个超时/容差设置,它会检查容差并在需要时接管。

这听起来像是一个合理的解决方案,还是应该在那个阶段采用更好的基于消息队列的解决方案(也不确定这在农场环境中如何工作?

技术:C# / ASP.NET / SQL Server

0 投票
3 回答
66 浏览

architecture - 在农场中共享定期任务的最佳策略

我这里有个问题。假设您有一项业务定期任务,例如每月生成余额。该任务可以在场中运行,因此如果运行定期任务的计算机失败,则必须将其传递给另一台计算机。

那么,我如何才能坚持定期任务并使其在农场安全?我曾在一个持久和共享的队列中思考过,但我很困惑。

有任何想法吗?

提前致谢。

0 投票
6 回答
10329 浏览

php - PHP $_SERVER['SERVER_ADDR'] 变量总是返回 127.0.0.1

我们有多个负载平衡的 webserver 机器运行相同的 PHP webapp ( LAMP ),我想在每台服务器上运行稍微不同的代码(用于测试目的)。我希望使用$_SERVER['SERVER_ADDR']超级全局来做这样的事情:

不幸的是,这不起作用,因为两台机器都设置$_SERVER['SERVER_ADDR']为“ 127.0.0.1 ”。如何配置它们以便$_SERVER['SERVER_ADDR']设置为它们的公共 IP 地址?

我猜这个问题可能与参考/etc/hosts有关,它目前看起来像这样:

更新...

哎呀!我忽略了考虑Web 服务器前面的nginx反向代理。由于 nginx conf 中的以下行,到这些 Web 服务器的所有流量都来自 nginx:

0 投票
2 回答
383 浏览

sql - 版本化 sql 查询

我有一个服务器场,每台服务器都会定期对数据库进行相同的查询。这些查询结果缓存在共享缓存中,可供所有服务器访问。

如何确保较新的查询不会被较旧的查询覆盖?有没有办法以某种方式对查询进行版本控制,例如按时间,这样就不会发生这种情况?如何处理并发查询?

谢谢!

编辑: db 是 SQL Server。查询是一个选择语句。而且,缓存机制非常简单:简单的写入,没有锁定。那是因为目前没有办法告诉选择查询的顺序。

0 投票
1 回答
1519 浏览

automated-tests - MsTest noob - 如何以正确的方式设置测试基础设施

我们是一家拥有影响深远的 MSDN 许可证的 MSFT 商店。

经过多年做错事,我们终于要开始做自动化测试了。我的小组是豚鼠。我们需要创造以前没有的东西。我们查看了那里的众多选择。有些人使用开源替代品(例如CC.Net, Bamboo,MbUnit等)过得很好。我们想给MsTest, CodedUI,Team Build一个很好的尝试……也可能因为 MSDN 许可和 MSFT 关注。

以 MSFT 方式做事的优点和缺点在于,MSFT 做的是单一的事情。您必须安装各种可以很好地相互配合的工具,但与局外人 - 不一定。好处是,当事情做得正确时,它应该会运行得相当顺利。可以选择门控签到、使用 TFS 存储报告等。

坦率地说,我对所有选项感到困惑。我们的传统构建系统是与一堆 perl、批处理脚本、可执行文件一起被破解的,但现在构建团队切换到 Team Build,它应该更干净,但在大多数情况下,它只是对相同的旧 perl 垃圾的包装.

我也倾向于将东西拼凑在一起进行测试,因为我至少可以看到这些部分是什么。因此,我将穷人的版本设想为: * 一台运行测试的专用快速计算机 * 一些脚本将构建文件(测试代码和产品代码)复制到该计算机。* 一个批处理/perl 脚本,它将从命令行运行 mstest.exe 并在某些测试 dll 中的某些按类别过滤器上执行一些测试批处理(产品非常庞大,我们确实希望按各种类别组织测试)。* 一些脚本将使用 psexec.exe (http://technet.microsoft.com/en-us/sysinternals/bb897553) 从构建服务器远程调用后一个脚本,以及从共享驱动器获取 xml 输出,然后向有兴趣的人发送一封包含结果的电子邮件。

这可能可行,但我不得不担心错误处理如何处理这么多潜在的故障点。以“正确的方式”配置东西会很好,利用 MSFT 已经制作的任何东西。我只是不确定在哪里可以找到一个好的指南。你做过这样的事情吗?

最终,如果我们用完了分配的时间,我们将希望拥有一个测试计算机场。其他值得关注的事情是 - 为了使编码的 ui 测试成功,我认为用户必须登录,所以我不确定 psexec 是否会在这里有很大帮助。

你能分享你的正面/负面经历吗,也许给我一个好的指南?谢谢!

0 投票
1 回答
892 浏览

networking - 模拟复杂的生产 Web 开发环境的最佳方法是什么?

我想为开发中的 Web 服务创建一个适度可扩展的开发环境。

理想情况下,应该有一个带有 haproxy 的 nginx web 服务器和一些数据库服务器、websockets 等。

我会为所有这些托管使用亚马逊云服务……但我宁愿在开发时不为 CPU 周期付费……更不用说在远程云环境上开发了。

在本地建模一个有点复杂的开发环境的最佳方法是什么?希望只需按一下按钮,就可以与类似架构的亚马逊云环境同步?

我只有我的 Macbook Pro。我的壁橱里还有一台完整的 1Ghz 塔式计算机,如果需要,我可以利用,并且不会反对购买更多。但是,最终,我希望能够以最少的步骤和重新配置同步到生产环境。

谢谢!

0 投票
2 回答
497 浏览

asp.net-mvc-2 - MVC 表单身份验证 - 我如何处理服务器场上的托管?

我正在寻找有关此主题的一些清晰度。

我正在寻找一个主机来托管我的网站,该主机将通过一组服务器对我的网站进行负载平衡。

由于我的 MVC 站点使用表单身份验证,我假设每个服务器都能够对客户端发送的身份验证 cookie 进行身份验证会出现问题。

从其他帖子中-我了解每个服务器都需要相同的机器密钥-如果需要,则每个服务器都可以读取身份验证cookie。

我需要澄清的是 - 我可以在我的 MVC 应用程序 web.config 文件中处理(或者,我想处理)这个吗?如果我在 web.config 中指定一个机器密钥(我目前正在做的事情) - 我假设这将是用于生成 auth cookie 并读取 auth cookie 的密钥。由于每个服务器都会有网站的 web.config 的副本,所以我认为用户发送的 cookie 可以被任何服务器读取。

我错过了什么?

在我的本地计算机上,我可以使用相同的 cookie 从站点的 VS 开发服务器版本转到站点的本地主机版本,并在两者上进行身份验证。(似乎是类似的场景)

我相信这篇文章告诉我我的想法是正确的,但希望在返回托管服务提供商之前获得更多信息 -跨多个服务器的表单身份验证持久

任何对此的见解以减轻我的无知将不胜感激。

感谢:D

0 投票
1 回答
839 浏览

msmq - 服务器场中的 MSMQ

我们正在考虑在我们的应用程序中使用 MSMQ 作为消息处理服务。我们想要的是 - 位于网络负载均衡器 (NLB) 后面的服务器场中的 MSMQ,它在节点之间分配负载。我有以下问题,我在网上找不到任何指示。

1) 我是否需要在所有节点中安装 MSMQ?
2) 如果是这样,当发送方应用程序向 MSMQ 发送消息时,它应该发送到所有节点吗?
3)如果我的第二个问题的答案是肯定的,那么当客户端应用程序接收到消息时,应该如何通知其他节点有关客户端接收到的消息并随后从它们中删除?

将不胜感激任何帮助/指针。

0 投票
1 回答
291 浏览

asp.net-ajax - 未找到登打士海图文件

我正在查看一个遗留系统,发现 Dundas 图表经常抛出一个文件未找到异常,但并非总是如此。

系统有多个服务器接收请求,因此它设置了 Dundas 使用服务器场配置(由 dundas支持推荐)运行,如下例所示:

很多时候找不到图表图像,我感觉这与多台服务器有关。

我的图表具有以下属性:ajaxzoomenabled="true" callbackstatecontent="All"

服务器运行 IIS6,我们的 NBL 关联设置为不使用关联:

没有亲和力

如果没有关联,NLB 不会将客户端与特定成员相关联。每个客户端请求都可以负载平衡到任何成员。此亲和性提供最佳性能,但可能会中断已建立会话的客户端,因为后续请求可能会负载平衡到会话信息不存在的其他成员。

有什么建议么?

问候。