zoukankan      html  css  js  c++  java
  • CentOS7Linux中服务器LVS负载均衡、高可用集群搭建(NAT、DR);

    集群

    声明

    文档不断更新中...

    集群概念

    一组相互独立又相互依赖的,通过网络连接的由计算机组,以单一的模式进行管理,为对方提供服务,对于用户来说,用户会认为对方是一个服务。

    • DIP:用来和后端服务器进行数据交互的IP

    • CIP:客户端的IP

    • VIP:是域名解析的IP,是集群对外的公网IP

    • RIP:真实服务器的IP

    • 节点:一组计算机组中的一台就是集群的一个节点。

    集群特性

    可伸缩性、可靠性、可管理性。

    Web服务器并发相应瓶颈

    • 向上扩展/纵向扩展:加CPU、加内存、加带宽、加SSD。
    • 向外扩展/横向扩展:加服务器,使用多台服务器同时为用户提供服务。

    向外扩展:就是集群

    集群的分类

    • 负载均衡(Load Balance)集群,简称LB
    • 高可用(High Availability)集群,简称HA
    • 高性能(High Perfermance)集群,简称HPC

    LB实现方法:

    • 硬件:-F5负载均衡器
    • 软件:-LVS(4层,传输层)、Nginx(7层,应用层)

    LVS集群

    LVS是Linux Virtual Server的缩写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。根据iptables的实现开发的,使用方法和iptables类似。

    官网地址:http://www.linuxvirtualserver.org/

    中文站点: http://zh.linuxvirtualserver.org/

    负载调度器

    分发器(Load Balancer Director):整个集群对外的最前端,负责接收用户请求,并且根据自己的调度算法,将请求转发到后端的真实服务器上的动作,而用户认为服务是来自一个IP地址(虚拟地址VIP)上的。

    服务器池

    Server Pool:真正为用户提供服务的服务器,每一台就是一台RS(Real Server),执行的服务有Web, Mail, FTP, DNS等。

    共享存储

    Shared Storaged为RS保持相同内容,提供数据的一致性,也就是说,它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

    LVS负载均衡的三种模式

    • NAT(网络地址映射)
    • IP Tunneling(IP隧道)
    • Direct Routing(直接路由)

    不同的转发模式决定了不同的Cluster(群)的网络结构。

    NAT:网络地址转换

    DNAT:目标地址转换,改变的是目标地址

    SNAT:源地址转换,改变的是原地址

    LVS-NAT:使用的就是SNAT和DNAT完成包的转发。

    NAT模式工作原理:

    客户端访问调度器时,调度器通往网络地址转换,重写请求报文的目标地址,根据预设的调度算法,将请求分发给后端RS服务器,RS服务器的相应报文通过调度器时,报文的源地址被重写,再返回给用户,完成整个负载调度过程。

    优点

    NAT方式支持任何操作系统,以及私有网络,并且只需要一个Internet IP 地址。

    缺点

    执行NAT每次需要重写包,有一定的延迟,对负载均衡器的压力大。

    搭建LVS-NAT集群

    节点声明:

    配置LVS-NAT集群:
    harry63配置成分发器:
    1、打开路由转发功能
    [root@harry63 ~]# vim /etc/sysctl.conf  
    改:net.ipv4.ip_forward = 0
    为:net.ipv4.ip_forward = 1
    让配置生效:
    [root@harry63 ~]# sysctl -p
    
    2、配置网络环境:
    添加一个网卡(需要两张网卡), 配置成以下网络环境:
    eth0  192.168.1.63  模式:br0    模拟公网
    eth1  192.168.2.63  模式:vmnet4    模拟内网
    
    Director分发器:需不需要开启80(服务的)端口  ?
    
    1.4.5  安装: LVS管理工具: ipvsadmin
     [root@harry63 Packages]# pwd
    /mnt/Packages
    [root@harry63 Packages]# rpm -ivh ipvsadm-1.25-9.el6.x86_64.rpm
    或:
    yum install ipvsadm  
     
    1.4.6  使用ipvsadm命令设置规则: 
    [root@harry63 ~]# ipvsadm -A -t 192.168.1.63:80 -s rr       rr代表轮循  
    选项:
    -A 添加虚拟服务器
     -t 表示TCP的服务  VIP:PORT
     -s 指定调度算法  rr表示round-robin 轮循
    
    [root@harry63 ~]#  ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.64 -m
    [root@harry63 ~]#  ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.62 -m
    选项:
     -a 表示添加real server的地址
     -r 指定real server的IP地址
     -m 表示masquerade 也就是NAT方式的LVS
    
    1.4.7  查看:
    Ipvsadm命令,用于配置及查看内核IPVS表和算法的工具,类似于iptables
    [root@harry63 ~]# ipvsadm -L -n
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.1.63:80 rr
      -> 192.168.2.62:80              Masq    1      0          0         
      -> 192.168.2.64:80              Masq    1      0          0        
    
    1.4.8  保存配置或规则
    [root@harry63 ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
    或ipvsadm -S    保存以上的配置
    Saving IPVS table to /etc/sysconfig/ipvsadm:           [确定]
    
    1.4.9  配置真实服务器
    RealServer:在harry62和harry64上面配置:
    准备:
    1、配置IP:REAL SERVER自己的网络相关信息配置成如下:
    harry62: eth0: vmnet4 : 192.168.2.62  网关: 192.168.2.63
    harry64: eth0: vmnet4 : 192.168.2.64  网关: 192.168.2.63
    
    2、配置harry64为realserver, 并启web服务
    [root@harry64 ~]# yum install -y httpd
    [root@harry64 ~]# systemctl restart httpd
    [root@harry64 ~]# echo "192.168.2.64" > /var/www/html/index.html    #(实验期间,各个服务器的页面不同)
    
    3、配置harry62为realserver, 并启web服务
    [root@harry62 ~]# yum install -y httpd
    [root@harry62 ~]# systemctl restart httpd
    [root@harry62 ~]# echo "192.168.2.62" > /var/www/html/index.html    #(实验期间,各个服务器的页面不同)
    
    1.4.10  测试:
    在harry63上测试:
    [root@harry63 ~]# yum install elinks   
    
    测试realserver :
    [root@harry63 ~]# elinks 192.168.2.64
    [root@harry63 ~]# elinks 192.168.2.64 --dump
       192.168.2.64
    [root@harry63 ~]# elinks 192.168.2.62 --dump
       192.168.2.62
    
    1.4.11  测试VIP:
    [root@harry63 ~]# elinks 192.168.1.63 --dump
       192.168.2.62
    
    访问: 在物理上打开浏览器访问: 每按F5刷新一次,就会变换一个页面。
    至此,NAT模式集群配置完毕。
    

    IP Tunneling(IP隧道)

    Director(分发器)分配请求到不同的Real Server,Real Server处理请求后直接回应用户。

    条件

    服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。

    优点

    提高了调度器的处理能力,允许Real Server在任何LAN或者WAN上运行,允许异地部署,容错。

    Direct Routing(直接路由)

    与IP Tunneling类似,负载均衡器仅处理一半的连接,同样增加了系统的可伸缩性。

    1)基于mac的数据报文转发, 是效率最好的, 但是是根据交换机的MAC地址表来实现的

    2)2层设备不具有路由功能, 那么广播也就不具有跨路由的功能, 所有要实现mac地址广播, 必须在同一物理网段

    3):vlan具有隔离广播的功能, 所有要能处理mac地址广播, 就应该在同一个VLAN中

    原理

    • client向目标vip发出请求,Director接收。
    • Director分发器根据负载均衡算法选择一台active的realserver,将RIP网卡所在的mac地址作为目标mac地址发送到局域网。
    • realserver在局域网中接收到这个帧。
    • 如果client与VS在同一网段,那么就直接接收到回复报文,如果跨网段,则通过路由器/gateway经由Internet返回给用户。

    条件

    • 所有设备应该在同一物理网段中
    • 所有设备应该在同一广播域中

    优点

    没有IP封装的开销。基于2层的数据报文转发,要比基于3层的网络转发效率高。在LVS的所有模式中,效率最好。

    缺点

    所有服务器都必须在一个物理网段。

    全部服务器都为公网IP地址,可以直接和客户端通信。

    DR集群搭建

    待更新...
    环境声明
    DIP 192.168.0.64
    VIP 192.168.0.46
    RIP1: 192.168.0.66
    RIP2: 192.168.0.67

    # 配置虚拟IP
    
    

    负载均衡

    LB负载均衡分为两类:LVS(四层)和nginx或者haproxy

  • 相关阅读:
    【转】查看java类是从哪个包加载
    把本地代码同步到github
    【转】Sublime Text3注册码(可用)
    python网络编程学习笔记(二)
    python网络编程学习笔记(一)
    Linux学习笔记 第五章Linux首次登陆与在线求助 man page
    linux c 笔记 网络编程(三)..套接字数据传输
    linux c 笔记 网络编程(二)
    linux c 笔记 网络编程(一)
    互斥锁 笔记
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/12050131.html
Copyright © 2011-2022 走看看