背景
负载均衡(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
实战:
由于原来已经安装好了Tengine,所以本次将直接使用Tengine来模拟两Server站点。分别监听9096和8080端口提供web服务
站点一:conf/vhost/blog.conf
站点二:conf/vhost/bbs.conf
html目录下bbs和blog的index.html内容
启动Tengin并测试
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
安装完成后
目录介绍:
bin: 存放apache查关可执行文件
build: 存放脚本目录
cgi-test: 存放cgi文件目录
conf: 存放apache相关配置文件目录
htdocs: 存放html相关目录
icons: 存放相关图片目录
include:存放.h头文件目录
logs: 存放相关日志文件目录
..
..
modules: 存放相关模块.so文件目录
进入conf/extra目录
新建httpd-proxy.conf文件
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
测试访问:(由于浏览器访问会产品缓存和连接保持,直接由curl命令模拟访问请求)
以需求驱动技术,技术本身没有优略之分,只有业务之分。