lvs

lvs四种集群特点

类型 特征
lvs-nat 修改请求报文的目标IP,多目标IP的DNAT
lvs-dr 操纵封装新的MAC地址
lvs-tun 在原请求IP报文之外新加一个IP首部
lvs-fullnat 修改请求报文的源和目标IP
  • lvs-nat
    1. RIP和DIP应在同一个IP网络,且应使用私网地址; RS的网关要指向DIP
    2. 请求报文和响应报文都必须经由Director转发, Director易于成为系统瓶颈
    3. 支持端口映射,可修改请求报文的目标PORT
    4. VS必须是Linux系统, RS可以是任意OS系统
  • lvs-dr
    1. Director和各RS都配置有VIP
    2. 确保前端路由器将目标IP为VIP的请求报文发往Director
    3. RS的RIP可以使用私网地址,也可以是公网地址; RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
    4. RS和Director要在同一个物理网络
    5. 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
    6. 不支持端口映射(端口不能修败)
    7. RS可使用大多数OS系统
  • lvs-tun
    1. DIP, VIP, RIP都应该是公网地址
    2. RS的网关一般不能指向DIP
    3. 请求报文要经由Director,但响应不经由Director
    4. 不支持端口映射
    5. RS的OS须支持隧道功能
  • lvs-fullnat
    1. VIP是公网地址, RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP
    2. RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client
    3. 请求和响应报文都经由Director
    4. 支持端口映射

描述LVS-DR工作原理,并配置实现

  • 原理图
  • 配置
    • 规划:
      • 一台vs服务器 192.168.20.27
      • 两台rs服务器 192.168.20.37 192.168.20.47
      • VIP为 10.0.0.100
  • 设置rs1
    • 安装apache
      yum install -y httpd && systemctl start httpd && systemctl enable httpd
    • 设置IP地址
        cat >> /etc/sysconfig/network-scripts/ifcfg-lo <<EOF
        IPADDR1=10.0.0.100
        NETMASK1=255.255.255.255
        EOF
      
      systemctl restart network
    • 设置不回应arp
        cat >> /etc/sysctl.conf <<EOF
        net.ipv4.conf.all.arp_ignore = 1
        net.ipv4.conf.all.arp_announce = 2
        EOF
      
      sysctl -p
  • 设置vs
    • 设置IP地址
        cat >> /etc/sysconfig/network-scripts/ifcfg-lo <<EOF
        IPADDR1=10.0.0.100
        NETMASK1=255.255.255.255
        EOF
      
      systemctl restart network
    • 安装ipvsadm
      yum install -y ipvsadm
    • 设置ipvsadm
        ipvsadm -A -t 10.0.0.100:80 -s rr
        ipvsadm -a -t 10.0.0.100:80 -r 192.168.20.37:80
        ipvsadm -a -t 10.0.0.100:80 -r 192.168.20.47:80
      
  • 设置路由器,增加路由10.0.0.100向内网

实现LVS+Keepalived高可用

  • 在以上实验基础上,增加一台vs
  • 配置两台vs /etc/hosts
      vs1 192.168.20.27
      vs2 192.168.20.57
    
  • 相互复制公钥
      ssh-ketgen
      ssh-copy-id 192.168.20.57 #另一边改成 192.168.20.27
    
  • 两台vs安装keepalived
    yum install -y keepalived
  • 配置keepalived
      ! Configuration File for keepalived
      global_defs {
        notification_email {
          root@localhost
        }
        notification_email_from keepalived@localhost
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id node1
        vrrp_mcast_group4 224.0.0.100
      }
      vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 6
        priority 100
        advert_int 1
        authentication {
          auth_type PASS
          auth_pass 123
        }
        virtual_ipaddress {
          10.0.0.100 dev lo:1
        }
        notify_master "/etc/keepalived/notify.sh master"
        notify_backup "/etc/keepalived/notify.sh backup"
        notify_fault "/etc/keepalived/notify.sh fault"
      } 
      virtual_server 10.0.0.100 80 {
        delay_loop 3
        lb_algo rr
        lb_kind DR
        protocol TCP
        sorry_server 127.0.0.1 80
        real_server 192.168.20.37 80 {
          weight 1
          HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
          }
        }
        real_server 192.168.20.47 80 {
          weight 1
          HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
          }
        }
      }
    
posted @ 2020-02-26 11:45  stars_wisper  阅读(140)  评论(0编辑  收藏  举报