LVS负载均衡基础介绍及NET、DR模式配置
LVS:术语:
CIP:Client IP;客户端IP;
VIP:Virtual Server IP;虚拟主机对外IP;
RIP:Real Server IP;真实主机IP;
DIP:Director IP;虚拟主机内网段主机IP;
LVS:调度方法 ipvs scheduler
根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法。
静态方法:仅根据算法本身进行调度。
RR:RoundRobin,轮巡;
WRR:Weighted RR,加权轮巡;
SH:Source Hashing,实现session sticky,源IP地址hash,将来自于同一个IP地址的请求始终发往第一次选中的RS主机,从而实现会话绑定。
DH:Destination Hashing:目标地址哈希相同,将发往同一个目标地址的请求始终发往选中的RS主机,典型使用正向代理缓存场景中的负载均衡。
动态方法:根据RS主机负载均衡状态即使调整算法进行调度。
LC:Least Connections:RS进行比较最少连接的。
WLC:Weighted LC 加权最少连接,最优算法;
SED:Shortest Expection Delay 最短期望延迟
NQ:Never Queue
LBLC:Locality-based LC:动态的DH算法
LBLCR:LBLC with Replocation,带复制功能的LBLC;
集群管理工具:ipvsadm/ipvs
程序集合及配置文件:
Unit File:ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保持工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
规则配置文件:/etc/sysconfig/ipvsadm-config
ipvsadm 管理命令:
ipvsadm -A | E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [–pe persistence_engine] [-b sched-flags]
-A 增加 | -E 修改 -t|u|f
-t:TCP协议端口,VIP:TCP_PORT
-u:UDP协议端口,VIP:UDP_PORT
-f:firewall MARK,数字(特指iptables 做的标记符)
[-s scheduler]:指定集群的调度算法,默认唯wlc;可省
ipvsadm -D 删除 -t |u|f service-address
ipvsadm -C:清空定义内容
ipvsadm -R:-R:重载配置;ipvsadm -S -n > /etc/sysconfig/ipvsadm
ipvsadm -S [-n]:-S:保存配置;ipvsadm -R < /etc/ssyconfig/ipvsadm
集群服务RS管理:
ipvsadm -a|e -t|u|f service-address -r server-address [options]
-a 增加 | -e 修改 -t|u|f
-t:TCP协议端口
-u:UDP协议端口
-f:firewall MARK,数字
ipvsadm -d 删除 -t|u|f service-address -r server-address
ipvsadm -L 查看|l [options]
–numeric,-n:显示地址和端口
–exact:显示精确值
–connection,-c:显示LVS连接信息
–stats:统计数据
–rate:统计速率
ipvsadm -Z 计数器归零 [-t|u|f server-address]
server—address:rip[:port] 不做地址映射
选项:
-g:gateway,dr类型
-i:ipip,tun类型
-m:masquerade,nat类型
-w wgight:权重;
负载均衡集群设计时要注意的问题:
是否需要会话保持;
是否需要共享存储;
共享存储:NAS,SAN,DS(分布式存储)
数据同步;
实验拓扑图

web-server1配置
1. 配置网络信息
2. 同步时间
ntpdate ntp.aliyun.com
3. 安装nginx服务
yum -y install nginx
4. 编写nginx配置文件
cp /etc/nginx/nginx.conf.default /etc/nginx/conf.d/web-servre.conf
5. 编写静态网站
echo “web-server1 172.16.30.10” > /usr/share/nginx/html/test.html
6. 重启nginx服务
systemctl start nginx
systemctl enable nginx
7. 检查80端口是否被监听
ss -tnl
web-server2配置
1. 配置网络信息
2. 同步时间
ntpdate ntp.aliyun.com
3. 安装nginx服务
yum -y install nginx
4. 编写nginx配置文件
cp /etc/nginx/nginx.conf.default /etc/nginx/conf.d/web-servre.conf
5. 编写静态网站
echo “web-server2 172.16.30.11” > /usr/share/nginx/html/test.html
6. 重启nginx服务
systemctl restart nginx
systemctl enable nginx
7. 检查80端口是否被监听
ss -tnl
Lvs配置
1. 配置网络信息
2. 同步时间
ntpdate ntp.aliyun.com
3. 开启Linux内核转发
vim /usr/lib/sysctl.d/00-system.conf
sysctl -w net.ipv4.ip_forward=1
4. 安装ipvsadm软件
yum -y install ipvsadm
5. 生成规则
ipvsadm -A -t 192.168.1.234:80 -s rr
ipvsadm -Ln #查看定义规则
ipvsadm -a -t 192.168.1.234:80 -r 172.16.30.10 -m
ipvsadm -a -t 192.168.1.234:80 -r 172.16.30.11 -m
客户端测试
curl http://192.168.1.234/test.html
for i in {1..20} ;do curl http://192.168.1.234/test.html;done

