之前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. 洛谷P1179 【数字统计】

    题目传送门 此题题意十分明确:就是让我们统计在[L , R]区间内的数字2出现的次数. 然后我们再看一看此题的数据范围:1≤L≤R≤100000,所以用n log n的复杂度是可以过的. 1.解题思路 ...

  2. 杭电-------2098 分拆素数和(c语言写)

    #include<stdio.h> #include<math.h> ] = { , }; ;//全局变量,用来标志此时已有多少个素数 int judge(int n) {// ...

  3. JQuery教程之入门基础

    语法 $(selector).action() selector:选择器,类似css中的选择器 比如: $('.buttons-tab a') --class为buttons-tab下的子元素a ac ...

  4. hexo博客

    安装软件 node.js(建议稳定版本,本人安装v8.11.3) npm install -g hexo-cli hexo init myBlog //初始化,在myBlog的文件夹下建立网站 hex ...

  5. Executor 任务执行器

    Executor: 是一个接口 用于执行提交的任务 解耦任务提交和执行(线程的创建及调度) Executor的实现可以根据实际需求延展不同的逻辑:1. 对于提交的任务同步或者异步执行,如下同步执行: ...

  6. .NET Core 3 Web Api Cors fetch 一直 307 Temporary Redirect

    .NET Core 3 Web Api Cors fetch 一直 307 Temporary Redirect 继上一篇 .net core 3 web api jwt 一直 401 为添加JWT- ...

  7. RedHat7安装NetCore环境并发布网站

    RedHat7安装NetCore环境并发布网站 1.注册Microsoft签名密钥并添加Microsoft产品提要,每台机器只需注册一次 执行下面的命令即可 rpm -Uvh https://pack ...

  8. Android中TimePicker时间选择器的使用和获取选择的时和分

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

  9. Linux学习Day3:新手必须掌握的Linux命令(二)

    今天学习的命令都是运维工作中经常要用到的,非常实用,必须要用心学习,争取把这些命令烂熟于心,具体内容如下: 一.系统状态监测命令 1.ifconfig命令 用于获取网卡配置与网络状态等信息. [roo ...

  10. yum 程序包管理简介

    rpm可以实现程序的快速,简单安装(跟编译安装比),但是rpm自己不能解决依赖,所以很多工具为了自动解决依赖应运而生,其中yum就是其中之一. yum解决依赖的办法: 必须有个文件服务器,里面放置所以 ...