设为首页 收藏本站
查看: 954|回复: 0

[经验分享] LVS的NAT模式+DR模式的存储挂载

[复制链接]

尚未签到

发表于 2019-1-4 08:55:38 | 显示全部楼层 |阅读模式
  一: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服务器
  拓扑:

  LB---linux主机配置:
  
  
  
  [root@lyt ~]# mkdir /mnt/cdrom
  [root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
  [root@lyt ~]# cd /mnt/cdrom/Cluster     #切换到Cluster仓库
  [root@lyt Cluster]# vim /etc/yum.repos.d/rhel-debuginfo.repo      #编辑本地yum
  
  [root@lyt Cluster]# grep -i ip_vs /boot/config-2.6.18-164.el5     #查看内核是否支持ipvs
  
  [root@lyt Cluster]# yum install ipvsadm –y      #安装ipvs的管理工具ipvsadm
  [root@lyt Cluster]# ipvsadm -A -t 192.168.101.66:80 -s rr      #定义一个群集服务器,vip为192.168.101.66,由于后面realserver是web,所以监听80
  端口;-A表示添加,-t表示tcp,-s表示调度算法,rr表示调度算法轮询
  [root@lyt Cluster]# 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模式
  [root@lyt Cluster]# 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模式
  [root@lyt Cluster]# service ipvsadm save    #保存ipvsadm的规则
  [root@lyt Cluster]# vim /etc/sysconfig/ipvsadm       #规则保存在该文件中
  
  [root@lyt Cluster]# service ipvsadm start    #启动ipvsadm服务
  [root@lyt Cluster]# ipvsadm –ln      #查看ipvsadm的规则详细信息
  
  [root@lyt Cluster]# vim /etc/sysctl.conf       #编辑该文件,打开数据包转发功能
  
  [root@lyt Cluster]# sysctl –p      #使用该命令是刚才配置生效
  realserver1配置:
  
  
  [root@localhost ~]# mkdir /mnt/cdrom
  [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
  [root@localhost ~]# cd /mnt/cdrom/Server/
  [root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm       #安装httpd服务器
  [root@localhost Server]# cd /var/www/html/
  [root@localhost html]# echo "web1">index.html       #创建网页
  [root@localhost html]# service httpd start    #启动httpd服务器
  realserver2配置:
  
  
  [root@localhost ~]# mkdir /mnt/cdrom
  [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
  [root@localhost ~]# cd /mnt/cdrom/Server/
  [root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm      #安装httpd服务器
  [root@localhost Server]# cd /var/www/html/
  [root@localhost html]# echo "web2">index.html     #创建网页
  [root@localhost html]# service httpd start      #启动httpd服务
  测试:
  登录之后显示的是realserver1
  
  刷新之后显示realserver2,表明使用的是轮询的方式
  
  
  为realserver加上权重:
  [root@lyt Cluster]# ipvsadm –C       #将原来的规则删除
  [root@lyt Cluster]# ipvsadm -A -t 192.168.101.66:80 -s wrr        #使用权重轮询方式wrr
  [root@lyt Cluster]# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.100 -m -w 10      #-w表示权重
  [root@lyt Cluster]# ipvsadm -a -t 192.168.101.66:80 -r 192.168.2.101 -m -w 5
  [root@lyt Cluster]# service ipvsadm  save      #将规则保存
  [root@lyt Cluster]# service ipvsadm restart       #重启服务
  
  定义的群集采用destination hashing方式:
  [root@lyt Cluster]# ipvsadm -E -t 192.168.101.66:80 -s dh        #-E表示修改
  测试:
  
  
  案例二:LVS的dr模式:搭建两台realserver服务器,安装web服务,在另外一台存储服务器上存储要访问的网页,当用户访问
  LB时,将存储服务器上的网页挂载到realserver上。
  拓扑:

  realserver1配置:
  
  [root@localhost ~]# sysctl -a | grep arp      #查看内核参数,含有arp字符的
  
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">> /etc/sysctl.conf     
  [root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2">> /etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">> /etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1">> /etc/sysctl.conf
  [root@localhost ~]# sysctl –p      #使新编辑的内核文件生效
  
  
  
  [root@localhost ~]# service network restart      
  [root@localhost ~]# route add -host 192.168.145.101 dev lo:0       #添加一条路由,保证数据包返回时是通过vip地址192.168.145.101,接口lo:0
  [root@localhost ~]# mkdir /mnt/cdrom      #新建挂载点
  [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/         #挂载光盘
  [root@localhost ~]# cd /mnt/cdrom/Server/
  [root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm        #安装httpd服务
  [root@localhost Server]# service httpd start     #启动httpd服务器
  [root@localhost Server]# chkconfig httpd on
  realserver2配置:
  
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">> /etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2">> /etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">> /etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1">> /etc/sysctl.conf
  [root@localhost ~]# sysctl –p      #使新编辑的内核文件生效
  
  
  
  [root@localhost ~]# service network restart
  [root@localhost ~]# route add -host 192.168.145.101 dev lo:0       #添加一条路由,保证数据包返回时是通过vip地址192.168.145.101,接口lo:0
  [root@localhost ~]# mkdir /mnt/cdrom        #新建挂载点
  [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/      #挂在光盘
  [root@localhost ~]# cd /mnt/cdrom/Server/
  [root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm       #安装httpd服务器
  [root@localhost Server]# service httpd start       #启动httpd服务器
  [root@localhost Server]# chkconfig httpd on
  LB---Linux主机配置:
  
  
  
  
  [root@lyt ~]# mkdir /mnt/cdrom
  [root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
  [root@lyt ~]# cd /mnt/cdrom/Cluster          #切换到Cluster仓库中
  [root@lyt Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm        #安装ipvs的管理工具ipvsadm
  [root@lyt Cluster]# ipvsadm -A -t 192.168.145.101:80 -s rr       #定义群集服务器,采用轮询方式rr
  [root@lyt Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 –g      #-g表示gateway,采用直连路由方式dr
  [root@lyt Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 –g      #-g表示gateway,采用直连路由方式dr
  [root@lyt Cluster]# service ipvsadm save      #保存配置的规则
  [root@lyt Cluster]# service ipvsadm start      #启动ipvsadm
  [root@lyt Cluster]# chkconfig ipvsadm on     #设置开机自动启动
  [root@lyt Cluster]# ipvsadm –ln           #查看规则
  
  配置存储服务器:
  
  [root@localhost ~]# service nfs start       #nfs服务默认已经安装过,在此直接启动即可
  [root@localhost ~]# mkdir /public/
  [root@localhost ~]# mkdir /private/
  [root@localhost ~]# vim /etc/exports       #编辑共享清单exports,该文件默认是空文件
  
  [root@localhost ~]# cd /public/
  [root@localhost public]# vim index.html
  
  [root@localhost public]# cd ..
  [root@localhost /]# cd /private/
  [root@localhost private]# vim index.html
  
  [root@localhost private]# exportfs –rv       #将设置共享的文件导出
  
  将共享文件临时挂载到realserver上:
  将网页文件临时挂载到realserver1上
  [root@localhost ~]# showmount -e 192.168.145.202     #测试是否具有权限查看192.168.145.202服务器上的共享文件
  
  [root@localhost ~]# mount 192.168.145.202:/public /var/www/html/       #将/public目录挂载到默认的httpd根目录下
  
  将网页文件临时挂载到realserver2上
  [root@localhost ~]# showmount -e 192.168.145.202     #测试是否具有权限查看192.168.145.202服务器上的共享文件
  
  [root@localhost ~]# mount 192.168.145.202:/private /var/www/html/       #将/private目录挂载到默认的httpd根目录下
  
  测试能否访问挂载的页面:
  

  将共享文件临时开机自动挂载到realserver上:
  将网页文件开机自动挂载到realserver1上
  [root@localhost ~]# umount /var/www/html/     #将临时挂载卸载掉
  [root@localhost ~]# vim /etc/fstab      #编辑开机自动挂载文件

  [root@localhost ~]# init 6      #重启系统
  将网页文件开机自动挂载到realserver2上
  [root@localhost ~]# umount /var/www/html/ #将临时挂载卸载掉
  [root@localhost ~]# vim /etc/fstab #编辑开机自动挂载文件

  [root@localhost ~]# init 6       #重启系统
  测试能否访问到挂载的页面


  连接自动挂载:
  将网页文件连接自动挂载到realserver1上
  [root@localhost ~]# umount /var/www/html/
  [root@localhost ~]# rpm -qa |grep auto      #查看与自动挂载相关的软件包
  
  [root@localhost ~]# vim /etc/auto.master       #编译与自动挂载相关的配置文件

  [root@localhost ~]# cp -p /etc/auto.misc /etc/auto.nfs       #产生一个auto的主配置文件
  [root@localhost ~]# vim /etc/auto.nfs       #编辑该文件
  
  [root@localhost ~]# service autofs restart       #重启autofs服务
  [root@localhost ~]# vim /etc/httpd/conf/httpd.conf     #编辑httpd主配置文件

  [root@localhost ~]# service httpd restart     #重启httpd服务器
  将网页文件连接自动挂载到realserver2上
  [root@localhost ~]# umount /var/www/html/
  [root@localhost ~]# rpm -qa |grep auto #查看与自动挂载相关的软件包
  
  [root@localhost ~]# vim /etc/auto.master #编译与自动挂载相关的配置文件

  [root@localhost ~]# cp -p /etc/auto.misc /etc/auto.nfs #产生一个auto的主配置文件
  [root@localhost ~]# vim /etc/auto.nfs
  
  [root@localhost ~]# service autofs restart #重启autofs服务
  [root@localhost ~]# vim /etc/httpd/conf/httpd.conf

  [root@localhost ~]# service httpd restart      #重启httpd服务器
  测试能否访问到挂载的页面:
  在realserver1上查看挂载情况:
  [root@localhost ~]# mount #查看挂载的共享文件
  

  [root@localhost ~]# mount #查看挂载的共享文件

  在realserver2上查看挂载情况:
  [root@localhost ~]# mount #查看挂载的共享文件
  

  [root@localhost ~]# mount





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659160-1-1.html 上篇帖子: Lvs部署 下篇帖子: Zabbix自建模板监控,自动发现LVS连接状态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表