配置加权轮询
修改服务器调度算法
ipvsadm -E -t 192.168.1.234:80 -s wrr
ipvsadm -e -t 192.168.1.234:80 -r 172.16.30.10 -m -w 2 将172.16.30.10这个台主机的权重修改为2
ipvsadm -e -t 192.168.1.234:80 -r 172.16.30.11 -m -w 3 将172.16.30.11这个台主机的权重修改为3
ipvsadm -Z #清空统计数据
ipvsadm -Ln --rate #查看历史数据
删除RSserver
ipvsadm -d -t 192.168.1.234:80 -r 172.16.30.10
ipvsadm -Ln
客户端测试:
curl http://192.168.1.234/test1.html
for i in {1..20} ;do curl http://192.168.1.234/test1.html;done
LVS响应访问
yum -y install nginx
echo “sorry”>/usr/share/nginx/html/index.html
systemctl restart nginx
ss -tnl
添加调度主机
ipvsadm -a -t 192.168.1.234:80 -r 127.0.0.1 -g #将访问调度到本机
客户端测试
for i in {1..20} ;do curl http://192.168.1.234 ; done
将来自于同一个地址的响应调度到同一个主机上
ipvsadm -E -t 192.168.1.234:80 -s sh
长连接测试:
systemctl start telnet.socket
useradd centos ; echo ‘chenjf’| passwd --stdin chenjf
LVS配置
ipvsadm -A -t 192.168.1.234:23 -s wlc
ipvsadm -a -t 192.168.1.234:23 -r 172.16.30.10 -m -w 1
ipvsadm -a -t 192.168.1.234:23 -r 172.16.30.11 -m -w 2
客户端测试
yum -y install telnet
telnet 192.168.1.234
ipvsadm -S #保存配置
ipvsadm -n >/etc/sysconfig/ipvsadms
ipvsadm -C
ipvsadm -Ln
ipvsadm -R </etc/sysconfig/ipvsadm
ipvsadm -ln
LVS-DR实验拓扑图

