基于Ubuntu 8.04 LTS的负载平衡高可用性Apache群集的设计
请注意,我的主要参考资料和来源是Falko的文章,刚刚修改为Ubuntu 8.04 LTS。 还有一些部分是从Falko的文章“The Perfect Server - Ubuntu 8.04 LTS”中获得的。
版本1.0
作者:Mohamed Ghaleb <Mohamed_Ghaleb [at] msn [dot] com>(仅英文和德文)
本教程将介绍如何设置提供高可用性的双节点Apache Web服务器集群。 在Apache集群的前面,我们创建了一个负载平衡器,可以在两个Apache节点之间拆分传入的请求。 因为我们不希望负载平衡器成为另一个“单点故障”,所以我们也必须为负载平衡器提供高可用性。 因此,我们的负载平衡器实际上由两个负载平衡器节点组成,它们使用心跳
监视彼此,并且如果一个负载平衡器发生故障,则另一个负载平衡器以静默方式接管。
与使用循环DNS相比,使用负载均衡器的优点是它负责web服务器节点上的负载,并尝试以较少的负载将请求定向到节点,并且还负责连接/会话。 许多Web应用程序(例如论坛软件,购物车等)会使用会话,如果您在Apache节点1上的会话中,则如果节点2突然发出请求,您将丢失该会话。 除此之外,如果其中一个Apache节点出现故障,则负载平衡器会将所有传入的请求都指向剩余的节点,这将不可能使用循环DNS。
对于此设置,我们需要四个节点(两个Apache节点和两个负载平衡器节点)和五个 IP地址:一个用于每个节点,一个虚拟IP地址将由负载平衡器节点共享并用于传入的HTTP请求。
我将在这里使用以下设置:
- Apache节点1:
webserver1.tm.local
(webserver1
) - IP地址:192.168.0.103
; Apache文档根目录:/ var / www
- Apache节点2:
webserver2.tm.local
(webserver2
) - IP地址:192.168.0.104
; Apache文档根目录:/ var / www
- 负载均衡器节点1:
loadb1.tm.local
(loadb1
) - IP地址:192.168.0.101
- 负载均衡器节点2:
loadb2.tm.local
(loadb2
) - IP地址:192.168.0.102
- 虚拟IP地址:
192.168.0.105
(用于传入请求)
看看http://www.linuxvirtualserver.org/docs/ha/ultramonkey.html上的图纸,了解这个设置如何。
在本教程中,我将为所有四个节点使用Ubuntu 8.04 LTS ,只需在所有四个节点上安装基本的Ubuntu 8.04 LTS。
我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
我也建议你有一个DNS服务器到位。
应在所有四台服务器上完成第1步至6。
1启用根帐户
跑
sudo passwd root
并给root一个密码。 之后,我们通过运行成为根
su
2安装SSH服务器
如果在系统安装期间未安装OpenSSH服务器,则可以立即执行:
apt-get install ssh openssh-server
从现在开始,您可以使用SSH客户端(如PuTTY) ,并从工作站连接到Ubuntu 8.04 LTS服务器,并按照本教程中的其余步骤操作。
3安装vim-full
我将在本教程中使用vi
作为我的文本编辑器。 默认的vi
程序在Ubuntu和Debian上有一些奇怪的行为; 要解决这个问题,我们安装vim-full
:
apt-get install vim-full
(如果您使用其他文本编辑器(如joe或nano),则无需执行此操作。)
4配置网络
由于Ubuntu安装程序已将系统配置为通过DHCP获取其网络设置,因此,由于服务器应具有静态IP地址,因此我们必须进行更改。 编辑/ etc / network / interfaces并根据需要进行调整(在这个例子中,我将使用IP地址192.168.0.101
):
vi /etc/network/interfaces
# This file describes the network interfaces available on your system |
请确保您的网络配置设置正确,随时根据您的网络配置进行更改。
然后重新启动您的网络:
/etc/init.d/networking restart
然后编辑/ etc / hosts
。 看起来像这样:
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost |
现在跑
echo loadb1.tm.local > /etc/hostname
/etc/init.d/hostname.sh start
之后运行
hostname
hostname -f
两者都应该显示loadb1.tm.local
。
如果您有DNS服务器(推荐),请确保配置了4台服务器,如果您没有DNS, 请点击此处
vi /etc/resolv.conf
search tm.local |