之前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

lvs使用进阶的更多相关文章

  1. 6、lvs使用进阶(02)

    把web server服务和443服务绑定在一起之后呢? 假设一种场景,对web服务器来讲需要session保持.一个在线购物网站,在购物时,如果不结账,一般是http协议,当结账时,需要网站跳转,可 ...

  2. 5、lvs使用进阶(01)

    四层.七层负载均衡的区别  https://jaminzhang.github.io/lb/L4-L7-Load-Balancer-Difference/   netfilter/iptables简介 ...

  3. lvs 进阶 第二章

    linux virtual server 一 . lvs lvs 对数据进行四层转发,根据目标地址和目标端口对请求数据进行转发. lvs 包含ipvsadm 和ipvs: ipvsadm :用户空间的 ...

  4. 架构设计:负载均衡层设计方案(3)——Nginx进阶

    版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx继续进阶 1gzip ...

  5. LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

  6. 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

  7. 架构设计:负载均衡层设计方案(4)——LVS原理

    之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理.安装和特性组件.请参看<负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/ ...

  8. Apache+lvs高可用+keepalive(主从+双主模型)

    Apache+lvs高可用+keepalive(主从+双主模型)     keepalive实验准备环境: httpd-2.2.15-39.el6.centos.x86_64 keepalived-1 ...

  9. 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

    课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...

随机推荐

  1. Codeforces 1304E 1-Trees and Queries (树上距离+思维)(翻译向)

    题意 给你一棵树,q个询问(x,y,a,b,k),每次问你如果在(x,y)加一条边,那么a到b能不能走k步,同一个点可以走多次 思路(翻译题解) 对于一条a到b的最短路径x,可以通过左右横跳的方法把他 ...

  2. 强连通分量——tarjan算法

    概念: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通.如果有向图G的每两个顶点都强连 ...

  3. python学习(2)关于字符编码

    关于字符编码的学习内容笔记如下: 1.计算机只能用0和1来进行记录和存储.计算机是二进制. 2.ASCII(American Standard Code for Information Interch ...

  4. linux入门系列14--ssh服务及主机远程管理

    通过前面十余篇文章的介绍,相信已经初步入门Linux本地管理的基本方法了,后续的文章将介绍Linux中常用的服务部署以及如何为外部提供相应的服务. 系列文章第三篇"linux入门系列3--l ...

  5. C语言实现双人控制的战斗小游戏

    实现功能 1.双人分别控制小人移动 2.子弹碰撞 3.可改变出弹方向 4.血条实体化 前言 这个游戏是看了知乎一位非常好的老师的专栏后练手写的,(至于是哪位,知乎搜C语言小游戏最牛逼的那位) 有老师系 ...

  6. 关于存储最近N次数据的问题的实现

    需求描述: 需要实现采集中,始终保持最近10次的数据 描述分析: 当采集第一次数据的存储的时候,开辟一个长度为11的list,和一个标记为来记录当前的采集轮询次数(记录1-10,第11次数值归1) 数 ...

  7. StackExchange.Redis 之 Set集合 类型示例

    话不多说直接上代码: // set添加单个元素 stopwatch.Start(); "); stopwatch.Stop(); Console.WriteLine("set添加单 ...

  8. RX.js6变化

    RX.js变化 RxJS 6主要用于Angular应用程序,从Angular 6开始,它是一个强制依赖. 与RxJS版本5相比,RxJS 6(或更高版本)引入了两个重要更改: 1. import的导入 ...

  9. 回炉重造之重读Windows核心编程-003-内核对象

    内核对象是个比较难理解的概念,问题的根源就在于即使是<核心编程>书中也没有说清楚它的定义,只是不停地举例和描述它的性质,还有如何使用. 盲人摸象,难见全貌.只能尽可能列举它的性质,注意使用 ...

  10. wordpress 配置坑详解

    首先 经过我测试,php74模块没有支持apache的.所以升级到php74 之后,php无法使用. 最基本的函数phpinfo 调用不出来,没有相关的模块. 安装mariadb 10.4 之后发现, ...