之前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对其做健康状态监测,并且根据监测的结果自动完成添加或移除等管理功能     . 基于协议层次
      ip: icmp
      传输层:检测端口的开放状态
      应用层:请求获取关键性的资源
    
    2. 检查频度     3. 状态判断
       下线: ok --> failure --> failure --> failure
        上线: failure --> ok --> ok     4. back server,sorry server

最新文章

  1. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(一)
  2. 初学Spring
  3. Hadoop集群搭建安装过程(一)(图文详解---尽情点击!!!)
  4. MongoDB 的 GridFS 详细分析
  5. C# vba 操作 Word
  6. mysql中替换行首字符
  7. python 包管理工具pip安装与使用
  8. 【转】对ARM堆栈的理解
  9. Spring装配Bean之XML装配bean
  10. 【SSH系列】hibernate映射 -- 一对一双向关联映射
  11. 【165223&165218】结对感想——论如何与队友完美配合
  12. Juploader 1.0 谷歌(chrome)浏览器中成功上传文件后返回信息异常
  13. Linux 指令(一)文件/目录操作
  14. Jq_javascript跨域问题
  15. Windows的DOS命令基础
  16. 【java编程】正确重写hashCode和equesl方案
  17. 深入浅出图解【计算机网络】 之 【TCP可靠传输的实现2: 超时重传+拥塞控制】
  18. c++ 菜单动态效果
  19. 20145325张梓靖 《Java程序设计》第5周学习总结
  20. linux wc命令的作用。

热门文章

  1. 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame
  2. Go语言实现:【剑指offer】不用加减乘除做加法
  3. Redis5.x五种数据类型常见命令
  4. PHP 安装扩展步骤
  5. Linux运维---02.制作trove-redis镜像
  6. pikachu-越权漏洞(Over Permission)
  7. absoulue与relative配合定位盒子居中问题
  8. 微信小程序组件构建UI界面小练手 —— 表单登录注册微信小程序
  9. SDMask(iOS蒙层遮罩弹出引导)
  10. 获取Data和Log默认路径