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

[经验分享] lvs的NAT模式

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-28 08:56:21 | 显示全部楼层 |阅读模式
1、什么是LVS?

linux virtual service,linux虚拟服务,使用多台服务器一起工作来提高服务的访问和处理性能


     通过LVS提供的负载均衡技术和linux系统实现一个高性能、高可用的服务器集群,它具有良好的可靠性、可扩展性和可操作性,成本低廉的特性
负载均衡:软件实现、硬件实现
负载均衡设备:


2、lvs的工作模式
   (1)nat模式 :通过网络 地址转换访问服务(最多同时支持20台服务器)
   (2)tun模式:通过IP隧道访问服务  

   (3)dr模式:(direct )直接调度访问服务, 直接路由,

         即调度服务器与真实服务器都有一块网卡连在同一个物理网段上。

LVS 是 Linux  Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:
  • 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】
  • 服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS
  • 共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务[不是很理解]



4、LVS的NAT 模式:



server1/2 是后端服务器/真实服务器 用来提供服务
Director Server:调度服务器
RIP:实际是指真实服务器的IP地址
DIP:调度服务器地址,与外面连接的地址是调度地址:172.16.10.10
VIP:虚拟IP
CIP:客户端IP地址

进入防火墙之后 进行地址转换



iptables命令详解:  

   1.filter 定义数据包中允许或者不允许的策略
   2.nat 定义地址转换的
   3.mangle功能:修改报文原数据 即:修改TTL

在做NAT和DNAT的时候,目标地址转换必须在路由之前转换 。所以 我们必须在外网而后内网的接口处进行设置关卡 。


这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。      

iptables定义规则的方式:
  格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
  -t table :3个filter nat mangle
  COMMAND:定义如何对规则进行管理
  chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
  CRETIRIA:指定匹配标准
  -j ACTION :指定如何进行处理

  比如:不允许172.16.0.0/24的进行访问。
  iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
  当然你如果想拒绝的更彻底:
  iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT

  iptables -L -n -v #查看定义规则的详细信息



Director Method:(调度方法)

RR:轮循调度

WRR:加权轮循调度。根据硬件配置的好坏来设置权值

LC:最小连接数调度。连接数量最少,就将用户的访问分配到那台服务器,让其为用户提高服务。
WLC:加权最小连接调度
LBLC:基于地址的最小连接数调度。若后端服务器负荷已满,则就会将用户请求分配给另一台连接数最小的那台服务器
DH:目标地址散列算法,以目标地址为关键字来查找一个静态hash表来选择RS

SH:源地址散列算法,以源地址为关键字来查找一个静态的hash表来选择RS


用到 LVS服务最多的前三种 : WEB服务,数据库, 邮件。


LVS的NAT模式配置

(1) 防火墙服务器配置:
   两个网卡 eth0:10.0.2.201  netmask:255.255.0.0

           eth1:192.168.10.5  netmask:255.255.0.0   

   添加网卡要poweroff再添加

    启用路由转发(net.ipve.ip_forward=1 )   

     # vim /etc/sysctl.conf
   
     net.ipv4.ip_forward = 1

   # sysctl -p
   配置 NAT(目的地址转换)     


   # iptables -t nat -A PREROUTING -d 10.0.2.201 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.6


   # iptables -F  

     # service iptables save



(2) Director服务器配置:(调度服务器)

           两块网卡  eth0: 192.168.10.6   netmask:255.255.0.0

                       eth1:172.16.10.3     netmask:255.255.0.0

       eth1的配置文件:

      # cp /etc/sysconfig/network-scripts/ifcfg-eth0   /eth1 然后将DEVICE=eth1注释掉UUID 修改MAC地址
     配置网关 eth0的gateway:192.168.10.5  eth1不用配置网关
    配置调度表

           # yum install ipvsadm

              如果无法install,就进入挂载点下的Packages下 # ls |grep ipvsadm

           # ipvsadm -A -t  192.168.10.6:80 -s rr    # -A 添加调度服务器 添加调度地址
   
      # ipvsadm -a -t 192.168.10.6:80 -r 172.16.10.1:80 -m   # 真实服务器 -a 添加  -m 指net模式

           # ipvsadm -a -t 192.168.10.6:80 -r 172.16.10.2:80  -m  # 真实服务器

      # service ipvsadm save  #

      # service ipvsadm start  

      # ipvsadm -L -n    # -L -n 查看调度表 Masq 表示NAT模式 Activeconn 活动的连接数量

      # ipvsadm -L -n --stats  # Conns连接数量 INPkts 进来的数据包 OUTPkts出去的数据包

      # watch -n 1 ipvsadm -L -n --stats  # watch 每隔一秒钟显示一次。动态观察
   

