设为首页 收藏本站
查看: 1084|回复: 0

[经验分享] LVS负载均衡集群(干货来袭)

[复制链接]

尚未签到

发表于 2019-1-6 09:19:55 | 显示全部楼层 |阅读模式
  提升服务器响应能力的方式:
  Scale On:向上扩展
  升级服务器硬件
  Scale Out:向外扩展
  增加服务器个数
  
  
  集群类型:
  LB: Load Balance负载均衡集群
  并发处理能力
  HA: High Availability高可用集群
  在线时间/(在线时间+故障处理时间)
  99%,99.9%,99.99%,99.999%
  HPC:High Performance Computer 高性能集群
  并行处理集群
  分布式存储:分布式文件系统
  将大任务切割成小任务,分别进行处理计算的机制
  
  
  
  脑裂 split-brain
  两个集群节点不对称,节点2认为节点1已经挂掉了,但节点1因为繁忙等原因没有挂掉,此时会产生集群脑裂
  有可能导致两个节点同时读写同一个文件系统,导致数据错乱
  
  STONITH:Shoot The Other Node In The Head
  为避免产生集群脑裂,可以借助STONITH设备彻底使某个节点失效
  
  FENCE
  拒绝某个节点访问集群资源
  节点级别隔离:STONITH
  资源级别隔离
  

  
  为避免集群分裂,高可用集群至少要有奇数个节点
  

  负载均衡集群
  

  实现调度器的方式:
  Hardware
  F5
  Citrix,Netscaler
  A10
  Software
  四层
  LVS
  七层:反向代理
  Nginx
  http,smtp,pop3,imap
  haproxy
  http,tcp(mysql,smtp)
  

  

  LVS-----Linux Virtual Server
  

  LVS:
  ipvsadm:管理集群的命令行工具
  ipvs:工作在内核上
  

  LVS角色:
  前端:Director
  vip:Director上对外提供服务的IP
  DIP:Director上与Real Server通信的IP
  CIP:客户端的IP地址
  后端:Real Server
  RIP:Real Server上网卡IP
  

  

  LVS类型:
  LVS-NAT
  1、集群节点与Director必须在同一个IP网络中
  2、real server的网关要指向Director的DIP
  3、RIP通过是私有地址,仅用于各集群节点间的通信
  4、Director负责所有通信,进、出的数据都要经过Director
  5、Director支持端口映射,对外提供服务的端口与real server的服务端口可以不一致
  6、Real server可以使用任意操作系统
  7、较大规模应用场景中,Director易成为系统瓶颈
  
  LVS-DR
  1、集群节点与Director必须在同一个物理网络中
  2、RIP地址可以是公网IP或者私有地址
  3、Director只负责处理入站请求,响应报文由Real server直接发往客户端
  4、Real Server不能将网关指向DIP,直接指向前端路由网关地址
  5、Director不支持端口映射
  
  LVS-TUNNEL
  1、集群节点可以跨越互联网,可以不在一个物理网络中
  2、RIP必须是公网IP地址
  3、Director只负责处理入站请求,响应报文由Real Server直接发往客户端
  4、只有支持隧道功能的OS才能用于Real Server
  5、不支持端口映射
  

  

  LVS调度算法:
  静态调度方法
  rr:Round Robin轮询
  wrr:Weight Round Robin 加权轮询
  sh:Source hash  源地址Hash,只要来自同一个客户端的用户请求全都转发至同一个Real Server
  dh:Destination hash 将同样的请求发送到同一个real server
  
  动态调度方法
  lc: least connection 最少连接
  active*256+inactive
  wlc:weight least connection 加权最少连接,默认调度方法
  (active*256+inactive)/weight
  sed:shorest expire delay 最少期望延迟
  (active+1)*256/weight
  nq: never queue 永不排队
  LBLC:Local Base Least Connection  基本本地的最少连接
  将同一个客户端的请求发送到同一个Real Server,并考虑当前服务器的连接数
  LBLCR:Local Base Least Connection Replication 基于本地的带复制功能的最少连接
  

  

  

  ipvsadm工具的使用:
  管理集群服务
  添加-A  -t|u|f  service-address  [-s scheduler]
  -t:tcp协议的集群
  -u:udp协议的集群
  service-address:  IP:port
  -f:firewallmark   fwm防火墙标记
  service-address: Mark Number
  

  修改-E
  删除-D  -t|u|f  service-address
  

  示例1:定义172.16.100.1的80端口为集群服务
  # ipvsadm -A -t 172.16.100.1:80 -s rr
  

  管理集群服务中的real server
  添加ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
  service-address    之前定义好的集群服务
  -r server-address某real server的IP地址;在NAT模型中,可以使用IP:PORT格式做端口映射
  [-g|i|m] 表示LVS类型
  -g  DR模型  默认模型
  -iTUNNEL模型
  -mNAT模型
  [-w weight]定义real server的权重
  修改-E
  删除ipvsadm -d -t|u|f service-address -r server-address
  

  

  查看
  ipvsadm -L|l [options]
  options:
  -n:以数字形式显示地址及端口
  --stats显示统计信息
  --rate数据传输速率
  --timeout显示tcp/tcp-fin/udp会话超时时间
  # ipvsadm -L -n --timeout
  Timeout (tcp tcpfin udp): 900 120 300
  -c显示客户端的连接数
  

  

  删除所有集群服务
  -C:清空ipvs规则
  

  保存ipvs规则
  -S
  # ipvsadm -S > /path/to/somefile
  
  载入此前的规则
  -R
  # ipvsadm -R < /path/to/somefile
  

  

  各节点之间的时间偏差不应该超过1秒钟
  NTP:Network Time Protocol
  

  

  NAT模型LVS集群案例
  环境如下:rhel 6.3服务器3台,IP地址规则如下
  rhel-1: 作为调度器Director   vmnet1 10.1.1.1   vmnet8 192.168.1.1
  rhel-2: web服务器1   vmnet 8  192.168.1.2  网关 192.168.1.1
  rhel-3:web服务器2vmnet8  192.168.1.3网关 192.168.1.1
  

  按照如上要求,分别配置3台服务IP地址及网关
  

  1、两台web服务器分别安装httpd,并建立测试测试网页,保证本机可以正常访问
  

  2、在10.1.1.1上验证内核是否支持ipvs模块
  # grep -i "vs" /boot/config-2.6.32-279.el6.i686
  # CONFIG_GENERIC_TIME_VSYSCALL is not set
  CONFIG_HIBERNATION_NVS=y
  CONFIG_IP_VS=m
  CONFIG_IP_VS_IPV6=y
  

  3、在10.1.1.1上安装ipvsadm管理工具
  # rpm -ivh /mnt/Packages/ipvsadm-1.25-10.el6.i686.rpm
  warning: /mnt/Packages/ipvsadm-1.25-10.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
  Preparing...                  ########################################### [100%]
     1:ipvsadm                ########################################### [100%]
  

  4、定义10.1.1.1的80端口为集群服务,并将两台real server添加到该集群服务中
  # ipvsadm -A -t 10.1.1.1:80 -s rr
  # ipvsadm -a -t 10.1.1.1:80 -r 192.168.1.2 -m
  # ipvsadm -a -t 10.1.1.1:80 -r 192.168.1.3 -m
  

  5、查看集群状态
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.1.1.1:80 rr
    -> 192.168.1.2:80               Masq    1      0          0         
    -> 192.168.1.3:80               Masq    1      0          0     
  

  6、打开10.1.1.1服务器上的ipv4.forward转发功能,并在客户端测试访问;
  # sysctl -p
  net.ipv4.ip_forward = 1
  在客户端浏览器输入http://10.1.1.1可查看到real server网页,点击刷新,网页内容在两台服务器间相互切换
  查看集群数据统计信息
  # ipvsadm -L -n --stats
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
    -> RemoteAddress:Port
  TCP  10.1.1.1:80                        23      120      102    14795    11135
    -> 192.168.1.2:80                     11       59       51     7595     5554
    -> 192.168.1.3:80                     12       61       51     7200     5581
  保存ipvsadm规则
  # service ipvsadm save
  ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [确定]
  

  7、调整集群调度算法为wrr,并分别指定192.168.1.2的权重为3,192.168.1.3的权重为1
  # ipvsadm -E -t 10.1.1.1:80 -s wrr  
  # ipvsadm -e -t 10.1.1.1:80 -r 192.168.1.2 -m -w 3  
  # ipvsadm -e -t 10.1.1.1:80 -r 192.168.1.3 -m -w 1  
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.1.1.1:80 wrr
    -> 192.168.1.2:80               Masq    3      0          0         
    -> 192.168.1.3:80               Masq    1      0          0  
  

  8、清空ipvsadm统计数据,并在客户端重新浏览网页,查看ipvsadm统计数据
  # ipvsadm -Z -t 10.1.1.1:80
  # ipvsadm -L -n --stats
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
    -> RemoteAddress:Port
  TCP  10.1.1.1:80                        22      111      107    15473    10494
    -> 192.168.1.2:80                     17       83       82    11712     7684
    -> 192.168.1.3:80                      5       28       25     3761     2810
  观察以上数据,权重为3的192.168.1.2 web服务器,数据量大概为192.168.1.3的3倍左右
  

  LVS-DR模型
  

  避免Real Server向外通告VIP,可采用如下办法:
  1、在前端路由做IP与MAC静态绑定
  2、arptables
  3、kernel parameter
  
  arp_ignore:接收到arp请求时的响应级别
  0:默认值,只要有请求进入,只要本地配置了此IP,都向外通告
  1:仅仅在请求的目标IP是本地地址,并且该地址是配置在请求进入的网卡时,才给予响应
  
  arp_announce:将自己的IP地址及MAC地址的对应关系向外通告时的通告级别
  0:默认值,使用本地的任何接口上的任何地址都向外通告
  1:尽可能试图仅向目标网络通告与其网络匹配的接口地址
  2:仅将与本地接口匹配的网络向外通告
  

  

  Linux路由转发特性,回应报文从哪个网络接口发出,则以该网络接口的地址作为报文的源IP地址使用;在配置LVS-DR模型时,Real Server上的VIP地址一般都是配置在lo网卡的别名上,例如lo:1. 为保证Real Server在给客户端进行报文响应时,仍可以使用lo:1的地址作为源地址,需要在Real SServer上配置路由,明确指定响应报文以lo:1的地址作为响应的源地址。
  

  

  

  LVS DR模型示例
  环境IP规则如下:
  Director调度器:
  DIPeth0   10.1.1.1
  VIPeth0:010.1.1.254
  

  Real Server 1
  RIPeth010.1.1.2
  VIPlo0:010.1.1.254
  

  Real Server 2
  RIPeth010.1.1.3
  VIPlo:010.1.1.254
  

  1、按上述要求配置各主机的IP地址及路由
  Director:
  # ifconfig eth0:0 10.1.1.254 broadcast 10.1.1.254 netmask 255.255.255.255
  # route add -host 10.1.1.254 dev eth0:0   >>>响应目的地址为10.1.1.254的请求包时,以eth0:0作为源地址
  

  配置Real Server的VIP时,必须先修改arp_ignore和arp_announce参数
  Real Server 1:
  # 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 10.1.1.254 broadcast 10.1.1.254 netmask 255.255.255.255
  # route add -host 10.1.1.254 dev lo:0
  

  Real Server 2:
  # 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 10.1.1.254 broadcast 10.1.1.254 netmask 255.255.255.255
  # route add -host 10.1.1.254 dev lo:0
  

  2、分别在两台real server上搭建web服务,并使用Director测试访问两台服务器的web服务正常
  # curl http://10.1.1.2
  10.1.1.2 Pag:wq
  # curl http://10.1.1.3
  10.1.1.3 Page
  

  

  3、在Director上配置ipvsadm规则 ,添加集群服务
  # rpm -ivh /mnt/Packages/ipvsadm-1.25-10.el6.i686.rpm
  # ipvsadm -A -t 10.1.1.254:80 -s wrr
  # ipvsadm -a -t 10.1.1.254:80 -r 10.1.1.2 -g -w 2
  # ipvsadm -a -t 10.1.1.254:80 -r 10.1.1.3 -g -w 1
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.1.1.254:80 wrr
    -> 10.1.1.2:80                  Route   2      0          0         
    -> 10.1.1.3:80                  Route   1      0          0        
  

  4、在客户机浏览器中输入 http://10.1.1.254测试访问网页
  

  

  

  脚本实现DR模型LVS集群:
  real server脚本 :
  #!/bin/bash
  

  vip=10.1.1.254
  

  # stop NetworkManager
  service NetworkManager stop &> /dev/null
  chkconfig NetworkManager off
  

  # stop iptables and SELinux
  service iptabels stop &> /dev/null
  chkconfig iptables off
  setenforce 0 &> /dev/null
  

  # Define the kernel arguments arp_ignore arp_announce
  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 broadcast $vip netmask 255.255.255.255
  route add -host $vip dev lo:0
  

  

  

  Director脚本示例
  #!/bin/bash
  

  vip=10.1.1.254
  vport=80
  rs1_ip=10.1.1.2
  rs2_ip=10.1.1.3
  rs1_weight=2
  rs2_weight=1
  net=eth0
  

  

  case $1 in
    start)
      # Config vip and route
      ifconfig $net:0 $vip broadcast $vip netmask 255.255.255.255
      route add -host $vip dev $net:0 &> /dev/null
  

      # install ipvsadm software
      mount /dev/cdrom /mnt &> /dev/null
      if i rpm -q ipvsadm &> /dev/null; then
         rpm -ivh /mnt/Packages/ipvsadm-1.25-10.el6.i686.rpm &> /dev/null
      fi
  

      ipvsadm -C
      ipvsadm -A -t $vip:$vport -s wlc
      ipvsadm -a -t $vip:$vport -r $rs1_ip -g -w $rs1_weight
      ipvsadm -a -t $vip:$vport -r $rs2_ip -g -w $rs2_weight
      ;;
    stop)
      ipvsadm -C
      echo "ipvs cluster have been deleted"
      ipvsadm -L -n
      ;;
    save)
      ipvsadm -S > /etc/ipvs.info
      echo "ipvs rules is saved in /etc/ipvs.info"
      ;;
    status)
      ipvsadm -L -n
      ;;
    *)
      echo "Usage:`basename $0` { start | stop | status | save }"
      ;;
  esac
  

  

  

  curl命令常用选项:
  --cacert   CA证书文件
  --capath CA目录
  --compressed要求返回是压缩的形势
  --connect-timeout 设置最大请求时间
  -H/--header 自定义头信息传递给服务器
  -i/--include输出时包括protocol头信息
  -I/--head 只显示文档信息
  --interface 使用指定网络的接口或地址
  -s/--silent静音模式,不输出任何内容
  -u/--user 设置服务器的用户和密码
  -p/--proxytunnel使用HTTP代理
  

  

  lvs后端服务器健康状态检查脚本
  #!/bin/bash
  

  vip=10.1.1.254
  vport=80
  rs1_server=10.1.1.2
  rs2_server=10.1.1.3
  rs1_weight=2
  rs2_weight=1
  

  while true;do
    # check real server-1
    if ! curl --connect-timeout 1 http://$rs1_server &> /dev/null;then
      if ipvsadm -L -n | grep $rs1_server &> /dev/null; then
        ipvsadm -d -t $vip:$vport -r $rs1_server &> /dev/null
      fi
     fi
    if  curl --connect-timeout 1 http://$rs1_server &> /dev/null;then
      if ! ipvsadm -L -n | grep $rs1_server:$vport &> /dev/null; then
  ipvsadm -a -t $vip:$vport -r $rs1_server -g -w $rs1_weight
  ipvsadm -d -t $vip:$vport -r 127.0.0.1
      fi
    fi
    # check real server-2
    if ! curl --connect-timeout 1 http://$rs2_server &> /dev/null;then
      if ipvsadm -L -n | grep $rs2_server &> /dev/null; then
        ipvsadm -d -t $vip:$vport -r $rs2_server &> /dev/null
      fi
     fi
    if  curl --connect-timeout 1 http://$rs2_server &> /dev/null;then
      if ! ipvsadm -L -n | grep $rs2_server:$vport &> /dev/null; then
  ipvsadm -a -t $vip:$vport -r $rs2_server -g -w $rs2_weight
      fi
    fi
  

    # add self
    if ! curl --connect-timeout 1 http://$rs1_server &> /dev/null;then
     if ! curl --connect-timeout 1 http://$rs2_server &> /dev/null; then
       ipvsadm -d -t $vip:$vport -r $rs1_server &> /dev/null
       ipvsadm -d -t $vip:$vport -r $rs2_server &> /dev/null
       ipvsadm -a -t $vip:$vport -r 127.0.0.1 &> /dev/null
     fi
    fi
    sleep 3
  done
  

  

  LVS持久连接
    无论使用什么算法,lvs持久连接都可以在一定时间内,将来自同一个客户端的连接请求转发到此前选定的RS
  
  持久连接模板(内存缓冲区)
  记录了每一个客户端第一次访问时及分配给它的Real Server 的映射关系
  
  查看持久连接模板
  # ipvsadm -L -c
  IPVS connection entries
  pro expire   state         source             virtual           destination
  TCP 00:05  CLOSE       10.1.1.100:52955   10.1.1.254:http    10.1.1.2:http
  TCP 14:57  ESTABLISHED 10.1.1.100:52957   10.1.1.254:http    10.1.1.2:http
  TCP 00:05  CLOSE       10.1.1.100:52954   10.1.1.254:http    10.1.1.3:http
  TCP 00:03  CLOSE       10.1.1.100:52953   10.1.1.254:http    10.1.1.3:http
  TCP 00:06  CLOSE       10.1.1.100:52956   10.1.1.254:http    10.1.1.3:http
  TCP 00:05  CLOSE       10.1.1.100:52952   10.1.1.254:http    10.1.1.2:http
  

  使lvs集群支持持久连接,只需要在定义集群服务时,使用-p选项指定持久连接的超时时间即可
  # ipvsadm -A | E ….. -p timeout
  timeout:定义持久连接的超时时间  默认为300秒; 单位为秒
  

  在基于ssl的应用中,需要使用到持久连接
  

  持久连接:
  PPC(持久端口连接):将来自于同一个客户端对同一个服务的请求始终定向到同一个此前选定的Real Server
  PCC(持久客户端连接):将来自于同一个客户端对所有服务的请求始终定向到同一个此前选定的Real Server
  PNMPP(持久防火墙标记连接):
  

  PPC:持久端口连接, 将来自同一个客户端对同一个集群服务的请求,始终定向到此前选定的RS
  

  示例:
  在10.1.1.1调度器对web集群服务进行持久连接
  1)为方便观察效果,将集群服务修改使用rr算法
  # ipvsadm -E -t 10.1.1.254:80 -s rr
  

  2)开启web集群的持久连接,并指定其超时时间为600秒
  # ipvsadm -E -t 10.1.1.254:80 -s rr -p 600
  

  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.1.1.254:80 rr persistent 600
    -> 10.1.1.2:80                  Route   2      0          0         
    -> 10.1.1.3:80                  Route   1      0          1   
  

  再次刷新客户端浏览器页面,发现响应的页面都来自同一个RS
  

  3)在服务器端查看持久连接的响应服务器
  # ipvsadm -L -n --persistent-conn
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port            Weight   PersistConn ActiveConn InActConn
    -> RemoteAddress:Port
  TCP  10.1.1.254:80 rr persistent 600
    -> 10.1.1.2:80                  2         1           0          2         
    -> 10.1.1.3:80                  1         0           0          1         
  

  

  在两台RS上安装telnet服务,并为其建立集群服务,进行持久连接测试
  1) 两台RS上安装并启动telnet服务
  # yum install -y telnet*
  # chkconfig telnet on   
  # service xinetd restart
  # useradd tom>>>telnet只允许普通用户连接,因此建立普通用户
  # passwd tom
  

  2)在10.1.1.1调度器上建立telnet集群服务,并指定持久连接超时为3600秒
  # ipvsadm -A -t 10.1.1.254:23 -s rr -p 3600
  # ipvsadm -a -t 10.1.1.254:23 -r 10.1.1.2 -g -w 2
  # ipvsadm -a -t 10.1.1.254:23 -r 10.1.1.3 -g -w 2
  

  3)在客户端测试telnet连接,连接完成后通过查看ip地址,发现连接的均是同一台RS
  

  

  

  PCC:持久客户端连接, 将来自同一个客户端对所有服务的请求,始终定向到此前选定的RS
  将所有的服务全部定义为集群服务,一律向RS转发
  

  示例:
  1)在10.1.1.1将所有服务定义为集群服务
  # ipvsadm -A -t 10.1.1.254:0 -s rr -p 600
  # ipvsadm -a -t 10.1.1.254:0 -r 10.1.1.2 -g -w 2
  # ipvsadm -a -t 10.1.1.254:0 -r 10.1.1.3 -g -w 2
  

  2)在客户端上分别使用telnet /ssh /http对集群服务进行测试,发现连接的全是同一台RS
  # ipvsadm -L -n -c
  IPVS connection entries
  pro expire state       source             virtual            destination
  TCP 08:43  NONE        10.1.1.100:0       10.1.1.254:0       10.1.1.3:0
  TCP 00:57  NONE        10.1.1.100:0       10.1.1.254:80      10.1.1.3:80
  TCP 46:30  NONE        10.1.1.100:0       10.1.1.254:23      10.1.1.3:23
  TCP 01:15  FIN_WAIT    10.1.1.100:53264   10.1.1.254:22      10.1.1.3:22
  TCP 00:26  FIN_WAIT    10.1.1.100:53258   10.1.1.254:80      10.1.1.3:80
  TCP 00:37  FIN_WAIT    10.1.1.100:53263   10.1.1.254:23      10.1.1.3:23
  

  

  

  

  PNMPP:持久防火墙标记连接
  PCC模型在实现持久连接时,需要将所有服务定义为集群服务;而PNMPP持久防火墙标记连接可以实现将几个特定的服务定义为持久连接,而不需要定义所有服务;
  

  实现思路:
  在iptables的mangle表中的PREROUTING链中,将需要定义为持久连接的服务打上相同的标记,然后将标记定义为集群服务即可
  标记:0----99
  

  示例:
  将10.1.1.2和10.1.1.3上的web服务和telnet服务定义为持久连接,为两个服务打上相同的标记为10
  

  1)在调度器10.1.1.1上为web服务和telnet服务打相同的标记
  # iptables -F
  # iptables -F -t mangle
  # iptables -t mangle -A PREROUTING -i eth0 -d 10.1.1.254 -p tcp --dport 80 -j MARK --set-mark 10
  # iptables -t mangle -A PREROUTING -i eth0 -d 10.1.1.254 -p tcp --dport 23 -j MARK --set-mark 10
  

  2)将标记为10的服务定义为集群服务
  # ipvsadm -A -f 10 -s rr
  # ipvsadm -a -f 10 -r 10.1.1.2 -g -w 2
  # ipvsadm -a -f 10 -r 10.1.1.3 -g -w 1
  

  3)测试ssh 10.1.1.254连接的是调度器本身,证明其不是集群服务
    分别测试http://10.1.1.254和telnet 10.1.1.254,这两个服务目前处于负载均衡状态
  

  4)将集群服务调整为持久连接
  # ipvsadm -E -f 10 -p 600
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  FWM  10 wlc persistent 600
    -> 10.1.1.2:0                   Route   2      0          1         
    -> 10.1.1.3:0                   Route   1      0          1      
  

  5)再次使用客户端对telnet和web服务进行测试,两个服务的请求全部被转发到了同一台RS
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659862-1-1.html 上篇帖子: LVS负载均衡集群技术学习笔记 下篇帖子: 【中级篇】Linux中部署LVS负载均衡群集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表