一、LVS基本概述
1、什么是LVS
LVS的英文全称是linux virtual server,即linux虚拟服务器,其实它是一种cluster集群技术,主要用于负载均衡,将用户请求均匀的调度到不同的服务器上执行
注意:LVS是基于四层IP:PROT的负载均衡
2、为何需要LVS
1、解决七层端口数不够问题,实现百万连接
2、解决七层负载均衡高可用问题
3、LVS组成部分
ipvs:工作在内核空间,实现集群服务的"调度",借鉴了iptables的实现方式
ipvsadm:工作在用户空间,负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端服务器,数据包如何调度,调度到哪个节点
4、LVS相关名词
名称 |
详细名称 |
描述 |
DS |
Director Server |
目标服务器,即负载均衡器LVS |
RS |
Real Server |
真实应用服务,即后端服务器 |
CIP |
Client IP |
客户端请求IP |
VIP |
Virtual IP |
直接面向用户的IP地址,通常为公网IP |
DIP |
Director Server IP |
用于与后端RIP通信的IP地址 |
RIP |
Real Server IP |
后端真实服务器的IP地址 |
5、LVS常见模型
LVS负载均衡模型有NAT、DR、TUN、FULL-NAT,较为常见的模型有NAT、DR,使用最为广泛的模型是DR
1、NAT模型
NAT:通过修改请求报文的目标IP地址,然后根据算法挑选出某台RS进行转发
(请求进入负载均衡器LVS时做DNAT,后端返回数据报文出负载均衡时做SNAT)
2、DR模型
DR:通过修改请求报文的目标MAC地址,然后根据算法挑选出某台RS进行转发
(请求进入负载均衡器LVS时做MAC地址转换,后端返回数据报文不经过负载均衡,所以无需做转换)
6、LVS集群命令介绍
ipvsadm的用法大概分类如下两类:
管理集群服务(定义负载均衡配置)
管理后端RS(定义负载均衡后端节点的增删改查)
ipvsadm - Linux Virtual Server administrator
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
ipvsadm -A|E -t|u|f <集群服务地址> [-s <调度算法>] [-p <超时时间>] [-M <掩码>] [-b <标志>]
ipvsadm -D -t|u|f <集群服务地址>
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f <集群服务地址> -r <真实服务器地址> [选项]
ipvsadm -d -t|u|f <集群服务地址> -r <真实服务器地址>
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f <集群服务地址>]
ipvsadm --set <超时时间>
ipvsadm --start-daemon <主或备> [--mcast-interface <组播接口>] [--syncid <SID>]
ipvsadm --stop-daemon <主或备>
ipvsadm -h
集群管理参数
--add-service -A 添加一个集群服务,需要使用选项
--edit-service -E 编辑一个集群服务,需要使用选项
--delete-service -D 删除指定集群服务,需要使用选项
--clear -C 删除所有集群服务,包括真实服务器转发策略规则
--restore -R 从标准输入中恢复策略规则
--save -S 保存策略规则到标准输出
--list -L|-l 查看集群服务列表,包括真实服务器转发策略规则
--zero -Z 计数器清零。清除连接数、包转发等数量统计信息
-n 数字格式显示ip和port,注意-n只能写在-L之后
--set <超时时间> 设置TCP、TCPFIN(TCP关闭连接状态)、UDP连接超时时间,用于
会话保持。一般情况下TCP和UDP超时时间保持默认就好,TCPFIN
可以根据情况设定,指定它则用户请求连接关闭,该连接则会变
为非活跃(InActive)空闲等待状态,在空闲等待时间内,如果
来自同一源IP的请求,则还会转发给后端的同一台真实服务器上
--start-daemon 开启连接同步守护进程。在选项后面指定自己是Master(主)还
是backup(备),主负载调度器会同步所有策略及连接状态到备
负载调度器,当主故障,备可以接替其工作
--stop-daemon 停止连接同步守护进程
--help -h 显示帮助信息
节点管理参数
--add-server -a 添加一个真实服务器,需要使用选项
--edit-server -e 编辑一个真实服务器,需要使用选项
--delete-server -d 删除一个真实服务器,需要使用选项
--tcp-service -t <集群服务地址> 允许集群服务使用的传输协议为TCP。<IP:Port>
--udp-service -u <集群服务地址> 允许集群服务使用的传输协议为UDP。<IP:Port>
--real-server -r <真实服务器地址> 指定真实服务器的主机IP与端口
--weight -w <权重值> 指定真实服务器的权重值
--masquerading -m 指定真实服务器转发工作模式,使用NAT模式
--gatewaying -g 指定真实服务器转发工作模式,使用DR模式,默认
--ipip -i 指定真实服务器转发工作模式,使用TUN模式
--scheduler -s scheduler 指定集群服务使用的调度算法:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认为wlc
--persistent -p <超时时间> 开启持久化服务,开启它则表示在指定时间内,来自同一IP的请求都会转发到后端同一台真实服务器上
--fwmark-service -f <防火墙标识> 使用一个整数值来防火墙标识集群服务,而不是地址、
端口和协议使用它,我们可以通过结合IPtables将多
个以调度器为目标的端口定义成一个防火墙标识,由
ipvsdam通过此项关联标识,则可以实现对一个IP多
端口调度,即实现后端服务器可以开放多个服务
--connection -c 显示连接信息,一般与"-l"连用
7、示例
ipvsadm -L
ipvsadm -A -t 10.0.0.51:3306
ipvsadm -a -t 10.0.0.51:3306 -r 1.1.1.1:3306
ipvsadm -a -t 10.0.0.51:3306 -r 2.2.2.2:3306