上课笔记第三十三天、lvs(net、dr)

1、大规模站点构建框架。
        http:状态
               keep-alive:长连接
               cookie:session
 
         cluster:集群
                 构建高可扩展性系统的重要原则;在系统内部尽量避免串行化和交互
                 HA:High Availability
                 LB:Load Balancing
                 session复制
                 memcached:内存缓存服务器
                             key-value:键值匹配

2、lvs的基础原理
         LB: (应用层、传输层)
               软件:
                      lvs(传输层)
                      haproxy, nginx (应用层)
               硬件:
                      F5 BIG-IP
                      Citrix Netscaler
                      A10 A10
                      Array
                      Redware
         HA:
               heartbeat
               corosync + pacemaker
               RHCS: cman + rgmanager
               cman + pacemaker
               keepalived
         HP:
               hadoop

         lvs: Linux Virtual Server
             四层路由,四层交换:根据目标地址和目标端口实现请求转发,lvs工作在内核中并监听在input链上,访问请求到达本机后prerouting转到input链。lvs查看是否是自己监听的ip:port,如果是就强行转发到postrouting把访问请求转发到后台真实主机上。
             iptables/netfilter
                     netfiler: PREROUTING --> INPUT --> FORWARD --> OUTPUT --> POSTROUTING
             lvs: ipvsadm/ipvs
                     ipvs: netfilter
             集群服务:tcp、udp。IP:PORT

        LVS的术语:
            director/real server
            IP:
                  VIP:Virtual IP
                  DIP: Director IP      
                  RIP: Real Server IP
                  CIP:Client IP

         lvs的类型:
                  lvs-nat
                        Network Address Translation(网络地址转换)
                  lvs-dr
                        Direct Routing(直接路由)
                  lvs-tun
                        Tunneling(隧道)

         nat类型的特性:
                  RS应用使用私有地址;RS的网关必须指向DIP,RIP和DIP必须在同一个网段内;
                  请求和响应都要经过Director;高负载场景中,Director易成为性能瓶颈;
                  支持端口映射;
                  RS可以使用任意OS;
                  最少2块网卡

         dr类型的特性:
                  保证前端路由将目标地址为VIP的报文统统发往Directory,而不能是RS;
                                   修改RS上内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求;
                  RS可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过RIP对其直接访问;
                  RS跟Directory必须在同一物理网络中;
                  请求报文经由Director,但响应报文必须不能经过Director;
                  不支持端口映射;
                  RS可以是大多数常见的OS;
                  RS的网关绝不允许指向DIP;
                  一块网卡即可

          tun类型的特性:
                  RIP、VIP、DIP全部是公网地址;
                  RS的网关不会也不可能指向DIP;
                  请求报文经由Director,但响应报文必须不能经过Director;
                  不支持端口映射;
                  RS的OS必须支持隧道功能;

          fullnat:淘宝自行开发的模型

3、lvs调度方法及nat模型的实现
d3a80a87a92b093ac425979787e7b9cb.png 
        Director :eth0:192.168.146.137(dip)
                        eth1:192.168.5.28(已该网卡地址做vip)
          node1:eth0:192.168.146.131 (网关必须指向dip)
          node2:eth0:192.168.146.138 (网关必须指向dip)
          注意:网卡转发和rs中的默认网关都需要设置
                    route add default gw 192.168.146.137:设定默认网关


          lvs scheduler:
                    grep -i 'ipvs' /boot/config-2.6.32-358.el6.x86_64:显示内核中和ipvs相关选项。
                    grep -i 'vs' /boot/config-2.6.32-358.el6.x86_64:显示相关
          静态方法:根据算法本身进行调度。
                     rr:round robin轮询,轮流调度。
                     wrr:weighted round robin,加权轮询,根据设定权重调度
                     sh: source hashing,来自同一个源地址请求将一直定向于同一个rs中,session保持
                     dh: destination hashing, 目标地址hash,
                     route add default gw 192.168.146.137 :指定默认网关 
          动态方法:根据算法和rs状态进行调度。
                     lc: least connection,最少连接,根据机器连接数调度。Overhead=Active*256+Inactive,活动连接数*256+非活动连接数
                     wlc:weighted  least connection:Overhead=(Active*256+Inactive)/weight,活动连接数*256+非活动连接数/权重
                     sed: shortest expection delay:Overhead=(Active+1)*256/weight
                     nq: Never Queue:连接来后先每台rs发一个,之后用sed方式计算。
                     lblc: Locality-Based Least Connection:
                     lblcr:Replicated lblc:带复制功能的lblc

           安装lvs管理工具:
                      yum install -y ipvsadm:先安装ipvsadm,
                      curl http://192.168.146.1:测试web服务器是否正常工作
                      echo 1 > /proc/sys/net/ipv4/ip_forward:打开路由转发功能 
                      ipvsadm -h:查看帮助
                      ipvsadm -A|E -t|u|f service-address [-s scheduler]:
                                -A:添加director上的vip相关信息, -E:修改
                                -t:tcp服务、-u:udp服务、-f:防火墙标记
                                service-address:指定ip和端口为集群服务,也称为vip。 
                                -s: 调度算法,默认为wlc
                      例如:ipvsadm -A -t 192.168.5.28:80 -s rr:添加一个集群服务 
                                 ipvsadm -D -t 192.168.5.28:80:删除一个集群服务 
           为一个已经定义过的集群服务添加一个rs:
                      ipvsadm -a|e -t|u|f service-address -r server-address [options]:集群服务添加rs格式
                                 -a:添加一个rs,-e:修改
                                 -t:tcp服务、-u:udp服务、-f:防火墙标记
                                 service-address:指定已定义过的集群服务。
                                 server-address:添加rs,ip和端口。
                                 options:为可选选项,一般常用选项:
                                              -w:指定权重。
                                              -g:指定为dr模型。不指默认为dr。
                                              -i:指定为tun模型。
                                             -m:指定为net模型。
                                例如:ipvsadm -a -t 192.168.5.28:80 -r 192.168.146.138 -m
            查看ipvs:
                        ipvsadm -L -n:查看一个集群服务
                        ipvsadm -L -n -c:查看连接转发信息  
                        ipvsadm -L -n --stats:统计各rs连接情况 
                        ipvsadm -L -n --rate:速率,平均数 
                        ipvsadm -L -n --exact:精确值  
            删除集群服务:
                       -D:例如: ipvsadm -D -t 192.168.5.28:80:删除一个集群服务 
            清除集群服务:
                        -C:例如:ipvsadm -C
             保存集群服务:
                         -S:例如:ipvsadm -S > /path/file_name
             读取文件:
                          -R:例如:ipvsadm -R < /path/file_name

4、lvs dr模型及lxc虚拟化
            session持久机制方法:
                      session绑定,始终将来自同一个源ip的请求转发到同一台rs,没有容错能力,有损负载均衡效果。可以通过调度算法实现sh
                      session复制,在rs之中同步所有的session,每个rs拥有所有集群session信息,对大规模集群不适用。
                      session服务器,用单独部署的服务器节点管理所有的session。

             dr模型实现:vip、dip和rip必须在同一个物理网络中,中间不能有路由器拆封包信息。
                      Director:DIP, VIP
                      RS:RIP, VIP

              RS: 配置内核参数,每台服务器所有提供服务的网络接口都需要配置相关信息。
                     arp_ignore: 如何响应接收ARP地址请求;0表示全部响应;1表示仅在请求的地址配置在请求报文的接口进行响应;
                     arp_announce: 如何通告本地地址;0表示通告全部;2表示仅通告网络直连的接口地址;

             dr模型:
                     dip:192.168.5.7
                     vip:192.168.5.88
                     rip1:192.168.5.9
                     rip2:192.168.5.16
                 
             ifconfig eth1:0 192.168.5.88/24:添加vip
           

             为rs设定网卡工作特性内核参数,每台rs都需要设定。
                     echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
                     echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
                     echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
                     echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
                     ifconfig lo:0 192.168.5.88 netmask 255.255.255.255 broadcast 192.168.5.88 up
                     route add -host 192.168.5.88 dev lo:0
         
            测试响应服务器网卡amc地址:ping vip(ping 192.168.5.88)
                   arp -a:查看vip是由那个服务器的网卡mac地址响应。

你可能感兴趣的:(LVS)