3213213 发表于 2016-4-29 16:50:26

LVS类型之NAT

                      LVS:Linux virtual server将用户请求的报文转发给后端服务器,根据用户请求的ip+端口号,进行处理
LVS与iptables不能同时使用;
LVS以规则方式进行检查:
    ipvsadm:用户空间,管理集群服务的命令行工具
    ipvs:内核
转发的标准:调度方法(调度中的算法,计算机制)---》schedule method
当用户请求的是IP+22端口,于是进入PREROUTING,直接进入本地(通过INPUT),因为它不是请求的集群服务;
当用户请求的ip+80端口,判断为集群服务,于是内核ipvs进行转发,提供调度功能;
一个调度器只为一个集群服务提供调度功能;


调度器前端提供服务的ip:VIP,virtual ip(面向互联网客户端)

web服务ip:RIP,rs ip
调度器转发给服务端的ip:DIP(面向real server)
客户端的ip:CIP,client ip


LVS类型:
        NAT:地址转换(目标地址转换)----》多目标的DNAT
        DR:直接路由,direct routing
        TUN:隧道
NAT:               
集群节点(real server ip)的ip网段必须和DIP是同一网段
RIP通常是私有地址,仅用于各集群节点间的通信
调度器(director)位于client和real server之间,并负责处理进出的所有通信(director有两张网卡)
real server必须将网管指向DIP
支持端口映射(客户端请求的80,real server可以返回8080的端口进行数据报文传输)
real server可以使用任意操作系统
较大规模应用场景中,director易成为系统瓶颈

ipvsadm:
        管理集群服务
        添加:-A -t|u|f service-address [-s scheduler](调度算法默认为wlc)
                -t:tcp协议的集群服务
                -u:udp协议的集群服务
                -f:防火墙标记firewallmark(FWM)
                service-address:mark number
        修改:-E
        删除:-D -t|u|f service-address
                #ipvsadm -A -t 172.16.100.1:80 -s rr
        管理集群服务中的RS
        添加:-a -t|u|f service-address -r service-address [-g|i|m] [-w weight]
                service-address:事先定义好的某集群服务
                -r service-address:某RS的地址,在nat模型当中可以使用ip+port实现端口映射
                [-g|i|m] [-w weight]:表示LVS类型
                -g:DR模型(默认为DR模型)
                -i:TUN
                -m:NAT
                -w:指定权重
        修改:-e
        删除:-d
              -t|u|f service-address -r service-address
        #ipvsadm -a -t 172.16.100.1 -r 192.168.10.8 -m
        #ipvsadm -a -t 172.16.100.1 -r 192.168.10.9 -m
        查看:
             -L或者-l
             -n:数字格式,显示IP+端口号(主机地址和端口)
                --stats:统计数据信息
                --rate:用来输出速率信息(cps:connection per seconds)
                --timeout:用于输出超时时间值(显示tcp、tcpfin、udp的会话超时时长)
                --daemon
                -c:--connection显示当前连接数(-L连用)
        -C:删除所有集群服务,情况ipvs规则
        保存规则:
                  -S:#ipvsadm -S > /path/to/somefile
        载入此前的规则:
                  -R:#ipvsadm -R < /path/to/somefile
接下来示例演示NAT类型LVS:
确保iptables和ipvs不能同时启动,准备工作3台虚拟机,其中:
一台作为director(VIP、DIP),两张网卡
一台real server(RS1),主机模式
一台real server(RS2),主机模式
将两台real server的网关指向director的ip,具体配置如下:
director:
eth0:(VIP)
ip:192.168.31.100 gateway:192.168.31.1 netmask:255.255.255.0
eth1:(DIP)
ip:192.168.248.128 gateway:192.168.248.1 netmask:255.255.255.0
RS1:
ip:192.168.248.129 gateway:192.168.248.128 netmask:255.255.255.0
RS2:
ip:192.168.248.130 gateway:192.168.248.128 netmask:255.255.255.0
首先配置RS两台上面的web服务作为测试,为方便观察采用的调度算法为rr轮询:

RS1具体操作如下:(RS1虚拟机选为主机模式)
service iptables stop
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
yum -y install httpd
echo "RS1.my.com" > /var/www/html/index.html
service httpd start:确保服务政策启动
curl http://localhost
RS1.my.com
同理RS2具体操作:
service iptables stopsetenforce 0vim /etc/selinux/configSELINUX=disabledyum -y install httpdecho "RS2.my.com" > /var/www/html/index.htmlservice httpd start:确保服务政策启动curl http://localhostRS2.my.comcurl http://192.168.248.129 RS1.my.com##################################################################################director配置操作如下:将eth0(ip:192.168.31.100 gateway:192.168.31.1 netmask:255.255.255.0)联网方式为桥接将eth1(ip:192.168.248.128 gateway:192.168.248.1 netmask:255.255.255.0)联网方式为主机模式ping 192.168.248.129ping 192.168.248.130确保能够ping通RS两台web服务器的ipcurl http://192.168.248.129 curl http://192.168.248.130 确保能够访问两台RS的页面接下来开始配置director:service iptables stopsetenforce 0vim /etc/selinux/configSELINUX=disabledyum -y install ipvsadm
由于该测试类型为NAT,于是还得配置:
echo 1 > /proc/sys/net/ipv4/ip_forward--->打开转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
于是开始建立集群:

ipvsadm -A -t 192.168.31.100:80 -s rr
ipvsadm -a -t 192.168.31.100:80 -r 192.168.248.129 -m
ipvsadm -a -t 192.168.31.100:80 -r 192.168.248.130 -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.31.100:80 rr
-> 192.168.248.129:80         Masq    1      0          0         
-> 192.168.248.130:80         Masq    1      0          0   
至此集群服务就建立好了,只需要在浏览器中输入

http://192.168.31.100即可查看到RS1以及RS2的站点内容(刷新页面即可轮询站点内容RS1、RS2交替出现)
详细成功截图见下班后上传--
                   

页: [1]
查看完整版本: LVS类型之NAT