什么是负载均衡

  1. 实现对大量用户访问请求进行调度分配
  2. 实现对大量用户访问得压力分担

pxc集群负载均衡 负载均衡服务器集群_web服务器

当大量用户在短时间内访问网站时,一台web服务器是无法快速处理这些请求的,甚至有可能会宕机。所以就需要负载均衡对用户请求进行调度,把请求分配给web集群中的各台web服务器。这样每台web服务器处理的请求就少了,就可以快速响应客户的请求。

什么是集群
简单的说就是完成相同任务或工作的一组服务器。比如web集群。

集群的特点

  1. 高性能:对于复杂的的计算业务,一台服务器的计算能力毕竟有限,但使用集群就可以集中成百上千的服务器的计算能力解决问题。
  2. 价格有效性:通常一套系统集群架构,只需要几台或数十台服务器即可。与动辄价值上百万的超级计算机相比便宜很多。在达到同样的性能需求下,采用集群方式性价比更高
  3. 可伸缩性:当服务负载、压力增长时,针对集群系统进行简单的扩展即可满足需求(即集群里再多添加一些服务器)
  4. 高可用性:单一计算机系统内的CPU、内存、主板、电源、硬盘等,只要有一个部件坏掉,此计算机就无法再工作了。若使用集群的话,即使一台服务器坏掉,其它服务器依旧可以工作,从而实现7*24小时服务

实现条件:

  • 三台虚拟web服务器
  • 一台虚拟负载均衡服务器

负载均衡服务器部署
第一步:下载nginx服务软件包;具体步骤参照这篇博文:web服务器部署

第二步:编写nginx负载均衡服务配置文件
pxc集群负载均衡 负载均衡服务器集群_web服务器_02
第三步:修改Windows中的hosts文件;用于浏览器的DNS解析
pxc集群负载均衡 负载均衡服务器集群_其他_03

第四步:测试负载功能;为了方便观察,web01、web02、web03三台服务器的首页文件我都以IP区别。
pxc集群负载均衡 负载均衡服务器集群_web服务器_04
pxc集群负载均衡 负载均衡服务器集群_其他_05
pxc集群负载均衡 负载均衡服务器集群_web服务器_06
浏览器中访问的是相同的网址,但是每次刷新网页页面时,处理请求的服务器却不一样,这样就说明已经实现了负载均衡功能。

注意点:
当使用负载均衡时,web集群中若使用nginx服务默认的站点目录"/usr/share/nginx/html",那么浏览器只会获取到web服务器的默认首页文件"index.html"。即使你指定了首页文件,浏览器也只会读取默认首页文件。所以尽量改变nginx服务的默认站点目录,这样指定的首页文件才会生效。

负载均衡服务器常见的问题

  • 访问不同的网站地址,却不能显示不同的网站页面
    pxc集群负载均衡 负载均衡服务器集群_服务器_07
    pxc集群负载均衡 负载均衡服务器集群_负载均衡_08
    按照上面的配置,通过浏览器想访问"www.cxsnb.com"这个网站时,出现的却是"bbs.cxsnb.com"的网站的首页页面信息
    pxc集群负载均衡 负载均衡服务器集群_其他_09
    我通过抓包,和大家分享一下问题出在了哪里:
    pxc集群负载均衡 负载均衡服务器集群_服务器_10
    所以我们只需要让负载均衡服务器反向代理把请求发送给web服务器时,使用的也是客户端的Host,就可以解决这个问题
    pxc集群负载均衡 负载均衡服务器集群_负载均衡_11

  • 访问网站用户地址信息无法进行分析统计
    客户端通过浏览器访问web服务器时,web服务记录的都是负载均衡服务器的地址。这样就无法获知有哪些客户端访问了自己,也就无法进行统计分析。
    所以需要在web服务器中记录客户端的IP信息以便于统计分析:
    pxc集群负载均衡 负载均衡服务器集群_负载均衡_12
    pxc集群负载均衡 负载均衡服务器集群_负载均衡_13

  • 访问负载均衡会出现错误页面,影响用户体验
    pxc集群负载均衡 负载均衡服务器集群_服务器_14
    此时可以配置"proxy_next_upstream"指令,后面指定web服务器出现哪些错误时,直接跳过这台web服务器,把请求发给集群中其它的web服务器处理。
    pxc集群负载均衡 负载均衡服务器集群_负载均衡_15

  • 登录网站时,需要反复登陆。
    pxc集群负载均衡 负载均衡服务器集群_服务器_16
    pxc集群负载均衡 负载均衡服务器集群_服务器_17

负载均衡服务在实践中的应用
根据用户访问的终端信息显示不同的页面:
当我们使用浏览器访问一个网站时,使用手机浏览器和电脑浏览器浏览的网页是不一样的。这种功能就是通过负载均衡实现的。

  1. 准备架构环境:分别在web1、web2、web3三台服务器上配置一下内容
    pxc集群负载均衡 负载均衡服务器集群_web服务器_18
    pxc集群负载均衡 负载均衡服务器集群_服务器_19
    pxc集群负载均衡 负载均衡服务器集群_服务器_20

  2. 在负载均衡服务器中配置负载均衡配置文件
    pxc集群负载均衡 负载均衡服务器集群_服务器_21

  3. 测试;(我使用的时电脑上的谷歌浏览器)
    pxc集群负载均衡 负载均衡服务器集群_web服务器_22