bobbai 发表于 2019-1-5 09:59:41

LVS(Linux 虚拟服务)NAT模式配置详解

一、前言
二、原理
三、环境
四、配置
   1.后端web服务器配置
   2.前端LVS服务器配置
五、测试
六、ipvsadm常用命令
--------------------------------------
一、前言
   LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
二、LVS-NAT原理
  详细原理找百度;
三、环境,实现LVS—NAT模式;
系统:CentOS6.4 32位
    拓扑图:LVS-NAT模式
http://s3.运维网.com/wyfs02/M00/22/B6/wKioL1Mj9CziEO-mAADi8VWqwlg295.jpg
四、配置
1.后端web服务器配置(生产环境中web页面应该是一样的,为了测试,显示才不一致。)
1.1.web1配置
1
2
3
4
5
6
# setenforce 0      //关闭SELinux及防火墙
# service iptables stop
# yum install httpd
# echo "This is web1" >/var/www/html/index.html
# service httpd start
# ping 192.168.4.1    //需通
1.2.web2配置
1
2
3
4
5
6
7
8
# setenforce 0      //关闭SELinux及防火墙
# service iptables stop
# yum install httpd
# echo "This is web1" >/var/www/html/index.html
# vim /etc/httpd/conf/httpd.conf
Listen 800
# service httpd start
# ping 192.168.4.1    //需通
2.前端LVS服务器配置
2.1.使用轮询算法(rr)
配置调度设备ip转发和默认路由;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1       //开启路由转发功能
# route
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.4.0   *               255.255.255.0   U   1      0      0 eth3
192.168.2.0   *               255.255.255.0   U   1      0      0 eth1
default         192.168.2.254   0.0.0.0         UG    0      0      0 eth1
# yum install ipvsadm         //安装ipvs
# ipvsadm -A -t 192.168.2.10:80 -s rr                     //定义群集服务,算法为轮训
# ipvsadm -a -t 192.168.2.10:80 -r 192.168.4.100:80 -m      //定义真实服务器,使用NAT 模式
# ipvsadm -a -t 192.168.2.10:80 -r 192.168.4.200:800 -m
# ipvsadm -L -n    //查看集群服务和后方节点
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.2.10:80 rr
-> 192.168.4.100:80             Masq    1      0          0
-> 192.168.4.200:800            Masq    1      0          0


客户端访问测试,测试结果(基本1:1)
1
2
3
4
5
6
7
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.2.10:80 rr
-> 192.168.4.100:80             Masq    1      0          12
-> 192.168.4.200:800            Masq    1      0          13
2.2.使用加权的轮询算法(wrr)
1
2
3
4
5
6
7
8
9
# ipvsadm -E -t 192.168.2.10:80 -s wrr   //修改群集服务为加权轮询算法
# ipvsadm -e -t 192.168.2.10:80 -r 192.168.4.200:800 -m -w 2//修改后方某节点权重设2
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.2.10:80 wrr
-> 192.168.4.100:80             Masq    1      0          0
-> 192.168.4.200:800            Masq    2      0          0
访问几次后查看测试结果(基本1:2)
1
2
3
4
5
6
7
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.2.10:80 wrr
-> 192.168.4.100:80             Masq    1      0          7
-> 192.168.4.200:800            Masq    2      0          14
2.3.保存及应用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# service ipvsadm save         //保存
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      
# vim /etc/sysconfig/ipvsadm   //查看
1 -A -t 192.168.2.10:80 -s wrr
2 -a -t 192.168.2.10:80 -r 192.168.4.100:80 -m -w 1
3 -a -t 192.168.2.10:80 -r 192.168.4.200:800 -m -w 2
# ipvsadm -C                     //临时清除
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn                                                   
# service ipvsadm restart      //重新应用
ipvsadm: Clearing the current IPVS table:                  
ipvsadm: Unloading modules:                              
ipvsadm: Clearing the current IPVS table:                  
ipvsadm: Applying IPVS configuration:                     
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.2.10:80 wrr
-> 192.168.4.100:80             Masq    1      0          0
-> 192.168.4.200:800            Masq    2      0          0
五、测试方法
客户机浏览器访问http://192.168.2.10即可。
六、ipvsadm常用命令
-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
-r --real-server server-address 真实的服务器
-w --weight weight 真实服务器的权值
-m --masquerading 指定LVS 的工作模式为NAT模式
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
or
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务
or
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默认的调度算法是: wlc.
-n --numeric 输出IP 地址和端口的数字形式
-h --help 显示帮助信息



页: [1]
查看完整版本: LVS(Linux 虚拟服务)NAT模式配置详解