lvs_nat

Lvs_nat模型

这里写图片描述

一.工作原理:

基于NAT机制实现。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时 将报文的目标端口也改成选定的realserver的相应端口,最后将报文请求发送到指定的realserver。在服务器端得到数据 后,realserver将数据返给director,而director将报文的源地址和源端口改成VIP和相应端口,然后把数据发送给用户,完成整个 负载调度过程。

二.特点:

所有的realserver和director要在同一个网段内
RIP是私有地址,仅用于集群节点之间进行通信
director同时处理请求和应答数据包
realserver的网关要指向DIP
可以实现端口映射
readlserver可以是任意操作系统
director很可能成为系统性能瓶颈

三.硬件环境

一台Director:
版本:Red Hat Enterprise Linux Server release 6.5
双网卡:
eth1: VIP:172.25.254.118/24(真实生产环境下一定将网关指向运营商的公网IP)
eth2: DIP:172.25.18.1/24(此IP必须和后台的RealSever在同一个网段内)

两台RealServer:
版本:Red Hat Enterprise Linux Server release 6.4
单网卡:
RealServer1:RIP1:192.168.91.80/24(网关必须指向Director的DIP)
RealServer2: RIP2:192.168.91.90/24(网关必须执行Director的DIP)

四.实验前准备

1.现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

[root@server1 ~]# uname -r
2.6.32-431.el6.x86_64
此处我们环境内核版本为2.6.32-431.el6.x86_64,所以不需要再打补丁

2.LVS-NAT模型的实现方式和iptables的DNAT相似,所以你懂的,Director节点不能和iptables同时使用,那么会有冲突,这就是我们后面为什么要将iptables的规则清空的目的之一。

五.实验步骤

配置DR
[root@server1 ~]# yum install ipvsadm -y ##安装ipvsadm工具
配置两块网卡eth0
配置内网网卡DIP
[root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=”eth0”
BOOTPROTO=”static”
ONBOOT=”yes”
IPADDR=172.25.18.1
PREFIX=24
配置外网网卡VIP
[root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=”eth1”
BOOTPROTO=”static”
ONBOOT=”yes”
IPADDR=172.25.254.118
PREFIX=24

[root@server1 ~]# cat /proc/sys/net/ipv4/ip_forward ## 查看本地路由功能是否打开(1 开启 0 关闭)
[root@server1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 ##更改为1打开
[root@server1 ~]# sysctl -p ##重新加载配置文件
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

配置RS
RS1和RS2安装httpd,并启动
分别写入发布目录
[root@server2 ~]# echo ‘

server2.RS

’ > /var/www/html/index.html
[root@server3 ~]# echo ‘

server3.RS

’ > /var/www/html/index.html

清空本地防火墙策略
[root@server2 ~]# iptables -F
[root@server3 ~]# iptables -F

测试访问:
[root@server1 ~]# curl http://172.25.18.2

server2.RS

[root@server1 ~]# curl http://172.25.18.3

server3.RS

配置Director,并将RealServer加入集群服务
ipvsadm命令的用法
管理集群服务

添加:
    -A -t|u|f service-address [-s scheduler]
    -t: TCP协议的集群
    -u: UDP协议的集群
        service-address: IP:PORT
    -f: FWM: 防火墙标记
        service-address: Mark Number
修改:
    -E
删除:
    -D -t|u|f service-address

管理集群服务中的RealServer

添加:
    -a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
    -t|u|f service-address:事先定义好的某集群服务
    -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
    [-g|i|m]: LVS类型
    -g: DR
    -i: TUN
    -m: NAT
    [-w weight]: 定义服务器权重
修改:
    -e
删除:
    -d -t|u|f service-address -r server-address

集群服务后续管理

查看
    -L|l
    -n: 数字格式显示主机地址和端口
    –stats:统计数据
    –rate: 速率
    –timeout: 显示tcp、tcpfin和udp的会话超时时长
    -c: 显示当前的ipvs连接状况
    例:ipvsadm -L -n –stats
删除所有集群服务
    -C:清空ipvs规则
    例:ipvsadm -C
保存规则
    -S
    例: ipvsadm -S > /etc/sysconfig/ipvsadm
载入此前的规则:
    -R
    例:ipvsadm -R < /etc/sysconfig/ipvsadm

测试Director是否可以正常访问Realserver的服务

注意问题

访问后台的RealServer服务我们此时使用的为Driector的DIP进行访问的,当我们将RealServer加入集群服务后,我们clent要实现访问Driector的VIP来进行访问RealServer的服务,务必要明白此问题。

使用rr调度算法(轮叫)
[root@server1 ~]# ipvsadm -A -t 172.25.254.118:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.254.118:80 -r 172.25.18.2 -m -w 1
[root@server1 ~]# ipvsadm -a -t 172.25.254.118:80 -r 172.25.18.3 -m -w 1
[root@server1 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.254.118:80 rr
-> 172.25.18.2:80 Masq 1 0 0
-> 172.25.18.3:80 Masq 1 0 0

使用浏览器测试:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/goddevin/article/details/80166800
今日推荐