码迷,mamicode.com
首页 > 其他好文 > 详细

LVS模式之nat

时间:2017-10-24 01:46:09      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:lvs   nat   

LVS简介

    LVS:Linux Virtual Server,简译Linux虚拟服务器,一个虚拟的服务器集群系统,也可以说是负载调度器,是中国国内最早出现的自由软件项目之一。系统扩展的方式有两种:Scale UP(向上增强)和Scale Out(向外扩展)。简单的说向上增强就是升级硬件,i5不够买i7,硬件终究有瓶颈的,所以向外扩展的可行性比较大。向外扩展有多种方式,增加设备、调度分配,Cluster。


什么是Cluster?

    Cluster就是集群,为解决某个特定问题将多台计算机组合起来形成的单个系统。


Linux Cluster类型

    LB:负载均衡

    HA:高可用

    HPC:高性能


LB Cluster的实现

    一般来说实现方式有软件实现和硬件实现。硬件的实现就是需要比较昂贵的设备,比如:F5,A10。LVS属于软件的实现负载均衡,除了lvs还有nginx,haproxy等等很多实现方式。这里我们只着重介绍lvs。根据工作的协议层次不同,又可分为传输层和应用层两种。lvs是工作在传输层上,不支持应用层,这也是它的不足之处。


LVS工作原理:

    专门用来做lvs的我们称之为VS(Virtual Server),后面接真正提供服务的RS(Real Server)。VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。


lvs集群的类型:

        lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

        lvs-dr:操纵封装新的MAC地址

        lvs-tun:在原请求IP报文之外新加一个IP首部

        lvs-fullnat:修改请求报文的源和目标IP


LVS/NAT的实现

    前提:关闭防火墙、SELINUX,date时间一致

    网络环境:

       技术分享

    说明:客户端通过vs访问后面的http服务,实现nat的调度。

    

    client配置

]#route add  default gw 172.18.32.112         <===添加默认路由,指定为vs的VIP

    RS1配置

]#yum install -y httpd
]#vim /var/www/html/index.html
server RS1
]#service httpd start                         <===启动http服务,centos7为ststemctl start httpd
]#route add  default gw 192.168.32.112

    RS2配置   

]#yum install -y httpd
]#vim /var/www/html/index.html
server RS2
]#service httpd start  
]#route add  default gw 192.168.32.112

    VS配置

]#yum install -y ipvsadm                       <===ipvsadm是lvs的管理工具,后面有介绍
]#ipvsadm -A -t 172.18.32.112:80 -s rr         <===添加地址和端口进行调度 -s 指定调度算法
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m          <===添加需要调度的后台服务器 -m 代表natl类型
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m
]#echo 1 > /proc/sys/net/ipv4/ip_forward                     <===开启转发,临时生效
]#vim /etc/sysctl.conf                                       <===永久生效
net.ipv4.ip_forward=1
]#ipvsadm -Ln                                                <===查看列表
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.18.32.112:80 wrr
  -> 192.168.32.9:80              Masq    3      0          0         
  -> 192.168.32.111:80            Masq    1      0          0

    测试

]#for i in {1..10};do curl 172.18.32.112;done
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2
server RS1
server RS2

    也可以试试其他算法  

]#ipvsadm -C
]#ipvsadm -A -t 172.18.32.112:80 -s wrr
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m -w 3
]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m -w 1

    测试

]#for i in {1..10};do curl 172.18.32.112;done
server RS1
server RS2
server RS2
server RS2
server RS1
server RS2
server RS2
server RS2
server RS1
server RS2

写了这么多,是不是还对具体调度的实现不是很理解呢?根据上面的拓扑图给大家解释一下:当CLIENT访问我公司网站时,我们把公网地址配置在VS上为VIP,同时也配置了连接内网的DIP。第一次地址从CIP-->VIP,VS根据算法进行替换VIP,这时候变成CIP-->RIP,RS收到进行响应的时候是RIP-->CIP,到达VS进行替换变成VIP-->CIP,这样CLIENT收到响应报文。因为响应报文也从VS回去,这就造成了VS负载比较大,所以RS不能太多,有局限性。后面我们介绍另外一种方式LVS/DR方式,会解决这个问题。


LVS模式之nat

标签:lvs   nat   

原文地址:http://maguofu.blog.51cto.com/12431016/1975303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!