之前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. C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id

    紧接上一篇,将List<Menu>的扁平结构数据, 转换成树形结构的数据 返回给前端   ,   废话不多说,开撸! --------------------- 步骤: 1. 建 Menu ...

  2. Go语言实现:【剑指offer】矩阵中的路径

    该题目来源于牛客网<剑指offer>专题. 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向 ...

  3. javascript 动态加载javascript文件

    /* loadFile(data, callback): 动态加载js文件 data: 存放需要加载的js文件的url("url" || ["url", &qu ...

  4. 持续化运维 DevOps

            DevOps(Development和Operations的组合词)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整 ...

  5. NIO学习笔记,从Linux IO演化模型到Netty—— 究竟如何理解同步、异步、阻塞、非阻塞

    我的观点 首先,分开各自理解. 1. 同步:描述两个(或者多个)个体之间的协调关系. 比如,单线程中,methodA调用了methodB,methodB返回后,methodA才往下执行,那么称A同步调 ...

  6. 使用Vue.prototype在vue中注册和使用全局变量

    在main.js中添加一个变量到Vue.prototype Vue.prototype.$appName = 'My App' 这样 $appName 就在所有的 Vue 实例中可用了,甚至在实例被创 ...

  7. 手把手教你搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

  8. Android中ProgressBar的使用-通过Handler与Message实现进度条显示

    场景 进度条效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为 ...

  9. 1、Docker部署及基础理论

    1.Docker入门简介 Docker技术类似码头上看到的集装箱,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,有了集装箱以后,搬运货物变得简单,通过集装箱的搬运模式更加单一.高效,将货 ...

  10. C++中字符常量与字符常量不能直接相加

    定义string变量,并进行初始化,如下: string s1 = "Hello"; string s2 = s1 + "World"; string s3 = ...