AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 411530
Accepted
Albert
Albert
Asked: 2012-07-27 09:40:45 +0800 CST2012-07-27 09:40:45 +0800 CST 2012-07-27 09:40:45 +0800 CST

服务器配置以提高性能并为带有 SQL Server 的 ASP.NET 站点提供冗余

  • 772

我正在管理一个相当大的网站(目前每天大约有 30 万页浏览量),预计会快速增长。目前 IIS 和 SQL Server 都在四核服务器上运行,具有 RAID 10 SAS 硬盘驱动器和 32 GB RAM。功能较弱的服务器配置为冷备份。数据库每天同步,站点文件也每天移至备份服务器。万一主服务器出现故障,该站点可以在几个小时内重新启动,但这并不理想。我正在寻找可以提供的解决方案:

  • 改进的性能。将来有必要创建一个网络场来处理请求,所以我需要为此做好计划。
  • 冗余。如果一台服务器出现故障,该站点不应出现故障。
  • 备份。数据很关键,因此 SQL Server 配置应该确保我们不会丢失早于 1 天的数据(如果最后一天的数据丢失也没什么大问题)

此外,该解决方案应包括灾难恢复。如果数据中心着火了,我们需要一个解决方案来在一天之内恢复在线(我们正在考虑在我们的本地服务器中保留数据和站点的副本,但我们需要一种方法来使过程尽可能自动化。主服务器托管在德国的数据中心)。

数据库是 50GB+ 而 Web 应用程序相当小。

sql-server
  • 2 2 个回答
  • 363 Views

2 个回答

  • Voted
  1. Best Answer
    mrdenny
    2012-07-27T09:55:01+08:002012-07-27T09:55:01+08:00

    这一切听起来都很标准。对于数据库部分,我将在此处假设 SQL Server 2008 R2 或 SQL Server 2012。

    您需要做的第一件事是从 SQL Server 中取出 IIS 并将其放到它自己的机器上。您还需要将某种负载平衡器放在网络场前面。我会推荐 F5 或 Cisco 之类的东西,但如果你家里有 Linux 人员,你可以使用基于 Linux 的负载均衡器。一旦你有了负载均衡器,因为你需要扩展网络场,这样做就很容易了。您只需购买另一台服务器,像往常一样配置它,然后将其添加到负载均衡器中的场。

    至于 SQL HA,您可能需要查看 SQL Server 数据库镜像。如果您有 SQL Server 企业版,这将在本地数据中心为您提供两台服务器(尽管您可以将它们放在不同的数据中心)并自动进行故障转移。

    设置备份以从数据中心复制到您的办公室并不难。只需设置站点到站点 VPN 并通过网络复制文件。带宽和延迟成为此时唯一的问题。

    您的 DR 要求将是最难的部分。要求您在不到一天的时间内恢复并运行意味着您需要与另一个数据中心签订合同,并且您需要在该数据中心已有服务器。如果没有这些设备,您将永远无法在一天内实现站点恢复和运行的目标,因为仅仅获得新服务器可能需要数周时间(或更长时间,具体取决于灾难的严重程度,因为您不是唯一的人)人们试图购买新服务器)。

    在 Web 服务器站点上,DR 很容易。只需将 DNS 服务器指向 DR 站点的公共 IP。

    对于 SQL Server 方面的事情,您可能希望查看从主站点到 DR 站点的事务日志传送。如果您想要更简单的配置,请查看 SQL Server 2012 的 AlwaysOn 可用性组。他们将执行自动故障转移、同步和异步数据复制等。AlwaysOn 可用性组确实需要 Active Directory 域,因此您需要先考虑获得该设置。

    如果您还没有注意到,DR 既不便宜也不简单。

    • 4
  2. Henrik
    2012-08-03T14:03:02+08:002012-08-03T14:03:02+08:00

    有关 SQL Server 的更多信息:

    MS 出版了许多免费书籍,其中一本名为Microsoft SQL Server AlwaysOn 高可用性和灾难恢复解决方案指南。

    您将在此处找到更多技术指导。

    事实证明,在 Windows 上备份并不像在 Linux 上那么容易。


    高可用性

    一般来说,您可以为网站做这些事情:

    • 让你的网站无状态;他们不应该使用会话状态或视图状态——这会使可伸缩性复杂化。相反,让 URL 决定显示什么;通过避免共享状态,您可以有效地使用缓存,例如前面的 NGINX,它讲的是跨平台 HTTP:
    • 使用 HTTP 进行缓存——不要使用“memcached”、“varnish”或“MS Velocity”——因为如果可以避免,你不想要应用程序缓存——这是一个拐杖。但是,为了使用 HTTP 正确缓存,您需要 ETag 或 Last-Modified 标头,并且您需要修复以便 ASP.Net 正确返回 304 Not Changed 对于实际上没有更改的动态页面 - 这可能涉及一些纠正性编程.
    • 如果出于遗留原因或其他原因确实需要状态,请考虑编写自定义状态提供程序。我可以推荐使用 NoSQL 键值存储作为支持故障转移/节点故障和键过期的后端。我推荐具有此类功能的优秀Riak。如果您随后添加更多不支持 Microsoft 的应用程序,您仍然可以使用 Riak HTTP 接口。请记住使用众所周知的东西进行序列化,例如 BSON 或 MessagePack。通过这种方式共享状态,您仍然可以在分发所有会话状态的同时扩展您的网站。

    一般来说,你可以为数据做这些事情:

    • 开始将单一的大型应用程序分离成具有独立存储的单个应用程序——通过这样做,您可以更明智地选择如何将数据移动到冗余数据中心或服务器。
    • 您可以采用一种非常容易分布式的编程方式,例如使用 CQRS 风格编写具有事件和实体事件源的域逻辑。不过,这需要您的程序员提供一些帮助。
    • 在此答案中从异步复制开始(请参阅最上面的部分)。
    • 开始编写 Sagas 来处理由多个真实来源引起的不一致(例如,在网络分裂的情况下,或在数据库中的同一版本行上单独读取)
    • 开始转向更容易实现 HA 的数据存储 - 例如 Riak 或 Cassandra。

    祝你好运!

    • 0

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve