首页 > 代码库 > LVS集群之NAT模式实现

LVS集群之NAT模式实现

LVS集群之NAT模式实现
一、集群的种类
集群系统主要分为
1、HA:高可用集群,又叫双机热备。
  (a)原理
     2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B继续提供服务
  (b)常用的高可用开源软件:heartbeat和keepalived(可以做负载均衡)
 
2、LB:负载均衡集群
3、HPC:高性能计算集群
 
二、LB集群
1、实现手段
     硬件:F5负载均衡器
     软件:LVS(4层,网络层),  Nginx(7层,应用层)
 
2、负载均衡架构图
技术分享
说明:
LVS集群使用三层架构
第一层:负载均衡层(Load Balancer)
位于整个集群系统的最前端,由一台多多台负载调度器(Director Server,以下简称dir)组成。
dir的作用类似一个路由器,它含有为完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给服务器群组层的应用服务器(Real Server)
ps:客户认为服务是来自一个虚拟IP地址上
 
第二层:服务器群组层(Server Arrary)
由一组实际运行应用服务的机器组成。Real Server(以下简称rs)可以是Web服务器、Mail服务器、FTP服务器、DNS服务器等
 
第三层:共享存储层(Shared Storage)
是为所有rs提供共享存储空间和内容一致性的存储区域,一般由磁盘阵列设备组成。一般可以通过NFS网络文件系统共享数据(在繁忙的业务系统中,性能并不太好),此时可以用集群文件系统,如 Red Hat 的 GFS 文件系统,Oracle 提供的 OCFS2 文件系统等
 
3、LVS分3个模式
     (a)NAT(网络地址映射):通过网络地址转换的方法来实现调度 
     优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址
     缺点:用户请求和响应报文都必须经过dr地址重写,当用户请求越来越多时,调度器的处理能力将成为瓶颈。
 
     (b)DR(直接路由技术):通过改写请求报文的MAC地址,将请求发送到 rs,而 rs 将响应直接返回给客户 ——》 性能最好
 
     (c)TUN(IP隧道技术):dr采用IP隧道技术将用户请求转发到某个rs,而这个rs将直接响应用户请求,不再经过dr ——》dr只处理用户的报文请求,从而使集群系统吞吐量大大提高
      ps:还有第 4 种模式 FULLNAT(淘宝ospf+lvs)
 
 
################   搭建来了   ###################
 
三、搭建LVS-NAT模式集群实现负载均衡
1、分发器 director 配置
  —— 网络配置前期工作
(a)配置网络环境,增加网卡eth2(需要添加HWADDR不同的网卡,我的eth1跟eth0是一样的,所以只能用eth2)
 
技术分享
 技术分享

 

(b)生成eth2配置文件,配置虚拟 IP 地址为 10.0.69.132
cp /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth2
(i)DEVICE=eth2
(ii)IPADDR=10.0.69.132(跟物理机同一网段)
技术分享
技术分享
(iii)GATEWAY=10.0.69.1
 
(c)重启网络服务:service network restart
内网ip:192.168.131.132
外网ip:10.0.69.132
技术分享
 技术分享

物理机可以ping通虚拟 IP 

技术分享
 技术分享

 

 
—— 开启路由转发功能,安装配置LVS-NAT
1、安装lvs核心软件包 yum install -y ipvsadm
2、写脚本管理(开启路由转发、添加虚拟服务、添加虚拟服务后端的rs)
vim /usr/local/sbin/lvs_nat.sh
技术分享

参数说明:

-A:增加一个虚拟服务   
-a:增加real server
-r:指定real server 的 IP地址
-t:表示TCP服务       
-s:指定调度算法   rr:轮询算法(对调度算法感兴趣的大家可以查查~)
-m(masquerade):也就是NAT方式的LVS
 
3、执行脚本 sh !$
4、查看规则 ipvsadm -ln
技术分享
 技术分享

 

 
二、真实服务器real server配置
rs1: 192.168.131.110
rs2: 192.168.131.131
 
rs1和rs2都要修改
vim /etc/sysconfig/network-scripts/ifcfg-eth0
1、网关GATEWAY都要指向分发器 dir 的 IP192.168.131.132) ——》 一开始我蒙蔽写成vip了 囧
技术分享
 技术分享
2、重启网卡生效:ifdown eth0; ifup eth0
 
 
三、测试
rs1、rs2依次启动80端口:/etc/init.d/nginx start
当然用 httpd 也行(yum install httpd)
 
(a)不设权重测试(上面那脚本就是)
dir 访问外网 IP(10.0.69.132)
技术分享
 技术分享

 

(b)设置权重测试(rs1: 3   rs2: 1)
技术分享
 技术分享
结果:
技术分享
 技术分享

 

小拓展:

ipvsadm -ln --stats  ==>  查看分发情况

ipvsadm -ln --rate  ==>   查看速率

 

 

ps:如果curl无法成功,检查下防火墙是否关了^_____^
      iptables -F
      setenforce 0
 
 

 

LVS集群之NAT模式实现