LVS-DR模式采的IP地址全部为外网IP。
用户请求VIP,会由LVS服务器响应,分配至Real-Server服务器,真实服务器处理完后直接返回给用户,不再通过LVS服务器。
搭建环境
OS:Centos 7.5
IP:LVS-server IP:192.168.1.234
VIP:192.168.1.33
Real-Server1 IP: 192.168.1.232 安装web服务器 准备测试站点内容
Real-Server2 IP: 192.168.1.233 安装web服务器 准备测试站点内容
Client:xp/window7/8都可以,只要能ping通 192.168.1.*
配置流程
LVS-server配置
1、同步时间
2、设置VIP地址
[root@LVS-server ~]#ifconfig lo:0 192.168.1.33 netmask 255.255.255.255
[root@LVS-server ~]#route add -host 192.168.1.33 dev lo:0
3、安装Ipvsadm软件
[root@LVS-server ~]#yum -y install ipvsadm*
4、lvs配置
[root@LVS-server ~]#ipvsadm -C
[root@LVS-server ~]#ipvsadm -A -t 192.168.1.33:80 -s rr
[root@LVS-server ~]#ipvsadm -a -t 192.168.1.33:80 -r 192.168.1.232 -g
[root@LVS-server ~]#ipvsadm -a -t 192.168.1.33:80 -r 192.168.1.233 -g
[root@LVS-server ~]#ipvsadm -Ln
Real-Server1配置
1、同步时间
2、RS1、RS2上安装nginx服务;
[root@Real-server1 ~]# yum -y install nginx
3、编写一个静态页面
[root@Real-server1 ~]# echo "Real-server1 192.168.1.232" >/usr/share/nginx/html/lvs.html
4、重启nginx服务
Systemctl restart nginx
Systemctl enable nginx
5、检查80端口是否被监听
[root@Real-server1 ~]# ss -tnl
6、配置网络并添加路由
[root@Real-server1 ~]# ifconfig lo:0 192.168.1.33 netmask 255.255.255.255
[root@Real-server1 ~]# route add -host 192.168.1.33 dev lo:0
7、关闭通告信息
[root@Real-server1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@Real-server1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@Real-server1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@Real-server1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
Real-Server2配置
1、同步时间
2、RS1、RS2上安装nginx服务;
[root@Real-server2 ~]# yum -y install nginx
3、编写一个静态页面
[root@Real-server2 ~]# echo "Real-server2 192.168.1.233" >/usr/share/nginx/html/lvs.html
4、检查80端口是否被监听
[root@Real-server2 ~]# ss -tnl
5、重启nginx服务
[root@Real-server2 ~]# systemctl restart nginx
[root@Real-server2 ~]# systemctl enable nginx
6、配置网络并添加路由
[root@Real-server2 ~]# ifconfig lo:0 192.168.1.33 netmask 255.255.255.255
[root@Real-server2 ~]# route add -host 192.168.1.33 dev lo:0
7、关闭通告信息
[root@Real-server2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@Real-server2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@Real-server2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@Real-server2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
客户端测试
现在通过Client直接访问 LVS的VIP地址http://192.168.1.33/lvs.html正常的话即可访问到准备的测试站点。
使用脚本测试看是否为轮询状态。
[root@Client ~]# for i in{1..20};do curl http://192.168.1.33/lvs.html;done
配置LVS采用的是轮循模式。第一次是访问Real-Server1,刷新后是访问Real-Server2,再刷新后访问Real-Server1
LVS负载均衡基础介绍及NET、DR模式配置的更多相关文章
- LVS负载均衡-基础知识梳理
一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器.集群系统中的单个服务器通常称 ...
- LVS负载均衡之DR模式原理介绍
LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...
- LVS负载均衡DR模式
什么是集群? 一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器.简而言之,一堆机器协同工作就是集群.集群的基本特点:高性能.高并发.高吞 ...
- LVS负载均衡之DR模式部署
1.LVS的DR模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html VS/DR利用大多数Internet服务的非对称特点,负 ...
- LVS负载均衡常用的工作模式有NAT、DR、和TUN三种,其中DR模式性能最为优越,使用最为广泛。
一.安装LVS LVS的编译安装参考本站文章:http://www.linuxe.cn/post-192.html,对于LVS这种功能性软件,在生产中用yum安装也是没有问题的. 1 yum inst ...
- LVS负载均衡DR模式实现
LVS负载均衡之DR模式配置 DR 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed - ...
- lvs负载均衡(DR模式)
lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...
- LVS负载均衡之持久性连接介绍(session篇)
在实际生产环境中,往往需要根据业务应用场景来设置lvs的会话超时时间以及防session连接丢失的问题提,如在业务支付环节,如若session丢失会导致重复扣款问题,严重影响到安全性,本小节解将会讲到 ...
- LVS负载均衡DR工作流程
LVS负载均衡DR工作流程 (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的源IP为CIP,目标IP为VIP (b) PRE ...
随机推荐
- Mac下 .bash_profile 和 .zshrc 两者之间的区别
这是我碰到的需要 source 之后才能使用环境变量的问题,我就不细究了,说说我的看法. .bash_profile 中修改环境变量只对当前窗口有效,而且需要 source ~/.bash_profi ...
- C#版(击败97.76%的提交) - Leetcode 557. 反转字符串中的单词 III - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...
- Python进阶:迭代器与迭代器切片
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- Chapter 5 Blood Type——20
"Just let me sit for a minute, please?" I begged. “就让我坐一会可以吗?” 我乞求道. He helped me sit on t ...
- Java并发专题(二)线程安全
前言 随着时代的发展,CPU核数的增加和计算速度的提升,串行化的任务执行显然是对资源的极大浪费,掌握多线程是每个程序员必须掌握的技巧.但是同时多线程也是一把双刃剑,带来了共享资源安全的隐患.在本节会介 ...
- webpack4.0各个击破(2)—— CSS篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...
- Smobiler 4.4已正式发布!(Smobiler能让你在Visual Studio上开发APP)
Smobiler 4.4已经正式发布,还不快来看看?原文地址:https://www.smobiler.com/portal.php?mod=view&aid=53这次更新要感谢我们的用户,在 ...
- 在win10系统开启linux子系统
1. 2.重启计算机 3.在winstore下载和安装 ubuntu 4.查看当前win10子系统的linux版本 lsb_release -a 5.设置root账号密码, 在终端输入命令 sudo ...
- Sqlite操作帮助类
sqlite帮助类 using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...
- java_泛型2
一.泛型_泛型概述及好处 1).在定义集合时,我们是希望集合中只存储一种类型的引用,这时可以使用泛型: ArrayList<String> list = new Arr ...