使用Vsphere和Apache加载群集

我正在看Vsphere自动负载平衡我的Apache Web服务器和MySQL服务器,但这实际上会做这项工作?

我知道它说自动负载平衡,但实际上并不确定它意味着我想要达到的目的。

有没有更容易的方法来build立一个虚拟机内的PHP-Apache和MySQL集群?

还是有任何指导聚类? (我试过Googlesearch没有太多的运气)

任何帮助理解/设置虚拟机内的群集和负载平衡表示赞赏。

vSphere做什么:

  • 集群 – DRS =在多个主机上运行多个虚拟机,vSphere将自动决定哪个主机移动正在运行的虚拟机
  • 高可用性=在多个主机上并行运行guest虚拟机 – 如果发生故障 – 第二个确保服务可用性

MySQL集群 – 不容易,不能在这里描述细节,但一般来说:

  • 取决于数据库引擎(MyISAM,InnoDB,XtraDB)
  • 非常有限
  • 共享存储 – 大多不可能
  • 使用复制更容易实现单个写入和多个读取节点

Apache / Web负载平衡,最佳configuration:

  • networking级别 – TCP负载平衡,至less需要1个平衡器节点才能正常运行,2个HA(主动备份)。 通过Linux虚拟服务器(LVS)内核模块实现:
    • 食人鱼网页graphics用户界面(RHEL和Fedora)(足够容易实现)
    • KEEPALIVED
    • UltraMonkey
    • Linux的HA
  • OS级别 – networkingconfiguration,网关,ARPconfiguration(LVS-DR),将全局IP分配给本地主机(127.0.0.1 – LVS-NAT)。
  • 应用级别
    • Apache级别 – 无需更改,只需保持其在端口80上运行,以便应用程序可以看到自己(环回请求)
    • PHP级别 – 会话,tmp也必须在节点之间共享
    • 使用运行在套接字和端口监听模式下的mysql-proxy,将请求转发到mysql服务器
  • 存储级别 – Web服务器之间的数据必须以非常快的速度共享,例如GlusterFS

LVS的性能相当高 – 它是内核级的,双核1.6 GHz在NAT模式下可以运行超过千兆,并且防止了许多networking级的问题。 虚拟IP将由LB服务器在L2上进行,请求将由内核转发到可能具有相同IP(LVS-DR)或NAT(LVS-NAT)的服务器IP。 LVS-DR在服务器端需要特定的arpconfiguration,因为所有服务器都将运行相同的IP。 LVS-NAT的实现更容易,你可以负载平衡你想要的任何服务器的一切。 要正常使用LVS-NAT,请使用内核2.6.37或更高版本。 平衡器也可以作为网关和防火墙。 必须设置连接持久性以避免一些问题(请参阅LVS文档),并且内核TCP超时必须设置为最小值。 你还必须编写脚本来检查主机的可用性 – 如果工作正常或没有。 尝试在networking节点上具有100%的相同configuration。

全球范围内 – 这是非常好,非常有效和最佳的体系结构,但将需要一些调整后。 瓶颈是存储响应和MySQL。 php-apache HA / Balancing理想地工作。

鱿鱼,mod_proxy_balancer,HAproxy等是用户级的应用程序,无效和愚蠢的:

  • Squid可以用作代理或反向代理(更好地使用Varnish)来进行HTTP终止或/和安全性过滤。 您可以将其添加到每个Web服务器上,并在内部转发请求以隐藏您的Web服务器信息等,此外还需要mod_extract_forwarded以保持源服务器和应用程序正确识别源IP。
  • mod_proxy_balancer它只是另一个“无事可做 – 我写了apache模块”的东西在这种情况下。
  • haproxy是非常愚蠢的事情 – 应用程序听港口,并启动后端的要求 – 我讨厌它。

你可以玩RedHat集群套件,并获得文件共享(GFS2等)的一些改进,在那里有应用程序HA,但将需要从你身边更多的努力。

对于平衡节点 – 我严格推荐Fedora 15或更高版本(更新的内核 – 更好)。 对于其他 – 无论你想要的,甚至Windows(但会有一些回环http访问问题)。

另外,我build议您在存储networking方面使用基于LACP的绑定。

这不是你正在寻找的解决scheme。 vSphere集群是关于保护整个虚拟机,而不是那些虚拟机上的应用程序,您需要一个负载均衡器来实现这一点,像Cisco ASA / F5套件一样,Squid / HA代理一样简单。