zoukankan      html  css  js  c++  java
  • lvs使用进阶

    之前lvs基础篇(https://www.cnblogs.com/ckh2014/p/10855002.html)中介绍了lvs-dr的搭建,下面我们再复习一下,架构如下:

    相关配置

    director: 
       # ip addr add 192.168.1.111/32 dev/eth0
          
    RS:
      写一个脚本:vim setka.sh
        #!/bin/bash
        #
        vip=192.168.1.111
        case $1 in
        start)
          echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
          echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
          echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
          echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
    
          ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip
          ;;
        stop)
          ifconfig lo:0 down
          echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
          echo 0 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
          echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
          echo 0 > /proc/sys/net/ipv4/conf/eth0/arp_announce
          ;;
          esac
    
    director写ipvsadm管理命令:
        # ipvsadm -A -t 192.168.1.111:80 -s rr
        # ipvsadm -a -t 192.168.1.111:80 -r 192.168.1.102 -g
        # ipvsadm -a -t 192.168.1.111:80 -r 192.168.1.103 -g
    
    测试:浏览器访问http://192.168.1.111

    那我们如何开放两个端口的服务都做集群调度呢

    比如我们再添加ssh服务进行调度

    清空上面写的ipvsadm管理命令  
      # ipvsadm -C  
    添加80端口web服务集群:
      # iptables -t mangle -A PREROUTING -d 192.168.1.111 -p tcp -dport 80 -j MARK --set-mark 10
      # ipvsadm -A -f 10 -s rr
      # ipvsadm -a -f 10 -r 192.168.1.192 -g
      # ipvsadm -a -f 10 -r 192.168.1.103 -g
    添加ssh服务到集群:
      # iptables -t mangle -A PREROUTING -d 192.168.1.111 -p tcp -dport 22 -j MARK --set-mark 10

    再添加一个ssl也受集群管理:

    首先我们创建私有CA,给Real Server发证书,这里就简单介绍下创建证书的过程了,之前openssl博客已经写得很详细了,不了解的可以去参考(https://www.cnblogs.com/ckh2014/p/10772175.html):

    CA自签证书:
      # cd /etc/pki/CA
      # touch index.txt
      # echo 01 > serial
      # (umask 077;openssl genrsa -out private/cakey.pem 2048)
      # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
    RS生成证书请求:
      # cd /etc/httpd
      # mkdir ssl
      # yum install mod_ssl
      #(umask 077;openssl genrsa -out ssl/httpd.key 1024)
      # openssl req -new -key ssl/httpd.key -out ssl/httpd.csr -days 365
      传给ca签证:
      # scp ssl/httpd.csr root@192.168.1.101:/tmp
    CA签证:
      # openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 365
      证书传给RS:
      # scp certs/httpd.crt 192.168.1.102:/etc/httpd/ssl
    RS修改ssl配置文件:
      # vim /etc/httpd/conf.d/ssl.conf 
      具体配置就不详细描述了

     证书都发完后,写ipvsadm进行管理:

    # ipvsadm -A -t 192.168.1.111:443 -s rr
    # ipvsadm -a -t 192.168.1.111:443 -r 192.168.1.102 -g
    # ipvsadm -a -t 192.168.1.111:443 -r 192.168.1.103 -g
    测试: 浏览器访问https://192.168.1.111

     或者iptables规则中打标:

    # iptables -t mangle -A PREROUTING -d 192.168.1.111 -p tcp -dport 443 -j MARK --set-mark 10
    # ipvsadm -A -f 10 -s rr
    # ipvsadm -a -f 10 -r 192.168.1.192 -g
    # ipvsadm -a -f 10 -r 192.168.1.103 -g
    测试:浏览器访问https://192.168.1.111

     总结:

    通过FWM定义集群的方式:

    (1)在director上netfilter的mangle表的PREROUTNG定义用于”打标“的规则
        # iptables -t mangle -A PREROUTING -d $vip -p $protocol --dports $port -j MARK --set-mark #
            $vip: VIP地址
            $protocol:协议
            $port: 协议端口
    (2)基于FWM定义集群服务
        # ipvsadm -A -f # -s scheduler
        # ipvsadm -a -f # $RS_IP $context
           $context:上下文,有-m(masquerade,nat),-g(gateway,dr), -i(ipip,tun)

    功用:将共享一组RS的集群服务统一进行调度;

     session保持:

    session绑定
    session复制
    session服务器

    session绑定:lvs sh算法
      对某一特定服务;

    lvs persistence: lvs的持久连接

     功能:无论ipvs使用何种调度方法,其都能实现将来自于同一个Client的请求始终定向至第一次调度时挑选出的RS;

      持久连接模板:独立于算法

        sourceip rs timer 

      对多个共享同一组RS的服务器,需要统一进行绑定?

      持久连接的实现方式:

    每端口持久: PPC,单服务持久调度
    每FWM持久: PFWMC,单FWM持久调度
      PORT AFFINITY 每客户端持久: PCC,单客户端持久调度   director会将用户的任何请求都识别为集群服务,并向RS进行调度:     TCP:1-65535     UDP:1-65535
     
    # ipvsadm -A -t 192.168.1.101:0 -s rr -p  // 端口0表示所有的服务

    HA:

      SPOF: Single Point Of Failure

      director: 高可用集群
      realserver: 让director对其做健康状态监测,并且根据监测的结果自动完成添加或移除等管理功能
    
        1. 基于协议层次
          ip: icmp
          传输层:检测端口的开放状态
          应用层:请求获取关键性的资源
        
        2. 检查频度

        3. 状态判断
           下线: ok --> failure --> failure --> failure
            上线: failure --> ok --> ok

        4. back server,sorry server

     

     

  • 相关阅读:
    汉语-谚语:条条大路通罗马
    汉语-词语:缱绻
    几何-对称图形:中心对称图形
    java解析获取Excel中的数据--同时兼容2003及2007
    如何使gcc输出搜索到的头文件路径?
    如何使tmux可以像vi一样操作(如快速跳转到某一行)?
    如何使tmux能够使用鼠标上下滚动?
    ID3v2: 为aac格式的音频文件添加ID3v2 Header
    FFmpeg: 利用FFmpeg提取音频文件中的metadata
    C语言:变长结构体
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10859348.html
Copyright © 2011-2022 走看看