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

Lan*_*ler 3 apache xampp load-balancing virtual-hosts

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

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
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

当然我已经在C:/ vhosts /中创建了文件夹,并为每个文件夹添加了一个index.php文件(里面有一个echo语句).

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

但我需要的是制作一个负载均衡器,选择执行" http:// vhosta "," http:// vhostb "或" http:// vhostc ".

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

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

(我在windows 8.1顺便说一句使用xampp.)

Bor*_*ris 7

有很多方法可以实现这一目标,但是你要做的事情是行不通的./ etc/hosts是IP到主机名映射的基本方式.如果您想要循环解析,则必须使用DNS服务器.此外,除了学习和配置测试之外,在同一台机器上进行负载平衡没有多大意义.

这些是您拥有的一些选项.

1)使用mod_proxy_balancer.您需要启用mod_proxy和mod_proxy_balancer模块.此外,您需要选择一个调度程序算法.选项包括:mod_lbmethod_byrequests,mod_lbmethod_bytraffic,mod_lbmethod_bybusyness和mod_lbmethod_heartbeat.

http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html

<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>
Run Code Online (Sandbox Code Playgroud)

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

DNS配置

load-balancer        IN            A       10.0.0.1
load-balancer        IN            A       10.0.0.2
load-balancer        IN            A       10.0.0.3
Run Code Online (Sandbox Code Playgroud)

Apache服务器的虚拟主机

<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>
Run Code Online (Sandbox Code Playgroud)

还有一件事与hosts文件有关.如果要将环回IP映射到主机名,请随意使用全范围,从127.0.0.0到127.255.255.255.我很确定这是在Windows中映射的,但我无法测试它.要测试,只需ping 127.1.2.3,看看你得到了什么.

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

如果您需要多个IP进行测试,这就是组织/ etc/hosts文件的方法.

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
Run Code Online (Sandbox Code Playgroud)