调度服务器由于进行了配置,

就会将收到的数据包的目标IP地址转换为真实服务器的IP地址。(server1 ,server2,server3...)



(3 )  真实服务器/后端服务器 (RS - real server)
     配置IP地址 server1:172.16.10.1  netmask : 255.255.0.0

                  server2:172.16.10.2  netmask : 255.255.0.0

                这两台RS服务器都要进行下列配置     

    配置网关 gateway:172.16.10.3 (调度服务器eth1的IP)
       目前配两台真实服务器,为client 提供web服务:

                         #yum install http*

                         # vim /etc/httpd/conf/httpd.conf

                           -->将#去掉。可以自己定义如:www.zll.com 也可以不修改只把#去掉就可以了。

             # cd /var/www/html
               # vim index.html ---> hello!ZLL


      启动相应服务 service httpd start

       清空防火墙   iptables -F
        测试:# curl   172.16.10.1      


(4) 客户端:
      IP地址:10.0.2.200 (防火墙的eth0 ip必须要和客户端IP在同一个网段)

          测试: # curl  10.0.2.201 (防火墙eth0的ip )

              或:在浏览器输入:10.0.2.201

        若看到在RS服务器配置的index.html的内容,则成功




(5 ) lvs的持久性连接
1、socket:

2、cookie:保存用户的相关信息.cookie数据保存在客户端。

          cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session
3、session:保存用户提交的表单,选择之类的。session数据保存在服务器端

                       session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面            应当使用COOKIE



   (1)PCC(persistent client connecttions)方式:将来自于同一个客户端对所有端口的请求,
     始终定向到上次选择的RS,缺点是不能实现不同的服务请求访问不同的RS。
     # ipvsadm -A -t 10.0.5.150:0 -s rr -p 600
     # ipvsadm -a -t 10.0.5.150:0 -r 10.0.5.151 -m
     # ipvsadm -a -t 10.0.5.150:0 -r 10.0.5.152 -m
      
    (2)PPC(persistent port connecttions)方式:将来自于同一个客户端对同一个集群服务的请求
     ,始终定向到上次选定的RS
     # ipvsadm -A -t 10.0.5.150:80 -s rr -p 600
     # ipvsadm -a -t 10.0.5.150:80 -r 10.0.5.151:80 -m
     # ipvsadm -a -t 10.0.5.150:80 -r 10.0.5.152:80 -m
      
     (3)PNMPP(persistent Netfilter Marked Packet Persistence):持久防火墙标记连接,
     根据iptables的标记规则,将相关的服务标记为同一类别的请求
     # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 80
       -j MARK --set-mark 10 (0-->99)
     # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 443
       -j MARK --set-mark 10 (0-->99)
        
     # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 21
       -j MARK --set-mark 20 (0-->99)
     # iptables -t mangle -A PREROUTING -d 10.0.5.150 -p tcp --dport 20
       -j MARK --set-mark 20 (0-->99)
   
     # ipvsadm -A -f 10 -s wrr -p 600     10标记的 使用wrr算法 600秒
     # ipvsadm -A -f 20 -s wrr -p 600
     # ipvsadm -a -f 10 -r 10.0.5.151 -m -w 2  -m表示nat模式 -w 权重为2
     # ipvsadm -a -f 10 -r 10.0.5.152 -m -w 3
     # ipvsadm -a -f 20 -r 10.0.5.153 -m -w 2
     # ipvsadm -a -f 20 -r 10.0.5.154 -m -w 3



运维网声明 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-105277-1-1.html 上篇帖子: 使用shell脚本检测lvs中realserver状态,并实现自动删除已挂机主机 下篇帖子: lvs的DR模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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