1、LVS原理html
LVS(Linux Virtual Server)其实就是针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。因此,lvs须要内核有ipvs支持,linux-2.4.23之后ipvs都编译到内核里,若是你是以前版本确保你的内核支持ipvs后,只需安装ipvsadm就能够把一台服务器配置成负载调度器(Load Balancer)。对外提供服务的IP,也就是咱们访问的IP称作VIP。调度器LB的任务主要是分发请求,真正处理的是真实服务器(Real Server)。linux
2、LVS三种模式介绍 网络地址传输模式 、直接路由模式、ip遂道模式web
网络地址传输模式::LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。算法
lvs-nat模型特征vim
一、全部realserver与director在同一个子网中 二、rip真实服务器ip地址为私有地址,仅用于集群节点之间使 三、客户端的请求,响应都要通过director 四、ripserver 网关指向dip 五、能够实现端口映射 80 六、realserver能够是任何操做系统 七、dirctor可能成为系统瓶颈服务器
DR(Direct Routing)直接路由模式。LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,RS收到请求包后 ,可直接将应答内容传给用户。此时要求LB和全部RS都必须在一个物理段内,且LB与RS群共享一个虚拟IP。网络
lvs-dr模型特征 (经常使用)ide
一、集群节点必须在一个物理网络上(mac) 二、rip可使用公网地址 三、director处理入站请求, 四、realserver网关不指向director 五、不支持端口映射 六、大多数操做系统支持realservers 七、dr dirctor 比nat director性能优越性能
IP隧道 (IP Tunneling)模式。LB收到用户请求包后,根据IP隧道协议封装该包,而后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议。测试
lvs-tun模型特征
集群节点可跨互联网 一、director和realserver不须要在一个网络中 二、rip必定不是私有地址 三、director 仅处理入站请求 四、realserver网关不能指向director ip 五、不支持端口映射 六、仅有支持ip遂道功能操做系统才能用在realserver
3、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):
拓扑图:
(说明:在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访问:
刷新页面后:
在lvs上:
案例二(LVS-DR):
拓扑图:
配置步骤:
diretor上的配置:
ip信息:
开启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信息:
安装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信息:
安装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访问:
刷新页面后:
在lvs上: