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模式配置的更多相关文章

  1. LVS负载均衡-基础知识梳理

    一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器.集群系统中的单个服务器通常称 ...

  2. LVS负载均衡之DR模式原理介绍

    LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...

  3. LVS负载均衡DR模式

    什么是集群? 一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器.简而言之,一堆机器协同工作就是集群.集群的基本特点:高性能.高并发.高吞 ...

  4. LVS负载均衡之DR模式部署

      1.LVS的DR模式介绍 参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html     VS/DR利用大多数Internet服务的非对称特点,负 ...

  5. LVS负载均衡常用的工作模式有NAT、DR、和TUN三种,其中DR模式性能最为优越,使用最为广泛。

    一.安装LVS LVS的编译安装参考本站文章:http://www.linuxe.cn/post-192.html,对于LVS这种功能性软件,在生产中用yum安装也是没有问题的. 1 yum inst ...

  6. LVS负载均衡DR模式实现

    LVS负载均衡之DR模式配置 DR 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed - ...

  7. lvs负载均衡(DR模式)

    lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...

  8. LVS负载均衡之持久性连接介绍(session篇)

    在实际生产环境中,往往需要根据业务应用场景来设置lvs的会话超时时间以及防session连接丢失的问题提,如在业务支付环节,如若session丢失会导致重复扣款问题,严重影响到安全性,本小节解将会讲到 ...

  9. LVS负载均衡DR工作流程

    LVS负载均衡DR工作流程 (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的源IP为CIP,目标IP为VIP (b) PRE ...

随机推荐

  1. [Abp 源码分析]十五、自动审计记录

    0.简介 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信 ...

  2. java集合框架整理

    一.总体框架 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* .Java集合主要可以划分为4个部分:Lis ...

  3. 如何写好css系列之button

    现代前端行业的发展,如果你在css的时候,还没有利用一些预编译工具,是否觉得自己太low了.但你是否考虑过搭建一套自己前端框架.可能你会想这是否有必要,因为基础有boostrap,组件库有:easyu ...

  4. asp.net core 系列 4 注入服务的生存期

    一.服务的生存期 在容器中每个注册的服务,根据程序应用需求都可以选择合适的服务生存期,ASP.NET Core 服务有三种生存期配置: (1) Transient:暂时生存期,在每次请求时被创建. 这 ...

  5. redis 系列10 字符串对象

    一. 字符串对象编码 Redis中字符串可以存储3种类型,分别是字节串(byte string).整数.浮点数.在上章节中讲到字符串对象的编码可以是int, raw,embstr. 如果一个字符串对象 ...

  6. Solr 11 - Solr集群模式的部署(基于Solr 4.10.4搭建SolrCloud)

    目录 1 SolrCloud结构说明 2 环境的安装 2.1 环境说明 2.2 部署并启动ZooKeeper集群 2.3 部署Solr单机服务 2.4 添加Solr的索引库 3 部署Solr集群服务( ...

  7. 如何把你的.net程序打包上传到nuget

    写在前面 每个.net开发者都经常用nuget管理自己的程序包,install一个json组件啊,一个工具类什么的,这些都是别人写好的.如果我也写好了一个自己感觉很拿的出手的组件,想轻松的使用nuge ...

  8. Perl IO:简介和常用IO模块

    三篇Perl IO基础类文章: Perl的IO操作(1):文件句柄 Perl的IO操作(2):更多文件句柄的模式 Perl文件句柄相关的常见变量 IO对象和IO::Module家族模块 无论是哪种高级 ...

  9. msf中exploit的web_delivery模块

    背景:目标设备存在远程文件包含漏洞或者命令注入漏洞,想在目标设备上加载webshell,但不想在目标设备硬盘上留下任何webshell文件信息 解决思路:让目标设备从远端服务器加载webshell代码 ...

  10. javascript基础修炼(10)——VirtualDOM和基本DFS

    1. Virtual-DOM是什么 Virtual-DOM,即虚拟DOM树.浏览器在解析文件时,会将html文档转换为document对象,在浏览器环境中运行的脚本文件都可以获取到它,通过操作docu ...