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 / 问题 / 100994
Accepted
Matt
Matt
Asked: 2010-01-09 13:29:56 +0800 CST2010-01-09 13:29:56 +0800 CST 2010-01-09 13:29:56 +0800 CST

CherryPy、负载平衡和远程故障转移

  • 772

我们公司目前面向客户的站点&内网站点目前是基于运行在IIS 6上的Classic ASP构建的。当前站点仅包含大约10个面向客户的页面,以及一个管理HR记录、调度等的内部站点。

管理层决定我们将使用这个重写项目来最终开发我们的在线零售店。他们希望我们使用地理上独立的设施(也在完全不同的 ISP 上)提供故障转移,以防我们主要设施的 WAN 链路出现故障。

我们选择 Python 进行重写是因为我们希望能够迁移到基于 Linux 的平台,并且我们目前在其他内部开发项目中使用 Python。

我们已经查看了各种 Python Web 开发框架,CherryPy 似乎很适合我们的需求,它是提供 Python 生成内容的最小环境。但是,我无法找到有关将 CherryPy 与负载平衡和故障转移技术结合使用的信息。

看来我们将被迫在 Apache 上托管 CherryPy,以利用支持粘性会话的故障转移/负载平衡集群。这是正确的,还是有办法使用 CherryPy 的内部服务器或完全不同的 HTTP 服务器来做到这一点?

此外,是否有服务提供一种方法来引导集群中的流量,以便我们不必自己托管它?我们需要能够在 2 个数据中心之间分配流量,但如果 WAN 链接在其中任何一个发生故障,它不会影响集群将流量引导到仍然可用的集群的能力。

load-balancing python web failover
  • 4 4 个回答
  • 2624 Views

4 个回答

  • Voted
  1. Best Answer
    cagenut
    2010-01-09T14:36:11+08:002010-01-09T14:36:11+08:00

    这有两个主要部分,
    - 跨多个数据中心
    的负载平衡和故障转移 - 跨数据中心内的多个服务器的负载平衡和故障转移

    实现多数据中心主要有三种方式:BGP/“任播”、GSLB/DNS,或在 CDN 中使用源故障转移机制。 没有一个是简单、容易或便宜的。

    一旦用户的流量从那里到达特定的数据中心,您就需要一个负载均衡器组件。这里有很多选项可以大致分为设备与软件和 layer4-vs-layer7。从你提供的细节来看,我敢打赌你的需求很简单,你的预算也很小,所以让我们直接跳到 nginx 这一部分。在 nginx 中,您可以将其配置为提供静态内容,并在您喜欢运行 python 应用程序时在尽可能多的后端服务器上对动态内容进行负载平衡。

    祝你好运,你已经开始了一条漫长的道路。

    • 1
  2. bear
    2010-01-09T19:54:40+08:002010-01-09T19:54:40+08:00

    您的问题中有很多子问题确实应该是他们自己的条目 - 但无论如何让我们解决它们......

    CherryPy 的“服务器”根本不应该在生产中使用,它非常适合开发,但您确实应该在 CherryPy 应用程序前使用 Nginx 和 Fastcgi 设置。这将使您更好地控制服务器的负载以及您需要运行多少个 CherryPy 应用程序来管理该负载。

    您对跨 ISP 的负载平衡的担忧让我认为您更担心冗余而不是负载平衡,因为您需要担心在不同数据中心之间保持所涉及的数据同步,这比如何在它们之间进行负载平衡更担心.

    根据您可以处理多少预算问题,决定使用硬件负载平衡器还是软件解决方案。如果您正在寻找冗余,您可以将服务器设置镜像到另一个站点,然后将您的 DNS 记录更改为指向该站点以防万一发生故障。其他任何事情都需要硬件解决方案,这些解决方案涉及上面提到的cagenut等首字母缩略词。

    • 1
  3. fumanchu
    2010-08-09T05:51:27+08:002010-08-09T05:51:27+08:00

    我们使用 ZXTM 对相同 CherryPy 节点的多个实例进行负载均衡。效果很好。

    最近的 CherryPy 版本(例如 3.0.4 和 3.2)包括对 WSGI 服务器的修复,以使其更加健壮。即使传入的请求队列已满(也就是说,如果所有工作线程都忙),以前的版本也会接受新连接并继续使用它们。现在,如果您希望立即拒绝它们,可以将 server.accepted_queue_timeout 设置为 0。立即关闭这些连接允许 ZXTM 尝试立即将连接传递到另一个节点。

    • 1
  4. Joris
    2010-08-09T11:40:48+08:002010-08-09T11:40:48+08:00

    你确定这是你需要的吗?向您的管理层询问可接受的停机时间,他们很可能会将标准降低到现实水平。两个完全独立的网站将您置于大男孩类别中,并提供相应的解决方案定价。

    也许您可以通过可靠的互联网合作伙伴找到定制解决方案?找人愿意在不同的机架(在不同的电源上)为您提供 colo,在两个接入交换机到两个核心路由器到两个非常不同的上行链路。

    • 1

相关问题

  • 网络负载平衡服务器无法相互通信

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • 防止拒绝服务攻击的最佳技术是什么?

  • 添加备份互联网连接需要哪些硬件?

  • 什么是最有效的 Windows 负载平衡解决方案?

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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