LVS-nat负载均衡原理及示例搭建
简单介绍
- LVS:linux virtual server linux虚拟服务器
- 属于内核标准的一部分,具有良好的可靠性、可扩展性和可操作性
- LVS架构从逻辑上可分为调度层、Server集群层和共享存储
LVS组成
lvs由ipvs和ipvsadm组成
- ipvs(ip virtual server):工作在内核空间,也因此能够提供高效的服务
- ipvsadm:工作在用户空间,负责为ipvs内核框架编写规则,定义集群服务和后端真实服务器
LVS相关术语
- DS:Director Server,指的是前端负载均衡器节点
- RS:Real Server,后端真实服务器
- VIP:Virtual ip,面对客户端请求的目标ip
- DIP:Director ip,前端负载均衡服务器的第二块内网网卡,主要用于和内部主机通信
- RIP:Real ip,后端服务器ip
- CIP:Client ip,客户端ip
LVS的工作模式
- lvs-nat:地址转换
- 作为后端服务器的负载网关,既是客户端的请求入口,也是后端服务器响应报文的出口,因此压力较大。
- DIP必须与后端服务器ip在同一物理网络
- 需要开启路由转发功能
- lvs-dr:直接路由,企业常用的工作模式
- lvs-tun:ip隧道
示例搭建:lvs-nat
lvs-nat工作原理
- director_server作为客户端请求报文的入口,也作为后端服务器响应报文的出口。
- 数据报文流向:
- 客户端请求报文(源IP是CIP,目标IP是VIP)到达director_server内核空间
- 内核空间中prerouting链检查报文并将其送往input链
- ipvs在此处检查是否为集群服务,若是则将报文进行修改(源IP是CIP,目标IP是RIP)根据调度分发规则从postrouting链发送给后端服务器real_server
- 接收到报文的real_server发送响应报文(源IP是RIP,目标IP是CIP)给director_server
- director_server重新封装响应报文(源IP是VIP,目标IP是CIP),发送给客户端
- 特点:
- RS必须使用私有IP地址,网关指向DIP
- DIP与RIP必须在同一网段内
- DS作为所有服务器节点网关,请求和响应报文必须都经过DS
- 支持端口映射
- 高负载场景下,DS压力较大,易成为性能瓶颈
环境介绍
- director_server:CentOS7 192.168.11.140(VIP) 192.168.153.140(DIP)
- real_server_01:CentOS7 192.168.153.130(RIP1)
- real_server_02:CentOS7 192.168.153.131(RIP2)
操作步骤
1. director_server:
]# yum install ipvsadm -y #安装ipvsadm
]# ipvsadm -A -t 192.168.11.140:80 -s rr #rr轮询、wrr加权轮询、sh会话保持
]# ipvsadm -a -t 192.168.11.140:80 -r 192.168.153.130:80 -m
]# ipvsadm -a -t 192.168.11.140:80 -r 192.168.153.131:80 -m
]# ipvsadm -Ln #查看规则
]# cat /proc/sys/net/ipv4/ip_forward #查看服务器路由功能是否打开,0关闭,1打开
0
]# echo 1 > /proc/sys/net/ipv4/ip_forward
2. real_server_01/02:
]# yum install gcc gcc-c++ pcre-devel openssl-devel zlib-devel -y #如果openssl-devel报错,`rpm -qa | grep openssl*`若已安装无需再安装
]# tar xf nginx-1.16.1.tar.gz
]# cd nginx-1.16.1.tar.gz
]# ./configure --prefix=/opt/nginx #如果需要其它模块,自行安装
]# make && make install
]# echo $? #结果为0,则安装成功;其它数字则失败,查看报错并解决
0
]# vim /opt/nginx/html/test.html #分别在real_server_01/02上创建此文件
<h1>r1/2,192.168.153.130/1</h1> #为此区分负载到哪台后端服务器上
]# /opt/nginx/sbin/nginx #启动nginx服务
]# curl 192.168.153.130/1 #分别在real_server_01/02上本地测试是否能够正常响应
r1/2,192.168.153.130/1 #根据real_server_01/02显示对应结果
3. director_server:
]# for i in {1..10};do curl 192.168.11.140;done #测试10次观察结果
r1,192.168.153.130
r2,192.168.153.131
r1,192.168.153.130
r2,192.168.153.131
r1,192.168.153.130
r2,192.168.153.131
r1,192.168.153.130
r2,192.168.153.131
r1,192.168.153.130
r2,192.168.153.131
]# ipvsadm -Ln --stats #查看规则状态
]# ipvsadm -Ln -c #查看规则上连接状态
]# ipvsadm -D -t 192.168.11.140:80 #删除规则
本文为转载文章,详情请看:LVS负载均衡之一:LVS-NAT、LVS-DR模式的原理详细介绍,介绍的非常详细!