Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

绿色网站无广告
会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux系统 > » 正文

VM linux下的LVS-NAT实例

来源: 未知 分享至:

DIP:调度器的IP地址

RIP:后台真实服务器(realserver)IP地址

VIP:就是用于服务提供的虚拟IP

NAT模式的原理最简单,也最容易实现,具体的原理是调度器全面负责客户端对内部服务器的请求和回复。调度器相当于一个路由器,需要有两块网卡和两个IP(一个公网IP,一个私网IP),公网IP也就是DIP用于本机的处理,VIP被绑定在调度器上(当然对于只有一个调度器来说,VIP可以等于DIP,如果用到高可用的部分,就需要VIP不等于DIP,因为要考虑到VIP在两台或者多台调度器上的滑动),RIPrealserverIP)需要采用调度器的内网IP作为网关,当然用作调度器的linux服务器需要打开ip_forwardRIP多采用一些私网IP,当然是为了节约有限的公网IP。有时候在用NAT方式的负载均衡往往是IP有限的限制,不然尽量不采用这种方式的负载均衡,其原因在于负载距衡器往往会成为服务提供点瓶颈,影响服务的质量。

具体实现过程可以这么来说:

1、  客户端发来请求首先到达调度器,调度器修改分包的socket(套接字),IP:port,根据调度算法把VIP修改成某台服务的RIP,并在自己的hash里留下这次连接的缓存,以待后续的分包到达时,转向刚才选定的realserver节点。

2、  Realserver服务器端对分包进行处理,处理结束之后,修改分包的目的地址为DIP,把分包发给调度器。

3、   调度器再次进行套接字的修改,把目的地址修改成客户端的地址,此后完成这次请求。

实验的平台三台VMlinux服务器主机(CentOS 5.5,内核是2.6版本的是默认支持LVS的,所以不需要重新编译内核,可以直接使用),其中一台用作调度器,另外两台用作realserver

第一:在调度器上的设置

[root@localhost ~]# vi /etc/sysconfig/network    //设置网关

NETWORKING=yes

NETWORKING_IPV6=yes

HOSTNAME=localhost.localdomain

GATEWAY=192.168.1.1

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0   //设置公网ip(模拟的)

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.196

NETMASK=255.255.255.0

DHCPCLASS=

HWADDR=00:0C:29:09:22:5D

ONBOOT=yes

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1   //另一块网卡是私网IP

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth1

BOOTPROTO=static

IPADDR=10.0.0.1

NETMASK=255.255.255.0

ONBOOT=yes

[root@localhost ~]# /etc/init.d/network restart    //重启动网络服务

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:09:22:5D  

          inet addr:192.168.1.196  Bcast:192.168.1.255  Mask:255.255.255.0

eth1      Link encap:Ethernet  HWaddr 00:0C:29:09:22:67 

          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

[root@localhost ~]# yum -y install ipvsadm   //安装LVS管理工具

[root@localhost ~]# vi /etc/init.d/lvsnat   //编写集群管理脚本,当然你也可以自己逐条添加

#!/bin/bash

#LVS script NAT

VIP=192.168.1.200

RIP1=10.0.0.2

RIP2=10.0.0.3

#./etc/rc.d/init.d/functions

case "$1" in

        start)

        echo "1">/proc/sys/net/ipv4/ip_forward

        /sbin/iptables -F

        /sbin/iptables -t nat -F

        /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up

        /sbin/ipvsadm -A -t $VIP:80 -s rr             //采用轮询算法

        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 –m       //采用NAT

        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m

        /sbin/ipvsadm

        echo "start LVS of DirectorServer NAT"

        ;;

        stop)

        echo "0" >/proc/sys/net/ipv4/ip_forward

        /sbin/ipvsadm -C

        /sbin/ifconfig eth0:0 down

        echo "stop LVS of DirectorServer NAT"

        ;;

        *)

        echo "Usage:$0{start|stop}"

        exit 1

esac

[root@localhost ~]# chmod a+x /etc/init.d/lvsnat   //加可执行权限


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史