博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lvs-nat负载均衡模式
阅读量:5990 次
发布时间:2019-06-20

本文共 3571 字,大约阅读时间需要 11 分钟。

文章的开始,我们要先弄懂一下几个问题

1. 为什么要使用lvs?

    随着互联网的发展使多媒体网络服务器面对的访问量快速增加,服务器需要具备提供大量并发访问的能力,因此对于大负载的服务器来讲,CPU,I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单地提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需求。linux虚拟服务器使用负载均衡技术将多台服务器组成一个虚拟服务器。它为适应快速增长的网络访问量提供了一个负载能力易于扩展,而价格低廉的解决方案。

2.什么是lvs?

     LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目   在1998年5月由博士成立,是中国国内最早出现的自由软件项目之一。

 3.lvs工作原理

VS: Virtual Server ,负责调度

RS: Real Server ,负责真正提供服务

VS 根据请求报文的目标IP 和目标协议及端口将其调度转发至某RS ,根据调度算法来挑选RS

4.lvs集群的类型

lvs-nat :修改请求报文的目标IP, 多目标IP DNAT

lvs-dr :操纵封装新的MAC 地址

lvs-tun :在原请求IP 报文之外新加一个IP 首部

lvs-fullnat :修改请求报文的源和目标IP


今天就先讲一下lvs-nat模式

工作原理

Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器



LVS负载均衡NAT工作流程

  (1). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 
 (2). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
 (3). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP 
 (4). POSTROUTING链通过选路,将数据包发送给Real Server
 (5). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP 
 (6). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP


lvs用到的软件为ipvsadm

程序包:ipvsadm

Unit File: ipvsadm.service

主程序:/usr/sbin/ipvsadm

规则保存工具/usr/sbin/ipvsadm-save

规则重载工具:/usr/sbin/ipvsadm-restore

配置文件/etc/sysconfig/ipvsadm-config

ipvsadm 命令

集群服务的RS 管理:增、删、改

格式:

ipvsadm -A|E -t|u|f service-address [-sscheduler] [-p [timeout]][-M netmask][--pepersistence_engine] [-bsched-flags]

ipvsadm -A ——add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。

ipvsadm -E ——edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录

ipvsadm -D -t|u|f service-address 删除

ipvsadm 清空

ipvsadm 重载

ipvsadm -S [-n] 保存

 增、改:ipvsadm-A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

 删除:ipvsadm -D -t|u|f service-address

 service-address 

-t|u|f 

-t: TCP 协议的端口,VIP:TCP_PORT

-u: UDP 协议的端口,VIP:UDP_PORT

-f firewall MARK ,标记,一个数字

 [-s scheduler] :指定集群的调度算法,默认为wlc

 增、改:ipvsadm -a|e-t|u|f service-address -rserver-address [-g|i|m] [-w weight]

 删:ipvsadm -d -t|u|fservice-address -r server-address

 server-address 

rip[:port] 如省略port ,不作端口映射

 选项:

lvs 类型:

-g: gateway, dr 类型,默认

-i: ipip, tun 类型

-m: masquerade, nat 类型

-w weight :权重

 清空定义的所有内容:ipvsadm –C

 清空计数器:ipvsadm -Z[-t|u|f serv ice-address]

 查看:ipvsadm -L|l[options]

--numeric, -n :以数字形式输出地址和端口号

--exact :扩展信息,精确值

--connection -c :当前IPVS 连接输出

--stats :统计信息

--rate :输出速率信息

 ipvs 规则: /proc/net/ip_vs

 ipvs 连接:/proc/net/ip_vs_conn

保存及重载规则

保存:建议保存至/etc/sysconfig/ipvsadm

ipvsadm-save > /PATH/TO/IPVSADM_FILE

ipvsadm -S > /PATH/TO/IPVSADM_FILE

systemctl stop ipvsadm.service

 重载:

ipvsadm-restore </PATH/FROM/IPVSADM_FILE

ipvsadm -R < /PATH/FROM/IPVSADM_FILE

systemctl restart ipvsadm.service

设计要点:

(1) RIP DIP 在同一IP 网络, RIP 的网关要指向DIP

(2) 支持端口映射

(3) Director 要打开核心转发功能

实验

实验之前要先检查lnmp是否已经成功,若出现错误页面,查看端口80 3306 9000php-fpm mariadb nginx是否开启

准备工作:三台虚拟机一台lvs-server 两台lnmp(仅主机模式):lnmp01,lnmp02,关掉selinux和防火墙。

1.lvs-server:yum install ipvsadm

添加一条新的虚拟服务器记录 ipvsadm -A -t 172.17.136.172:80 -s wrr

添加真实服务器lnmp01 lnmp02记录:

ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1

ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

lnmp01

添加指向DIP的网关:route add default gw 192.168.136.172

lnmp02

添加指向DIP的网关: route add default gw 192.168.136.172

Lnmp01

测试:写两个网页

Cd /data/web/

Vim index.html

Hello world

Lnmp02

Vim index.html

Good morning

通过访问一个IP地址可以访问两个页面,这个测试说明可以通过lvs将并发访问量分发到两个real-server上从而实现负载均衡。

本文转自    honeyorange   51CTO博客,原文链接:http://blog.51cto.com/13172732/1980104

转载地址:http://uenlx.baihongyu.com/

你可能感兴趣的文章
PHP代码混淆来袭,你值得拥有!
查看>>
字符串替换
查看>>
2016年U盘启动盘制作工具哪个好用?看U盘启动盘排行榜!
查看>>
Java 面向对象 之 对象数组
查看>>
Linux学习笔记6月6日任务
查看>>
Django Meta内部类
查看>>
文件查找命令使用
查看>>
给产品经理讲讲,什么是持续交付和DevOps
查看>>
龚鹏:我是怎么从程序员成为全栈GEEK的
查看>>
Linux LVM硬盘管理及LVM扩容
查看>>
2018-1-31 Linux学习笔记
查看>>
linux根目录结构分析
查看>>
python列表的增删改查
查看>>
ZooKeeper Java API
查看>>
JEPLUS平台首页规划之激活方式与框架设计介绍——JEPLUS软件快速开发平台
查看>>
如何选用人脸识别的门禁和考勤
查看>>
内录音频工具哪个好 怎么录制电脑音频
查看>>
如何开启小米手机5的ROOT权限
查看>>
学习大数据要掌握哪些语言?需要学习哪些内容?
查看>>
数据中心的维护方法和日常管理工作
查看>>