负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡算法
1、轮询法
轮询法,就是将用户的请求轮流分配给服务器,就像是挨个数数,轮流分配。这种算法比较简单,他具有绝对均衡的优点,但是也正是因为绝对均衡它必须付出很大的代价,例如它无法保证分配任务的合理性,无法根据服务器承受能力来分配任务。
2、随机法
随机法,是随机选择一台服务器来分配任务。它保证了请求的分散性达到了均衡的目的。同时它是没有状态的不需要维持上次的选择状态和均衡因子[5]。但是随着任务量的增大,它的效果趋向轮询后也会具有轮询算法的部分缺点。
3、最小连接法
最小连接法,将任务分配给此时具有最小连接数的节点,因此它是动态负载均衡算法。一个节点收到一个任务后连接数就会加1,当节点故障时就将节点权值设置为0,不再给节点分配任务。
负载均衡实现
硬件实现
F5
软件实现方式
LVS(四层)
nginx 或haproxy (七层)
LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一,是根据iptables的实现来开发的,所以使用时候会和iptables相当类似
官网:http://www.linuxvirtualserver.org/
中文站点: http://zh.linuxvirtualserver.org/
LVS-NAT
NAT 方式可支持任何的操作系统,以及私有网络,并且只需一个 Internet IP 地址,但是整个系统的性能受到限制。因为执行 NAT 每次需要重写包,有一定的延迟;另外,大部分应用有 80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
实验
1、准备 3 台
2、iptables -F , 清除规则
3、/etc/selinux/config,关 SELinux
配置分发器(198.168.1.20)
- 打开路由分发功能
sysctl -w net.ipv4.ip_forward=1
- 安装ipvsadm
yum -y install ipvsadm
- 设置ipvsadm
ipvsadm -A -t 192.168.1.20:80 -s rr
ipvsadm -a -t 192.168.1.20:80 -r 192.168.2.21 -m
ipvsadm -a -t 192.168.1.20:80 -r 192.168.2.22 -m
ipvsadm -S
以下为命令使用指导:
ipvsadm -A -t 负载均衡服务器ip:port -s rr
ipvsadm -a -t 负载均衡服务器ip:port -r 目标机ip:port -m
ipvsadm -a -t 负载均衡服务器ip:port -r 目标机2ip:port -m
ipvsadm -S
-
-A 添加虚拟服务
-
-a 添加一个真是的主机到虚拟服务
-
-S 保存
-
-s 选择调度方法
-
rr 轮训调度
-
-m 网络地址转换NAT
配置应用服务器
- 安装httpd 服务器
yum install httpd
- 更改网卡
网卡模式:VMnet4
网关:192.168.2.20
两台IP 分别:192.168.2.21,192.168.2.22
例如192.168.2.21 的网卡配置如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1f523aa2-3585-4a96-8679-c36b6cc2dc3d
DEVICE=ens33
ONBOOT=yes
IPV6_PRIVACY=no
IPADDR=192.168.2.22
PREFIX=24
GATEWAY=192.168.2.20
- 想两个应用服务器添加测试页面
# 在21上执行
echo "192.168.2.21" > /var/www/html/index.html
# 在22上执行
echo "192.168.2.22" > /var/www/html/index.html
测试
在分发器上安装elinks 测试
yum install elinks