背景

       负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。


相关

      常见的负载均衡实现分别硬件和软件,

     商业硬件负载均衡中应用比较广泛的有F5、Netscaler等相关国际提供商

       优点:稳定,硬件级别性能高,非系统无关,有强大可靠的技术支持。

           缺点:价格贵,配置冗余。

   软件负载均衡中应用比较广泛的有Nginx,Haproxy、Nginx、LVS, Apache(根据HTTP协议支持的属性进行L7分发)、A/B Test Gateway、WAF等等.

      优点:基于系统与应用的负载均衡,能够更好地根据系统与应用的状况来分配负载。这对于复杂应用是很重要的,性价比高,实际上如果几台服务器,用F5之类的硬件产品显得有些浪费,而用软件就要合算得多,因为服务器同时还可以跑应用做集群等。

          缺点:负载能力受服务器本身性能的影响,性能越好,负载能力越大,与系统有关。


应用:

    互联网公司(如淘宝、新浪、腾讯等)使用中比较偏向于软负载均衡,而像农行、建行,联通等国企偏向于F5之类的硬件负载均衡。


本次主要基于apache通过简单演示来介绍负载均衡。

环境:

server: Fedora 24 (由于博主不喜欢CentOS桌面样式,所以转向兄弟版Fedora,应用方式都相差无几)

ip: 192.168.0.13

wKiom1fAaUjQDvlGAABG-IkIZdA556.png


实战:

由于原来已经安装好了Tengine,所以本次将直接使用Tengine来模拟两Server站点。分别监听9096和8080端口提供web服务

站点一:conf/vhost/blog.conf

wKiom1fAamrhRKAwAACofmhCSYA039.png


站点二:conf/vhost/bbs.conf

wKiom1fAarGyecJzAACjUTgKEUU893.png


html目录下bbs和blog的index.html内容

wKioL1fAazSSzMOjAABB6w6bSAM031.png

启动Tengin并测试

wKiom1fAa-qhofQBAAD22cIqPmg899.png


web服务器准备好后安装apache

下载: wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.23.tar.gz

解包: tar zxvf httpd-2.4.23.tar.gz

进入: cd httpd-2.4.23

检查并生成Makefile文件:./configure --prefix=/application/httpd-2.4.23 --enable-so --enable-modules="all"

                        --prefix=/application/httpd-2.4.23  指定安装目录

                        --enable-so  编译出大部分可用的so文件

                        --enable-modules="all" 打开所有模块列表

编译并安装:make && sudo make install


安装完成后

wKiom1fAcJbSk655AAD_VCEbdTk962.png

    目录介绍:

    bin: 存放apache查关可执行文件

    build: 存放脚本目录

    cgi-test: 存放cgi文件目录

    conf: 存放apache相关配置文件目录

    htdocs: 存放html相关目录

    icons: 存放相关图片目录

    include:存放.h头文件目录

    logs: 存放相关日志文件目录

    ..

    ..

    modules: 存放相关模块.so文件目录


进入conf/extra目录

新建httpd-proxy.conf文件

wKioL1fAco3S372oAAGHyf3TIww700.png

2-5行加载apache负载均衡功能必备模块

6-8行加载apache负载均衡调度算法模块

11行ProxyRequests Off; 关闭正向代理(开启反向代理,apache负载均衡基于7层反向代理)

12-15 定义web服务器

16-20 定义开启Web管理

22-31 定义虚拟主机


修改conf/httpd.conf

增加

#proxy demo

Include conf/extra/httpd-proxy.conf


将ServerName www.example.com:80  修改为

ServerName www.lisea.cn:80


修改/etc/hosts文件

增加192.168.0.13 www.lisea.cn lisea.cn


开启apache

wKiom1fAdRmBvHgpAACisetCQlM762.png


测试访问:(由于浏览器访问会产品缓存和连接保持,直接由curl命令模拟访问请求)

wKiom1fAdW_AAmpEAAC280_rasw777.png


以需求驱动技术,技术本身没有优略之分,只有业务之分。