一、LVS简单介绍

LVS(Linux Virtual Server)其实就是针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。所以,lvs需要内核有ipvs支持,linux-2.4.23以后ipvs都编译到内核里,如果你是之前版本确保你的内核支持ipvs后,只需安装ipvsadm就可以把一台服务器配置成负载调度器(Load Balancer)。对外提供服务的IP,也就是我们访问的IP称做VIP。调度器LB的任务主要是分发请求,真正处理的是真实服务器(Real Server)。

二、LVS三种模式介绍 网络地址传输模式 、直接路由模式、ip遂道模式

网络地址传输模式::LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。

lvs-nat模型特征

1、所有realserver与director在同一个子网中 2、rip真实服务器ip地址为私有地址,仅用于集群节点之间使 3、客户端的请求,响应都要经过director 4、ripserver 网关指向dip 5、可以实现端口映射 80 6、realserver可以是任何操作系统 7、dirctor可能成为系统瓶颈

DR(Direct Routing)直接路由模式。LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,RS收到请求包后 ,可直接将应答内容传给用户。此时要求LB和所有RS都必须在一个物理段内,且LB与RS群共享一个虚拟IP。

lvs-dr模型特征 (常用)

  1、集群节点必须在一个物理网络上(mac) 2、rip可以使用公网地址 3、director处理入站请求, 4、realserver网关不指向director 5、不支持端口映射 6、大多数操作系统支持realservers 7、dr dirctor 比nat director性能优越

IP隧道 (IP Tunneling)模式。LB收到用户请求包后,根据IP隧道协议封装该包,然后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议。

lvs-tun模型特征

集群节点可跨互联网   1、director和realserver不需要在一个网络中 2、rip一定不是私有地址 3、director 仅处理入站请求 4、realserver网关不能指向director ip 5、不支持端口映射 6、仅有支持ip遂道功能操作系统才能用在realserver  

三、lvs scheduling methods调度算法有10种

静态调度4个轮叫RR

加权轮叫WRR 目标地址hash  DH 源地地址hash  SH

动态调度6个

最少链接(Least Connections) 加权最少链接(Weighted Least Connections)WLC linux默认的调度 shortest expected delay   SED never queue  NQ 

基于本地的最少链接(Locality-Based Least Connections:DH)LBLC

带复制的基于本地最少链接(Locality-Based Least Connections with Replication)LBLCR

 

四:案例

案例一(LVS-NAT):

 

拓扑图:

image 

(说明:在web服务器上需配置网关即网关为192.168.10.1)

LVS上的配置:

开启linux的路由转发功能:

 

编辑[root@localhost ~]# vim /etc/sysctl.conf

把     7 net.ipv4.ip_forward = 0

改为 7 net.ipv4.ip_forward = 1

使其生效:

[root@localhost ~]# sysctl -p

 

配置yum:

编辑:

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

1 [rhel-debuginfo]
2 name=Red Hat Enterprise Linux server
3 baseurl=file:///mnt/cdrom/Server
4 enabled=1
5 gpgcheck=1
6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
7 [rhel-debuginfo]
8 name=Red Hat Enterprise Linux cluster
9 baseurl=file:///mnt/cdrom/Cluster
10 enabled=1
11 gpgcheck=1
12 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

 

安装ipvsadm:

[root@localhost ~]# yum install ipvsadm

 

增加条目:

[root@localhost ~]# ipvsadm -A -t 192.168.20.1:80 -s rr

[root@localhost ~]# ipvsadm -a -t 192.168.20.1:80 -r 192.168.10.2 -m

[root@localhost ~]# ipvsadm -a -t 192.168.20.1:80 -r 192.168.10.3 –m

 

[root@localhost ~]# service ipvsadm save

[root@localhost ~]# service ipvsadm start

 

web1服务器的配置:

安装web:

[root@localhost ~]# yum install httpd   //安装web服务器

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# vim index.html

其内容为:

web1(192.168.10.2)

 

[root@localhost html]# service httpd restart   //重启web服务

 

 

web2服务器的配置:

安装web:

[root@localhost ~]# yum install httpd           //安装web服务器

[root@localhost ~]# cd /var/www/html/

编辑网页:

[root@localhost html]# vim index.html

其内容为:

web2(192.168.10.3)

 

[root@localhost html]# service httpd restart  //重启web服务

 

测试:

 

用pc1访问:

 

image

刷新页面后:

 

image

在lvs上:

 

image

 

案例二(LVS-DR):

拓扑图:

image

配置步骤:

diretor上的配置:

ip信息:

image

开启linux的路由转发功能:

编辑[root@localhost ~]# vim /etc/sysctl.conf

把     7 net.ipv4.ip_forward = 0

改为 7 net.ipv4.ip_forward = 1

使其生效:

[root@localhost ~]# sysctl -p

 

配置yum:

编辑:

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

1 [rhel-debuginfo]
2 name=Red Hat Enterprise Linux server
3 baseurl=file:///mnt/cdrom/Server
4 enabled=1
5 gpgcheck=1
6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
7 [rhel-debuginfo]
8 name=Red Hat Enterprise Linux cluster
9 baseurl=file:///mnt/cdrom/Cluster
10 enabled=1
11 gpgcheck=1
12 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

 

安装ipvsadm:

[root@localhost ~]# yum install ipvsadm

 

增加条目:

[root@localhost ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g
[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g

保存和启动ipvsadm服务:

[root@localhost ~]# service ipvsadm save

[root@localhost ~]# service ipvsadm start

 

web1服务器上的配置:

Ip信息:

image

 

安装web:

[root@localhost ~]# yum install httpd   //安装web服务器

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# vim index.html

其内容为:

web1(192.168.10.2)

 

[root@localhost html]# service httpd restart   //重启web服务

 

添加下列条目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p                       //使其生效

 

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保证用vip还回

 

 

 

we21服务器上的配置:

Ip信息:

image

 

安装web:

[root@localhost ~]# yum install httpd   //安装web服务器

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# vim index.html

其内容为:

web2(192.168.10.3)

 

[root@localhost html]# service httpd restart   //重启web服务

 

添加下列条目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p                       //使其生效

 

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保证用vip还回

 

 

测试:

用pc访问:

image

 

 

刷新页面后:

 

image

 

在lvs上:

 

image