LVS(Linux virual server)

目录

一、集群和分布式

(一)集群Cluster

1、集群的定义:

2、常见的三种形式:

(二)分布式

二、lvs结构

(一)lvs概念

 (二)lvs集群类型

(三)nat模式

1、nat模式数据逻辑

2、基于nat模式的实验

(四)DR模式

1、DR模式数据逻辑

2、DR模式数据传输过程

3、DR模式的特点

4、基于DR模式的实验

(五)TUN模式

1、TUN模式数据传输过程

2、TUN模式特点


一、集群和分布式

(一)集群Cluster

1、集群的定义:

集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统

他是同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据 和代码都是一样的

2、常见的三种形式:

LBLoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问

HAHigh Availiablity(高可用)SPOFsingle Point Of failure)

MTBF:Mean Time Between Failure 平均无故障时间,正常时间

MTTR:Mean Time To Restoration repair)平均恢复前时间,故障时间

A=MTBF/MTBF+MTTR (0,1)99%, 99.5%, 99.9%, 99.99%, 99.999%

SLA Service level agreement (服务等级协议)是在一定开销下为保障服务的性能和可用性,服 务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在 常规的领域中,总是设定所谓的三个9 ,四个 9 来进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。 停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间
HPC High-performance computing (高性能计算,国家战略资源,不在课程范围内)

(二)分布式

      分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
      分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数 来提升效率

二、lvs结构

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

(一)lvs概念

VS Virtual Server
RS Real Server
CIP Client IP
VIP: Virtual serve IP VS 外网的 IP
DIP: Director IP VS 内网的 IP
RIP: Real server IP
访问流程: CIP <--> VIP == DIP <--> RIP

 (二)lvs集群类型

lvs-nat
修改请求报文的目标 IP, 多目标 IP DNAT
lvs-dr 操纵封装新的 MAC 地址
lvs-tun
在原请求 IP 报文之外新加一个 IP 首部
lvs-fullnat 修改请求报文的源和目标 IP

(三)nat模式

1、本质是多目标 IP DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS的 RIP
2、PORT 实现转发
3、RIP DIP 应在同一个 IP 网络,且应使用私网地址 ;RS 的网关要指向 DIP
4、请求报文和响应报文都必须经由 Director 转发, Director 易于成为系统瓶颈
5、支持端口映射,可修改请求报文的目标 PORT
6、VS 必须是 Linux 系统, RS 可以是任意 OS 系统
1、nat模式数据逻辑
1、客户端发送访问请求,请求数据包中含有请求来源( cip ),访问目标地址( VIP )访问目标端口 (9000port
2、VS 服务器接收到访问请求做 DNAT 把请求数据包中的目的地由 VIP 换成 RS RIP 和相应端口
3、RS1 相应请求,发送响应数据包,包中的相应保温为数据来源( RIP1 )响应目标( CIP )相应端口 (9000port
4、VS 服务器接收到响应数据包,改变包中的数据来源( RIP1-->VIP , 响应目标端口( 9000-->80
5、VS 服务器把修改过报文的响应数据包回传给客户端
6、lvs NAT 模式接收和返回客户端数据包时都要经过 lvs 的调度机,所以 lvs 的调度机容易阻塞
2、基于nat模式的实验

一、实验环境

1、准备三台虚拟机分别充当lvs(调度器)webserver1、2(web)

2、lvs为双网卡主机,一张网卡为nat  IP为172.25.254.100 ,一张为仅主机模式,ip为               192.168.0.100

3、webserver1为单网卡主机,ip为192.168.0.10

4、webserver2为单网卡主机,ip为192.168.0.20

二、实验配置

server1

root@webserver1 system-connections]# cat eth0.connection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=192.168.0.10/24,192.168.0.100  (将server的网关指定为lvs仅主机的ip)
dns=114.114.114.114

 在http中发布内容:
root@webserver1 system-connections]# cat /var/www/html/index.html 
webserver1 - 192.168.0.10

server2

[root@webserver2 system-connections]# cat eth0.connection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=192.168.0.20/24,192.168.0.100  (与server1一样)

 在http中发布内容:
root@webserver1 system-connections]# cat /var/www/html/index.html 
webserver1 - 192.168.0.20

lvs

 lvs:

[root@lvs ~]# hostname -I  (配置ip)
172.25.254.100 192.168.0.100

开启内核路由功能:
root@lvs ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

net.ipv4.ip_forward=1

root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

测试:
[root@lvs ~]# curl 192.168.0.10
webserver1 - 192.168.0.10
[root@lvs ~]# curl 192.168.0.20
wevserver2 - 192.168.0.20


[root@lvs ~]# yum install ipvsadm -y (安装lvs软件)
写策略:
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
查看策略:
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0     

测试:
[root@lvs ~]# for i in {1..10}
> do
> curl 172.25.254.100
> done
wevserver2 - 192.168.0.20
webserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
webserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
webserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
webserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
webserver1 - 192.168.0.10

(四)DR模式

DR Direct Routing ,直接路由, LVS 默认模式 , 应用最广泛 , 通过为请求报文重新封装一个 MAC 首部进行
转发,源 MAC DIP 所在的接口的 MAC ,目标 MAC 是某挑选出的 RS RIP 所在接口的 MAC 地址;源
IP/PORT ,以及目标 IP/PORT 均保持不变
1、DR模式数据逻辑
DR 模式中, RS 接收到访问请求后不需要回传给 VS 调度器,直接把回传数据发送给 client ,所以 RS vs
上都要有 vip

2、DR模式数据传输过程
1、 客户端发送数据帧给 vs 调度主机帧中内容为客户端 IP+ 客户端的 MAC+VIP+VIP MAC
2、VS 调度主机接收到数据帧后把帧中的 VIP MAC 该为 RS1 MAC ,此时帧中的数据为客户端 IP+ 客户端 的MAC+VIP+RS1 MAC
3、RS1 得到 2 中的数据包做出响应回传数据包,数据包中的内容为 VIP+RS1 MAC+ 客户端 IP+ 客户端 IP
MAC
3、DR模式的特点
1、Director 和各 RS 都配置有 VIP
2、 确保前端路由器将目标 IP VIP 的请求报文发往 Director
3、 在前端网关做静态绑定 VIP Director MAC 地址
4、RS RIP 可以使用私网地址,也可以是公网地址; RIP DIP 在同一 IP 网络;
5、RIP 的网关不能指向 DIP ,以确保响应报文不会经由 Director
6、RS Director 要在同一个物理网络
7、 请求报文要经由 Director ,但响应报文不经由 Director ,而由 RS 直接发往 Client
8、 不支持端口映射(端口不能修败
4、基于DR模式的实验

一、实验环境

1、准备5台虚拟机分别充cliter(客户端) router(路由)当lvs(调度器)webserver1、2(web)

2、cliter为单网卡,IP为172.25.254.200

3、router为双网卡主机,一张网卡为nat  IP为172.25.254.100 ,一张为仅主机模式,ip为               192.168.0.200

4、lvs为单网卡,ip为192.168.0.100

5、webserver1为单网卡主机,ip为192.168.0.10

6、webserver2为单网卡主机,ip为192.168.0.20

二、实验配置

server1

root@webserver1 system-connections]# cat eth0.connection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=192.168.0.10/24,192.168.0.100  (将server的网关指定为lvs仅主机的ip)
dns=114.114.114.114

 在http中发布内容:
root@webserver1 system-connections]# cat /var/www/html/index.html 
webserver1 - 192.168.0.10

