gacvd 发表于 2019-1-4 10:07:17

LVS负载均衡群集——NAT模式

  在各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器难以承担所有的访问。除了使用价格昂贵的大型机、专用负载分流设备以外,企业还有另外一种选择来解决难题,那就是构建群集服务器——通过整合多台相对廉价的普通服务器,以同一个地址对外提供相对的服务。本篇博客将介绍企业中常用的一种群集技术——LVS(Linux Virtual Server,Linux虚拟服务器)
  群集的类型
  无论是哪种集群,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个入口访问(域名或IP),相当于一台大型计算机。根据所针对的目标差异,可分为以下三类:
  (1)负载均衡群集:提高应用系统的响应能力,尽可能处理更多的访问请求、减少延迟,获得高并发、高负载(LB)的整体性能,将来自客户机的访问请求分流给多台服务器,从而缓解整个系统的负载压力
  (2)高可用群集:提高应用系统的可靠性、减少中断时间、保证服务连续性,达到高可用(HA)的容错的效果,故障切换、双机热备、多机热备等都属于高可用群集技术
  (3)高性能运算群集:提高应用系统的CPU运算速度、扩展硬件资源和分析能力,获得相当于大型、超级计算机的高性能运算(HPC)能力,就是将多台服务器的硬件整合到一起,实现高性能运算能力。
  负载均衡的分层结构
  http://s1.运维网.com/images/20180125/1516891730950950.png
  第一层:负载调度器,是群集系统的唯一入口,对外使用所有服务器共有的VIP(虚拟IP)地址,通常会配置主从两台调度器实现热备份,确保高可用性。
  第二层:服务器池,也就是提供各种服务的服务器,例如web服务器,ftp服务器,数据库服务器等,处理调度器发来的请求。
  第三层:共享存储,主要存储服务器池中应用程序的数据,一般会采用nas或者san设备,为所有节点提供稳定、一致的文件存储服务,确保整个集群的统一性
  负载均衡的工作模式

  关于集群的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP的负载调度是效率最高的。基于IP的负载均衡模式中,常见的有以下三种工作模式:
http://s1.运维网.com/images/20180125/1516891996172154.png
  (1)地址转换,简称NAT模式,负载均衡调度器作为网关,服务器和负载调度器在同一个私有网络,安全性较好。
  (2)IP隧道,简称TUN模式,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,不在经过负载调度器,服务器的节点分散在互联网的不同位置,具有独立的共有IP地址,通过专用的IP隧道与负载调度器相互通信。
  (3)直接路由,简称DR模式,与TUN模式类似,但各节点不是分散在各地,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的ip隧道。
  以上三种模式中,NAT方式只需要一个公网地址,从而成为最容易的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就是采用这种方式;相比较而言,DR模式和TUN模式的负载能力更强大,使用范围更广,但节点的安全性要稍差一些。
  案例:构建地址转换模式负载均衡集群(LVS——NAT)

  为了进一步提高公司的负载能力,公司决定扩展现有的网站平台,经过多方面考虑,管理员准备采用LVS群集的NAT模式,如下图所示:
http://s1.运维网.com/images/20180125/1516893155539531.png
  需求描述:
  1.LVS调度器有两块网卡,分别连接内外网,外网地址也作为整个群集的VIP地址
  2. 四台节点服务器,共享存储均位于内网,其默认网关设为LVS调度器的内网地址
  3. 共享存储有一台Linux服务器承担,将目录/var/www/html发布为NFS可读写共享
  实验步骤如下:
  1. 配置LVS负载调度器
# ifconfig            //添加一块网卡,分别配置内外网接口地址
eth0      Link encap:EthernetHWaddr 00:0C:29:1C:B4:FB
          inet addr:172.16.16.172Bcast:172.16.16.255Mask:255.255.255.0
eth1      Link encap:EthernetHWaddr 00:0C:29:1C:B4:05
          inet addr:192.168.7.254Bcast:192.168.7.255Mask:255.255.255.0
