LVS-nat负载均衡原理及示例搭建

简单介绍

  1. LVS:linux virtual server linux虚拟服务器
  2. 属于内核标准的一部分,具有良好的可靠性、可扩展性和可操作性
  3. LVS架构从逻辑上可分为调度层、Server集群层和共享存储

LVS组成

lvs由ipvs和ipvsadm组成

  1. ipvs(ip virtual server):工作在内核空间,也因此能够提供高效的服务
  2. ipvsadm:工作在用户空间,负责为ipvs内核框架编写规则,定义集群服务和后端真实服务器

LVS相关术语

  1. DS:Director Server,指的是前端负载均衡器节点
  2. RS:Real Server,后端真实服务器
  3. VIP:Virtual ip,面对客户端请求的目标ip
  4. DIP:Director ip,前端负载均衡服务器的第二块内网网卡,主要用于和内部主机通信
  5. RIP:Real ip,后端服务器ip
  6. CIP:Client ip,客户端ip

LVS的工作模式

  1. lvs-nat:地址转换
    1. 作为后端服务器的负载网关,既是客户端的请求入口,也是后端服务器响应报文的出口,因此压力较大。
    2. DIP必须与后端服务器ip在同一物理网络
    3. 需要开启路由转发功能
  2. lvs-dr:直接路由,企业常用的工作模式
  3. lvs-tun:ip隧道

示例搭建:lvs-nat

lvs-nat工作原理

  • director_server作为客户端请求报文的入口,也作为后端服务器响应报文的出口。
    lvs-nat
  • 数据报文流向:
  1. 客户端请求报文(源IP是CIP,目标IP是VIP)到达director_server内核空间
  2. 内核空间中prerouting链检查报文并将其送往input链
  3. ipvs在此处检查是否为集群服务,若是则将报文进行修改(源IP是CIP,目标IP是RIP)根据调度分发规则从postrouting链发送给后端服务器real_server
  4. 接收到报文的real_server发送响应报文(源IP是RIP,目标IP是CIP)给director_server
  5. director_server重新封装响应报文(源IP是VIP,目标IP是CIP),发送给客户端
  • 特点:
  1. RS必须使用私有IP地址,网关指向DIP
  2. DIP与RIP必须在同一网段内
  3. DS作为所有服务器节点网关,请求和响应报文必须都经过DS
  4. 支持端口映射
  5. 高负载场景下,DS压力较大,易成为性能瓶颈

环境介绍

  1. director_server:CentOS7 192.168.11.140(VIP) 192.168.153.140(DIP)
  2. real_server_01:CentOS7 192.168.153.130(RIP1)
  3. 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模式的原理详细介绍,介绍的非常详细!

posted @ 2020-04-25 23:54  wanwz  阅读(152)  评论(0编辑  收藏  举报