ip a a 192.168.0.200/32 dev lo

关闭vip响应,不应答,只发送
[rootGwebserver1~]# echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore
[rootGwebserver1~]# echo 2>/proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver1~]# echo 2>/proc/sys/net/ipv4/conf/lo/arp_announce
[rootawebserver1~]# echo 1>/proc/sys/net/ipv4/conf/lo/arp_ignore

server2

root@webserver2 system-connections]# cat eth0.connection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
method=manual
address1=192.168.0.20/24,192.168.0.100  (将server的网关指定为lvs仅主机的ip)
dns=114.114.114.114

 在http中发布内容:
root@webserver1 system-connections]# cat /var/www/html/index.html 
webserver1 - 192.168.0.20

ip a a 192.168.0.200/32 dev lo

关闭vip响应,不应答,只发送
[rootGwebserver2~]# echo 1>/proc/sys/net/ipv4/conf/all/arp_ignore
[rootGwebserver2~]# echo 2>/proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver2~]# echo 2>/proc/sys/net/ipv4/conf/lo/arp_announce
[rootawebserver2~]# echo 1>/proc/sys/net/ipv4/conf/lo/arp_ignore

lvs

[root@lvs ~]# hostname -I
192.168.0.50

root@lvs ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1


[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2


给回环配置IP,子网掩码为32
[root@lvs 桌面]# ip a a 192.168.0.200/32 dev lo

router

root@router ~]# hostname -I
172.25.254.100 192.168.0.100 

开启内核路由
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1

cliter

[root@cliten ~]# hostname -I
172.25.254.200 

root@cliten ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.100  0.0.0.0         UG    100    0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

root@cliten ~]# for i in {1..10}; do  curl 192.168.0.200; done
wevserver2 - 192.168.0.20
wevserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
wevserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
wevserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
wevserver1 - 192.168.0.10
wevserver2 - 192.168.0.20
wevserver1 - 192.168.0.10

(五)TUN模式

1、TUN模式数据传输过程
1、 客户端发送请求数据包,包内有源 IP+vip+dport
2、 到达 vs 调度器后对客户端发送过来的数据包重新封装添加 IP 报文头,新添加的 IP 报文头中包含
TUNSRCIP(DIP)+TUNDESTIP(RSIP1) 并发送到 RS1
3、RS 收到 VS 调度器发送过来的数据包做出响应,生成的响应报文中包含 SRCIP(VIP)+DSTIP CIP ) +port,响应数据包通过网络直接回传给 client
2、TUN模式特点
1、DIP, VIP, RIP 都应该是公网地址
2、RS 的网关一般不能指向 DIP
3、 请求报文要经由 Director ,但响应不能经由 Director
4、 不支持端口映射
5、RS OS 须支持隧道功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值