目录
一、集群概述
1.负载均衡技术类型
2.负载均衡实现方式
二、LVS结构
1.三层结构
2.架构对象
三、LVS工作模式
四、LVS负载均衡算法
1.静态负载均衡
2.动态负载均衡
五、ipvsadm命令详解
1. -A
2. -D
3. -L
4. -a
5. -d
6. -l
7. -t
8. -s
9. -r
10. -w
11. -g
12. -i
13. -m
14. 案例
六、LVS配置案例
1.基础配置
2.实现NAT模型搭建
2.1 负载调度器配置
2.1.1 配置IP地址
2.1.2 配置本地yum源
2.1.3 安装ipvsadm
2.1.4 开启路由转发功能
2.1.5 加载ip_vs模块
2.1.6 启动ipvsadm服务
2.1.7 配置负载分配策略
2.1.8 保存策略
2.2 web节点配置
2.2.1 安装httpd
2.2.2 配置网关
2.3 测试
3.实现DR模型搭建
3.1 负载调度器配置
3.1.1 调整ARP参数
3.1.2 配置虚拟IP地址
3.1.3 安装ipvsadm
3.1.4 加载ip_vs模块
3.1.5 启动ipvsadm服务
3.1.6 配置负载分配策略
3.1.7 保存策略
3.2 web节点配置
3.2.1 调整ARP参数
3.2.2 配置虚拟IP地址
3.2.3 添加回环路由
3.2.4 安装httpd
一、集群概述
1.负载均衡技术类型
- 四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
- 七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。
2.负载均衡实现方式
- 硬件负载均衡产品:F5 、深信服 、Radware
- 软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
二、LVS结构
1.三层结构
- 负载调度器
- 服务器池
- 共享存储
2.架构对象
- VS:Virtual Server,也称为 Director,负载均衡服务器
- RS:Real Server,真正的服务器,集群中各节点
- VIP:Director 向外部提供服务的 IP
- DIP:Director 向内部与 RS 通信的 IP
- RIP:真实服务器的 IP
- CIP:客户端的 IP
三、LVS工作模式
- LVS-NAT(NAT模式)
- LVS-DR(直接路由模式)(应用最广泛)
- LVS-TUN(IP隧道(Tunnel)模式,不常用)
- FULL-NAT模式(双向转换模式,不常用)
四、LVS负载均衡算法
1.静态负载均衡
- rr(round robin,轮询 )
- wrr(weight round robin,加权轮询)
- sh(source hashing,源地址散列算法(HASH))
- dh(destination hashing,目标地址 HASH)
2.动态负载均衡
- lc(leash-connection,最少连接 ) 简单算法:active * 256 + inactive (谁的小选谁)
- wlc(加权最少连接) 简单算法:(active * 256 + inactive) / weight(谁的小选谁)
- sed(最少期望延迟) 简单算法:(active + 1) * 256 / weight (谁的小选谁)
- nq(never queue,永不排队)
- LBLC(基于局部性的最少连接 )
- LBLCR(基于局部性的带复制功能的最少连接)
五、ipvsadm命令详解
1. -A
添加虚拟服务节点
2. -D
删除虚拟服务节点
3. -L
查看虚拟服务节点列表
4. -a
添加真实服务节点
5. -d
删除真实服务节点
6. -l
查看真实服务节点列表
7. -t
指定虚拟服务器IP地址
8. -s
指定调度算法
9. -r
指定真实服务器节点IP地址
10. -w
指定权重值
11. -g
直接路由模式(默认)
12. -i
隧道模式(不常用)
13. -m
NAT模式
14. 案例
ipvsadm -A -t 207.175.44.110:80 -s rr
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
六、LVS配置案例
1.基础配置
- 修改主机名
- 关闭防火墙
- 关闭Selinux
- 关闭Networkmanager
- 配置IP地址
2.实现NAT模型搭建
2.1 负载调度器配置
2.1.1 配置IP地址
增加一块网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
删除UUID
NAME=ens36
DEVICE=ens36
2.1.2 配置本地yum源
2.1.3 安装ipvsadm
yum install -y ipvsadm
2.1.4 开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
2.1.5 加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs
2.1.6 启动ipvsadm服务
mkdir /etc/sysconfig/ipvsadm
systemctl start ipvsadm
2.1.7 配置负载分配策略
ipvsadm -A -t 192.168.100.3:80 -s rr
ipvsadm -a -t 192.168.100.3:80 -r 192.168.42.4:80 -m
ipvsadm -a -t 192.168.100.3:80 -r 192.168.42.5:80 -m
2.1.8 保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm/ipvsadm
2.2 web节点配置
2.2.1 安装httpd
yum install -y nginx
2.2.2 配置网关
route add -net 0/0 gw 192.168.42.3
2.3 测试
深度刷新
3.实现DR模型搭建
3.1 负载调度器配置
3.1.1 调整ARP参数
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
3.1.2 配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.42.200
PREFIX=24
3.1.3 安装ipvsadm
yum install -y ipvsadm
3.1.4 加载ip_vs模块
modprobe ip_vs
lsmod |grep ip_vs
3.1.5 启动ipvsadm服务
mkdir /etc/sysconfig/ipvsadm
systemctl start ipvsadm
3.1.6 配置负载分配策略
ipvsadm -A -t 192.168.42.200:80 -s rr
ipvsadm -a -t 192.168.42.200:80 -r 192.168.42.4:80 -g
ipvsadm -a -t 192.168.42.200:80 -r 192.168.42.5:80 -g
3.1.7 保存策略
touch /etc/sysconfig/ipvsadm/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm/ipvsadm
3.2 web节点配置
3.2.1 调整ARP参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2
sysctl -p
3.2.2 配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.42.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
3.2.3 添加回环路由
route add -host 192.168.42.200/32 dev lo:0
3.2.4 安装httpd
深度刷新