LVS的NAT模式+DR模式的存储挂载
一:LVS群集简介:lvs(linux virtual server)Linux的虚拟服务
Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲, CPU、I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单的提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。Linux 虚拟服务器(Linux Virtual Servers,LVS) 使用负载均衡技术将多台服务器组成一个虚拟服务器。它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价格低廉的解决方案
二:LVS的结构和工作原理:
LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。
三:lvs的工作模式有三种:
1.nat(LVS-NAT)
a.集群接点必须和LB在同一个子网中(即DIP和),不能跨域网段
b.RIP 是私有地址
c.所有的RIP的网关必须指向DIP
d.调度器处理所有的请求
e.端口地址转换
f.因为是NAT
h.单点瓶颈
2.直接路由(LVS-DR)
a.集群接点必须和LB必须在一个物理网段,之间不能有路由器
b.RIP可以使用公网地址,建议使用公网地址
c.LB仅处理请求,不处理响应
d.real server的网关不能指向DIP
e.不能做端口转换
f.并非所有的系统都可以做接点
h.LVS-DR 可以带动比LVS-NAT更多的接点
3.隧道(LVS-TUN)
a.集群接点和LB接点不必在同一个物理网络
b.RIP使用公网地址
c.LB只处理进来的请求,不处理出去的请求
d.响应的请求一定不经过LB
e.不支持端口地址转换
f.只能使用支持IP隧道协议的操作系统做集群接点
四:lvs的LB的调度方法及各个调度方法对应的算法:
1.静态调度方法:(fixed scheduling)不考虑后端连接状态
a:RR(round-robin)轮循着,它将请求依次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合于RS处理性能相差不大的情况;
b:WRR(weight round-robin)加权轮调,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS更多。相同权值的RS得到相同数目的连接数;
c:destination hashing 根据服务的请求转发到特定的服务器,跟用户建立粘性,提高缓存命中率
d:source hashing 将来自同一个用户的请求,始终转发到特定的路由器或防火墙(平均内网负载)
2.动态调度方法:(dynamic scheduling)考虑后端连接状态
a:LC (least-connect)最少连接,检查active和inactive,连接数(overhead)最少的接受请求
b:WLC(weight least-connect)加权最小连接数(集群最好的算法)
c:shortest expected delay (SED)最短期望延迟 ,不考虑非活动状态,在计算overhead之前,把非活动状态的总数加上1
d:NQ(never query)只要有空闲的,不考虑算法的接受请求;
e:LBLC(locality-based-least-connect:DH)支持权重(后面的是缓存服务器的)基于地址的最小连接数调度(Locality-Based Least-Connection) 将来自同一目的地址的请求分配给同一台RS如果这台服务器尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首先考虑;
f:LBLCR (locality-based-least-connect with replication scheduling)是对LBLC的改进,对于某一目的地址,对应有一个RS子集。对此地址的请求,为它分配子集中连接数最小的RS;如果子集中所有的服务器均已满负荷,则从集群中选择一个连接数较小的服务器,将它加入到此子集并分配连接;若一定时间内,这个子集未被做任何修改,则将子集中负载最大的节点从子集删除;
五:ipvsadm介绍:
ipvs是内核空间模块,用户在LB负载均衡器上使用ipvsadm命令进行操作,基于不同模式的不同调度算法进行设置,然后实现不同的不同的负载措施:
1.定义集群服务
ipvsadm -A|-E -t|-u|-f VIP:PORT {tcp|udp|firewall mark} -s 调度算法,默认是wlc
-A 添加、-E 修改
ipvsadm -D -t|-u VIP:PORT 删除定义的集群
2.要为集群服务定义realserver
ipvsadm -a|-e -t|-u VIP:port -r REALSERVER:port -g|-i|-m(模型) [-w weitht]
-a 添加、-e 修改、-w 权重、-d 删除
ipvsadm -d -t|-u VIP:port -r REALSERVER:PORT
-C 清除规则、-R 恢复、-S 保存
其中模式中的-g|-i|-m分别用于dr|tun|nat
3.查看
ipvsadm -ln
案例一:LVS的nat模式:director使用linux主机。realserver1和realserver2搭建web服务器
拓扑:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962299xbhF.png
LB---linux主机配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962301SdQL.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623025y9L.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962307hqgZ.png
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/Cluster #切换到Cluster仓库
# vim /etc/yum.repos.d/rhel-debuginfo.repo #编辑本地yum
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962309h2ET.png
# grep -i ip_vs /boot/config-2.6.18-164.el5 #查看内核是否支持ipvs
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962314Eaqq.png
# yum install ipvsadm –y #安装ipvs的管理工具ipvsadm
# ipvsadm -A -t 192.168.101.66:80 -s rr #定义一个群集服务器,vip为192.168.101.66,由于后面realserver是web,所以监听80
端口;-A表示添加,-t表示tcp,-s表示调度算法,rr表示调度算法轮询
# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.100 -m #定义一个realserver,-a表示添加,vip地址是192.168.101.66,-t表示
tcp,-r表示realserver是192.168.2.100。-m表示采用的是nat模式
# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.101 -m #定义一个realserver,-a表示添加,vip地址是192.168.101.66,-t表示
tcp,-r表示realserver是192.168.2.101。-m表示采用的是nat模式
# service ipvsadm save #保存ipvsadm的规则
# vim /etc/sysconfig/ipvsadm #规则保存在该文件中
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962316Ioqw.png
# service ipvsadm start #启动ipvsadm服务
# ipvsadm –ln #查看ipvsadm的规则详细信息
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962319Nvn8.png
# vim /etc/sysctl.conf #编辑该文件,打开数据包转发功能
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962320SRlt.png
# sysctl –p #使用该命令是刚才配置生效
realserver1配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962323UiKO.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_134996232576SV.png
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/Server/
# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装httpd服务器
# cd /var/www/html/
# echo "web1">index.html #创建网页
# service httpd start #启动httpd服务器
realserver2配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962327TRi9.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962329dGEe.png
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/Server/
# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装httpd服务器
# cd /var/www/html/
# echo "web2">index.html #创建网页
# service httpd start #启动httpd服务
测试:
登录之后显示的是realserver1
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623310o6c.png
刷新之后显示realserver2,表明使用的是轮询的方式
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623337UpR.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962339utvE.png
为realserver加上权重:
# ipvsadm –C #将原来的规则删除
# ipvsadm -A -t 192.168.101.66:80 -s wrr #使用权重轮询方式wrr
# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.100 -m -w 10 #-w表示权重
# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.101 -m -w 5
# service ipvsadmsave #将规则保存
# service ipvsadm restart #重启服务
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962342pj6f.png
定义的群集采用destination hashing方式:
# ipvsadm -E -t 192.168.101.66:80 -s dh #-E表示修改
测试:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962345XPBW.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962348OqC9.png
案例二:LVS的dr模式:搭建两台realserver服务器,安装web服务,在另外一台存储服务器上存储要访问的网页,当用户访问
LB时,将存储服务器上的网页挂载到realserver上。
拓扑:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962351abHw.png
realserver1配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962353KehV.png
# sysctl -a | grep arp #查看内核参数,含有arp字符的
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623545nJH.png
# echo "net.ipv4.conf.eth0.arp_announce = 2">> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_announce = 2">> /etc/sysctl.conf
# echo "net.ipv4.conf.eth0.arp_ignore = 1">> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_ignore = 1">> /etc/sysctl.conf
# sysctl –p #使新编辑的内核文件生效
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962355eheS.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962359OkWU.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962360y6eL.png
# service network restart
# route add -host 192.168.145.101 dev lo:0 #添加一条路由,保证数据包返回时是通过vip地址192.168.145.101,接口lo:0
# mkdir /mnt/cdrom #新建挂载点
# mount /dev/cdrom /mnt/cdrom/ #挂载光盘
# cd /mnt/cdrom/Server/
# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装httpd服务
# service httpd start #启动httpd服务器
# chkconfig httpd on
realserver2配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962362BYbZ.png
# echo "net.ipv4.conf.eth0.arp_announce = 2">> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_announce = 2">> /etc/sysctl.conf
# echo "net.ipv4.conf.eth0.arp_ignore = 1">> /etc/sysctl.conf
# echo "net.ipv4.conf.all.arp_ignore = 1">> /etc/sysctl.conf
# sysctl –p #使新编辑的内核文件生效
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962363UzDL.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962364r7v0.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623653dDk.png
# service network restart
# route add -host 192.168.145.101 dev lo:0 #添加一条路由,保证数据包返回时是通过vip地址192.168.145.101,接口lo:0
# mkdir /mnt/cdrom #新建挂载点
# mount /dev/cdrom /mnt/cdrom/ #挂在光盘
# cd /mnt/cdrom/Server/
# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装httpd服务器
# service httpd start #启动httpd服务器
# chkconfig httpd on
LB---Linux主机配置:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962367TPZF.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962363UzDL.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962364r7v0.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623687H1O.png
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/Cluster #切换到Cluster仓库中
# rpm -ivh ipvsadm-1.24-10.i386.rpm #安装ipvs的管理工具ipvsadm
# ipvsadm -A -t 192.168.145.101:80 -s rr #定义群集服务器,采用轮询方式rr
# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 –g #-g表示gateway,采用直连路由方式dr
# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 –g #-g表示gateway,采用直连路由方式dr
# service ipvsadm save #保存配置的规则
# service ipvsadm start #启动ipvsadm
# chkconfig ipvsadm on #设置开机自动启动
# ipvsadm –ln #查看规则
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962374GuoG.png
配置存储服务器:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962376gk27.png
# service nfs start #nfs服务默认已经安装过,在此直接启动即可
# mkdir /public/
# mkdir /private/
# vim /etc/exports #编辑共享清单exports,该文件默认是空文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962377Ftao.png
# cd /public/
# vim index.html
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962377uKYE.png
# cd ..
# cd /private/
# vim index.html
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962377v2Ni.png
# exportfs –rv #将设置共享的文件导出
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962379iPVS.png
将共享文件临时挂载到realserver上:
将网页文件临时挂载到realserver1上:
# showmount -e 192.168.145.202 #测试是否具有权限查看192.168.145.202服务器上的共享文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962380Escm.png
# mount 192.168.145.202:/public /var/www/html/ #将/public目录挂载到默认的httpd根目录下
http://5493845.blog.运维网.com/attachment/201210/11/5493845_134996238167Hh.png
将网页文件临时挂载到realserver2上:
# showmount -e 192.168.145.202 #测试是否具有权限查看192.168.145.202服务器上的共享文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962380Escm.png
# mount 192.168.145.202:/private /var/www/html/ #将/private目录挂载到默认的httpd根目录下
http://5493845.blog.运维网.com/attachment/201210/11/5493845_134996238167Hh.png
测试能否访问挂载的页面:
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623830ABm.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962388voio.png
将共享文件临时开机自动挂载到realserver上:
将网页文件开机自动挂载到realserver1上:
# umount /var/www/html/ #将临时挂载卸载掉
# vim /etc/fstab #编辑开机自动挂载文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499623890Jrl.png
# init 6 #重启系统
将网页文件开机自动挂载到realserver2上:
# umount /var/www/html/ #将临时挂载卸载掉
# vim /etc/fstab #编辑开机自动挂载文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962391VlBB.png
# init 6 #重启系统
测试能否访问到挂载的页面
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962392eyS3.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962394T1wu.png
连接自动挂载:
将网页文件连接自动挂载到realserver1上:
# umount /var/www/html/
# rpm -qa |grep auto #查看与自动挂载相关的软件包
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962395eDy9.png
# vim /etc/auto.master #编译与自动挂载相关的配置文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962396dhU0.png
# cp -p /etc/auto.misc /etc/auto.nfs #产生一个auto的主配置文件
# vim /etc/auto.nfs #编辑该文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962401f5BA.png
# service autofs restart #重启autofs服务
# vim /etc/httpd/conf/httpd.conf #编辑httpd主配置文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962402Uqg6.png
# service httpd restart #重启httpd服务器
将网页文件连接自动挂载到realserver2上:
# umount /var/www/html/
# rpm -qa |grep auto #查看与自动挂载相关的软件包
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962395eDy9.png
# vim /etc/auto.master #编译与自动挂载相关的配置文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962406bC0x.png
# cp -p /etc/auto.misc /etc/auto.nfs #产生一个auto的主配置文件
# vim /etc/auto.nfs
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962411ieFg.png
# service autofs restart #重启autofs服务
# vim /etc/httpd/conf/httpd.conf
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962412vB9v.png
# service httpd restart #重启httpd服务器
测试能否访问到挂载的页面:
在realserver1上查看挂载情况:
# mount #查看挂载的共享文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499624148ZbC.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962416ic5y.png
# mount #查看挂载的共享文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962421w0bS.png
在realserver2上查看挂载情况:
# mount #查看挂载的共享文件
http://5493845.blog.运维网.com/attachment/201210/11/5493845_13499624148ZbC.png
http://5493845.blog.运维网.com/attachment/201210/11/5493845_1349962423RRTA.png
# mount
http://blog.运维网.com/attachment/201210/213718379.png
页:
[1]