# vim /etc/sysctl.conf   //打开防火墙路由转发功能,以便节点服务器访问Internet
net.ipv4.ip_forward = 1
# sysctl -p      //立即生效
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# iptables -I FORWARD -p tcp -j ACCEPT
# iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j SNAT --to-source 172.16.16.172
# modprobe ip_vs      //LVS已成为Linux内核一部分,默认为ip_vs模块
# cat /proc/net/ip_vs    //查看ip_vs模块版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn   
# yum -y install ipvsadm   //ipvsadm是在负载调度器上使用的LVS群集管理工具
# ipvsadm -v               //查看ipvsadm版本信息
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
# service ipvsadm stop      //关闭服务(清除原有策略)
# service ipvsadm start   //开启服务(重建规则)
# ipvsadm -A -t 172.16.16.172:80 -s rr   //创建虚拟服务器,调度算法为轮询
# -A表示添加虚拟服务器
# -t用来指定VIP地址及TCP端口
# -s用来指定负载调度算法
# rr轮询:将受到的访问请求按顺序轮流分配给群集中的各节点,不管服务器的连接数和系统负载
# wrr加权轮询:也是轮流分配,但是可以调整权重,让处理性能强的服务器承担更多的访问流量
# lc最少连接:根据连接数分配,分配给连接数少的节点
# wlc加权最少连接:权重高的节点将承担更大比例的负载
# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1//添加服务器节点
# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.23:80 -m -w 1
# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.24:80 -m -w 1
# -a表示添加真实服务器
# -r指定RIP地址及TCP端口
# -m表示使用NAT群集模式(-g DR模式和-i TUN模式)
# -w设置权值(权重为0时表示暂停节点)
# ipvsadm -ln      //查看群集节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP172.16.16.172:80 rr
-> 192.168.7.21:80            Masq    1      0          0         
-> 192.168.7.22:80            Masq    1      0          0         
-> 192.168.7.23:80            Masq    1      0          0         
-> 192.168.7.24:80            Masq    1      0          0
# ipvsadm -d -r 192.168.7.24:80 -t 172.16.16.172:80//如果需要删除某个节点,执行此命令
# ipvsadm -D -t 172.16.16.172:80      //如果需要删除整个虚拟服务器,执行此命令
# service ipvsadm save                     //保存策略
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [确定]
# chkconfig ipvsadm on                     //开机自动启动
# cat /etc/sysconfig/ipvsadm               //确认保存结果
-A -t 172.16.16.172:http -s rr
-a -t 172.16.16.172:http -r 192.168.7.21:http -m -w 1
-a -t 172.16.16.172:http -r 192.168.7.22:http -m -w 1
-a -t 172.16.16.172:http -r 192.168.7.23:http -m -w 1  2. 配置NFS共享存储服务
  NFS是一种基于TCP/IP传输的网络文件系统协议,也是NAS存储设备必然支持的一种协议
# ifconfig         //配置IP地址,网关设置为LVS内网IP地址192.168.1.254
eth0      Link encap:EthernetHWaddr 00:0C:29:0D:16:6A
          inet addr:192.168.7.250Bcast:192.168.7.255Mask:255.255.255.0
# iptables -I INPUT -p tcp -j ACCEPT
# iptables -I INPUT -p udp -j ACCEPT                  
# yum -y install nfs-utils rpcbind         
# nfs-utils软件包来提供NFS共享服务         
# rpcbind软件包提供RPC支持,以完成远程到本地的映射过程         
# chkconfig nfs on      //建议调整为开机自启动
# chkconfig rpcbind on         
# mkdir /opt/wwwroot      //设置共享目录
# echo welcome to beijing!!! > /opt/wwwroot/index.html
# cat /opt/wwwroot/index.html   //创建测试网页
welcome to beijing!!!
# vim /etc/exports      //将目录共享给192.168.7.0/24使用   
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)         
# rw表示允许读写(ro为只读)         
# sync表示同步写入         
# no_root_squash当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
# service rpcbind start
# service nfs start
# showmount -e 127.0.0.1       //查看本机发布的NFS共享目录
Export list for 127.0.0.1:
/opt/wwwroot 192.168.7.0/24  3. 配置web节点服务器
  所有节点服务器均使用相同的配置,包括httpd服务器端口、网站文档内容
# ifconfig            //配置IP地址,网关设置为LVS内网IP地址192.168.1.254
eth1      Link encap:EthernetHWaddr 00:0C:29:8A:0D:26
          inet addr:192.168.7.21Bcast:192.168.7.255Mask:255.255.255.0
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT   //配置防火墙策略   
# yum -y install httpd nfs-utils rpcbind
# showmount -e 192.168.7.250   //查看NFS服务器共享了哪些目录
Export list for 192.168.7.250:
/opt/wwwroot 192.168.7.0/24
# mount 192.168.7.250:/opt/wwwroot /var/www/html    //将共享目录挂载到本地目录
# tail -1 /etc/mtab
192.168.7.250:/opt/wwwroot /var/www/html nfs rw,vers=4,addr=192.168.7.250,clientaddr=192.168.7.21 0 0
# cat /var/www/html/index.html   //验证测试网页是否共享
welcome to beijing!!!
# vim /etc/fstab          //设置开机自动挂载
192.168.7.250:/opt/wwwroot   /var/www/html   nfs   defaults,_netdev   0 0
# chkconfig nfs on      
# chkconfig rpcbind on
# chkconfig httpd on
# service rpcbind start
# service nfs start
# service httpd start  其他节点服务器的配置和上面完全一样,以便实现负载均衡
  4. 测试LVS集群
  安排多台测试机,从Internet中直接访问VIP地址http://172.16.16.172/,将能看到有真实Web服务器提供的网页内容。通过LVS负载均衡调度器,可查看当前的负载分配情况,由于使用轮询算法,各节点所获得的连接负载大致相当。
http://s1.运维网.com/images/20180126/1516967905384607.png
  在LVS负载均衡调度器中执行以下命令:
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP172.16.16.172:80 rr
-> 192.168.7.21:80            Masq    1      2          9         
-> 192.168.7.22:80            Masq    1      3          8         
-> 192.168.7.23:80            Masq    1      2          9
-> 192.168.7.24:80            Masq    1      4          7  可看到各节点服务器的连接负载大致相当,从而实现了负载均衡



页: [1]
查看完整版本: LVS负载均衡群集——NAT模式