LVS-NAT配置安装
2016-03-23 10:49
267 查看
准备
1. 确认lvs内核组件已经安装
一般来说,常见的linux系统都已经安装了(用的几个操作系统中,只有suse不包含)。[root@localhost network-scripts]# modprobe -l |grep ip_vs kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs/ip_vs_rr.ko kernel/net/netfilter/ipvs/ip_vs_wrr.ko kernel/net/netfilter/ipvs/ip_vs_lc.ko kernel/net/netfilter/ipvs/ip_vs_wlc.ko kernel/net/netfilter/ipvs/ip_vs_lblc.ko kernel/net/netfilter/ipvs/ip_vs_lblcr.ko kernel/net/netfilter/ipvs/ip_vs_dh.ko kernel/net/netfilter/ipvs/ip_vs_sh.ko kernel/net/netfilter/ipvs/ip_vs_sed.ko kernel/net/netfilter/ipvs/ip_vs_nq.ko kernel/net/netfilter/ipvs/ip_vs_ftp.ko [root@localhost network-scripts]#
2. 安装ipvsadm
建议使用yum来安装。当然用ipvsadm的源码包安装也行。安装完成后,可以执行ipvsadm试一下,看是否安装成功
[root@localhost package]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
lvs搭建
1. 组网规划
其中192.168.100.x 为client所在的IP段(记为外网IP)。 192.168.0.x为real server所在的IP段(记为内网IP)
并且从192.168.0.x到192.168.100.x不存在路由。说简单一点,就是无法ping通
2. NAT配置
LVS 节点的配置
1)Tcp配置:echo 1 > /proc/sys/net/ipv4/ip_forward
2) Ipvsadm配置
[root@linux128 ~]# ipvsadm -A -t 192.168.100.132:18471 -s rr [root@linux128 ~]#ipvsadm -a -t 192.168.100.132:18471 -r 192.168.0.220:18471 -m [root@linux128 ~]#ipvsadm -a -t 192.168.100.132:18471 -r 192.168.0.221:18471 -m
Real Server的配置
修改默认网关[root@hadoop221 ~]# route add default gw 192.168.0.142 dev eth0
[root@hadoop221 ~]# route
分析
因为LVS会修改消息的mac地址,因此我们首先记录一下各个节点IP的mac地址IP地址 | MAC地址 |
---|---|
192.168.100.130 | 00:0C:29:A8:47:D9 |
192.168.100.132 | 00:0C:29:79:62:EA |
192.168.0.142 | 00:0C:29:79:62:E0 |
192.168.0.220 | 00:0C:29:56:91:D2 |
1) 首先客户端192.168.100.130向LVS的外网IP :192.168.100.132发送一个SYN消息
2) LVS收到这个SYN消息后,会将它转发给内网的220
与客户端发送消息相比。有几个明显的变化。
- Destination的ip地址变成了192.168.0.220
- Src与destination的mac地址也变化了。 查一下上面的ip与mac的对照表,可以看出来,source 的mac地址对应提192.168.0.142,而destination mac地址对应的ip为192.168.0.220
从这里可以看出来。LVS在这里将destination的ip与mac地址都修改了。
3) 因为LVS将syn消息的destination的ip与mac地址都做了修改。因此real server 192.168.0.220此时收到SYN消息都被修改后的消息
4)当real server收到SYN消息后,会回一个SYN ACK的消息。此时消息能够正常回到LVS的保证就是我们之前设置的route add default gw 192.168.0.142 dev eth0
我们查看一下220的route表:
[root@hadoop220 ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 1 0 0 eth0 default 192.168.0.142 0.0.0.0 UG 0 0 0 eth0
这里说明一下,因为syn消息的source ip没有被修改,假如此时从192.168.0.220到192.168.100.x存在路由,那么syn ack消息将不会走default网关,那会导致client无法正常收到消息。因此一定要保证192.168.0.220到192.168.100.x无法ping通
5) LVS收到消息后,会将之前修改的mac 与IP地址修改回去。 对比一下LVS收到的ACK消息与client收到ACK消息:
相关文章推荐
- linux java 环境变量配置
- Python 数据结构与算法——快排
- C++线性表
- 应用获取Power Key/Home Key按键事件(framework层)
- Java程序员的几道数据库面试题
- memcached linux 安装
- Unity3D 零碎知识点集合 (持续更新)
- 【技术文档】Jeecg-P3开发环境搭建入门(java插件开发框架)
- SQL错误级别 状态 怎么定义
- YUV格式学习:YUV420P、YV12、NV12、NV21格式转换成RGB24(转载)
- Mysql高并发优化
- 深圳圈子联合将出席2016IT领袖峰会
- PS制作超逼真的阳光效果
- 5.7 mysqldump 问题
- 为RecyclerView精确的添加Click及LongClick事件
- Spring IoC Service Provicer 管理对象间的依赖关系的三种方式
- js中几种实用的跨域方法原理详解
- 移动端地图技术分享 百度高德SDK
- SpringMVC中使用Interceptor拦截器
- 关于makefile