之前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. Intel发布神经网络压缩库Distiller:快速利用前沿算法压缩PyTorch模型——AttributeError: module ‘tensorboard' has no attribute 'lazy'

    转载自:CSDN Nine-days   近日,Intel 开源了一个用于神经网络压缩的开源 Python 软件包 Distiller,它可以减少深度神经网络的内存占用.加快推断速度及节省能耗.Dis ...

  2. 小程序云开发--内容安全审查API云调用

    云调用 云调用是小程序·云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 wx-server-sdk 使用. 接口方法 openapi.security.msgSecCheck 需在 ...

  3. 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!

    以往,运营型的web为了安全目的,才使用WAF进行安全防护. 而现如今,WAF对企业web来说,已然成了刚需.为何?等保.网络安全法的硬性要求! 当然,这样要求显然是对的:没有网络安全,就没有国家安全 ...

  4. C#个推SDK推送安卓+iOS

    下载个推SDK,找到这两个dll直接引用. using引用 using com.gexin.rp.sdk.dto; using com.igetui.api.openservice; using co ...

  5. Java中,一个存在了十几年的bug...

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  6. 如何利用border书写三角形,建议考虑正方形

    网页做三角形图片,你还在拿ps调整吗?out了,老铁,来和我一起脑海畅想一个正方形是由4个等腰直角三角形构成,然后我想保留上边的三角形,那下边.左边.右边的三角形就没了(设置背景色transparen ...

  7. 定时器_在.net core3.0 webapi中添加自定义定时器功能

    前言:想在.net framework环境使用自定义定时器的话,参考我的另一篇文章:https://www.cnblogs.com/lxhbky/p/10242839.html 想在.net core ...

  8. Python 使用OS模块调用 cmd

    在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os.system()os.system(cmd) 是在执行command命令时需要打开一个终端,并且无法保存command命令的 ...

  9. Xilinx FPGA控制器的Everspin STT-DDR4设计指南

    自旋转移扭矩磁阻随机存取存储器(STT-MRAM)是一种持久性存储技术,可利用各种工业标准接口提供性能,持久性和耐用性. Everspin推出了STT-MRAM产品,该产品利用称为JE-DDR4的JE ...

  10. Mac-App Store 购买过程中出错 请求超时

    打开终端 输入下面命令回车: defaults delete com.apple.appstore.commerce Storefront 接上步骤,继续输入下面命令回车: defaults writ ...