首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为多个虚拟主机(apache)设置负载均衡器

如何为多个虚拟主机(apache)设置负载均衡器
EN

Stack Overflow用户
提问于 2015-02-22 20:44:36
回答 1查看 9.7K关注 0票数 4

我正在尝试为apache服务器上的几个虚拟主机设置一个负载均衡器。通过为文件“C:\Windows\System32 32\drivers\etc\host”添加以下行来添加这些虚拟主机:

代码语言:javascript
复制
127.0.0.1       localhost
127.0.0.1       vhosta
127.0.0.1       vhostb
127.0.0.1       vhostc
127.0.0.1       load-balancer
::1             localhost

然后,我为文件"C:\xampp\apache\conf\extra\httpd-vhosts.conf":添加了以下行

代码语言:javascript
复制
<VirtualHost *:80>
  DocumentRoot c:/xampp/htdocs
  ServerName localhost
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot c:/vhosts/vhosta
  ServerName vhosta
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot c:/vhosts/vhostb
  ServerName vhostb
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot c:/vhosts/vhostc
  ServerName vhostc
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot c:/vhosts/load-balancer
  ServerName load-balancer
</VirtualHost>

当然,我已经在C:/vhost/中创建了文件夹,并在每个文件夹中添加了一个index.php文件(其中包含一个回显语句)。

现在,我可以通过浏览器访问"http://vhosta“等虚拟主机。

但是我需要做一个负载均衡器,它选择执行"http://vhosta“、"http://vhostb”或"http://vhostc“。

我怎样才能做到这一点?到目前为止,我做的一切都正确吗?

任何帮助都将不胜感激!提前感谢!

(我在Windows8.1上使用xampp。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 23:34:11

要做到这一点有很多方法,但是你想要做的事情是行不通的。/etc/ host是IP进行主机名映射的基本方式。如果您想要循环分辨率,您将不得不使用DNS服务器。此外,除了学习和配置测试之外,在同一台机器上负载平衡也没有多大意义。

这些是你的一些选择。

1)使用mod_proxy_balancer。您需要启用mod_proxy和mod_proxy_balancer模块。另外,您还需要选择一个调度程序算法。选项有: mod_lbmethod_byrequests、mod_lbmethod_bytraffic、mod_lbmethod_bybusyness和mod_lbmethod_heartbeat。

balancer.html

代码语言:javascript
复制
<VirtualHost *:80>
  ...

  ServerName load-balancer

  <Proxy balancer://mybalancers>
    BalancerMember http://vhosta:80
    BalancerMember http://vhostb:80
    BalancerMember http://vhostc:80
  </Proxy>
  ProxyPass / balancer://mybalancers
  ProxyPassReverse / balancer://mybalancers

  ...
</VirtualHost>

2)使用DNS循环选项。您需要将多个IP指向同一个主机名。使用此选项,当您向负载均衡器主机发出请求时,DNS服务器将为您提供下一个IP (以循环方式)。

DNS配置

代码语言:javascript
复制
load-balancer        IN            A       10.0.0.1
load-balancer        IN            A       10.0.0.2
load-balancer        IN            A       10.0.0.3

apache服务器的虚拟主机

代码语言:javascript
复制
<VirtualHost 10.0.0.1:80>
  DocumentRoot c:/vhosts/vhosta
  ServerName load-balancer
</VirtualHost>

<VirtualHost 10.0.0.2:80>
  DocumentRoot c:/vhosts/vhostb
  ServerName load-balancer
</VirtualHost>

<VirtualHost 10.0.0.3:80>
  DocumentRoot c:/vhosts/vhostc
  ServerName load-balancer
</VirtualHost>

还有一件与主机文件有关的事。如果您想将回送IP映射到主机名,可以自由使用整个范围,从127.0.0.0到127.255.255.255。我很确定这是在Windows中映射的,但我没有办法测试它。要进行测试,只需ping 127.1.2.3,并查看返回的内容。

http://en.wikipedia.org/wiki/Loopback

如果需要多个if进行测试,就可以这样组织/etc/host文件。

代码语言:javascript
复制
127.0.0.1       localhost
127.0.0.2       vhosta
127.0.0.3       vhostb
127.0.0.4       vhostc
127.0.0.5       load-balancer
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28663033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档