ipvsadm

ipvsadm命令是lvs集群在应用层的管理工具,我们可以通过此ipvsadm来管理lvs的配置,其实现了集群服务管理:增、删、改,集群服务的RS管理:增、删、改以及查看集群状态。

管理集群服务:增、改、删;

增(A)、改(E):ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
删:ipvsadm -D -t|u|f service-address
-t|u|f service-address:-t: TCP协议的端口,VIP:TCP_PORT,如 -t 172.16.10.6:80-u: UDP协议的端口,VIP:UDP_PORT-f:firewall MARK,是一个数字,通过iptables可以定义firewall MARK
[-s scheduler]:指定集群的调度算法,默认为wlc

管理集群上的RS:增、改、删;

增(a)、改(e):ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
删:ipvsadm -d -t|u|f service-address -r server-address
-r server-address:rip[:port],指明RS的IP地址
lvs类型:-g: gateway, dr类型-i: ipip, tun类型-m: masquerade, nat类型
-w weight:权重

查看集群的状态信息:

    ipvsadm -L|l [options]
options:-c, --connection:显示当前的LVS连接--timeout:列出超时--daemon:--stats:状态信息--rate:传输速率--persistent-conn:坚持连接--sor:把列表排序。--nosort:不排序-n, --numeric:输出IP地址和端口的数字形式

规则的保存和重载:

保存和重载:
    ipvsadm -S = ipvsadm-saveipvsadm -R = ipvsadm-restore
清空定义的所有内容:ipvsadm -C
将所有数据相关的计数器清零:ipvsadm -Z [-t|u|f service-address]

lvs-nat集群的实现

简易流程图:

配置RS1:

[root@RS1 ~]# yum -y install httpd  #安装Apache
[root@RS1 ~]# systemctl stop firewalld.service  #关闭防火墙
[root@RS1 ~]# ifconfig eno16777736 172.16.0.10/24 up  #配置网卡
[root@RS1 ~]# route add default gw 172.16.0.254  #配置路由
[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf  #设置httpdListen 8080ServerName localhost
[root@RS1 ~]# vim /var/www/html/index.html<h1> RS1 172.16.0.10 <h1>
[root@RS1 ~]# systemctl start httpd  #启用httpd
[root@RS1 ~]# ss -tanLISTEN      0      128              :::8080                         :::*  

RS2的配置参考RS1。

配置DR:

[root@DR ~]# yum -y install ipvsadm  #安装ipvsadm工具
[root@DR ~]# ifconfig eno16777736 10.0.0.1/24 up  #配置vip
[root@DR ~]# ifconfig eno16777736:0 172.16.0.254/24 up  #配置dip
[root@DR ~]# sysctl -a | grep ip_forward  #确保核心转发功能已开启net.ipv4.ip_forward = 1
[root@DR ~]# ipvsadm -A -t 10.0.0.1:80 -s rr  #配置lvs集群规则
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.10:8080 -m
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.11:8080 -m
[root@DR ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:80 rr-> 172.16.0.10:8080             Masq    1      0          0         -> 172.16.0.11:8080             Masq    1      0          0

客户端测试:

# 调度算法使用rr,轮询方式,故调用RS时 比例为1:1
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>
<h1> RS1 172.16.0.10 </h1>
<h1> RS2 172.16.0.11 </h1>

lvs-dr集群的实现

简易流程图:

配置RS1:

[root@RS1 ~]# ifconfig eno16777736 10.0.0.11/24 up  #配置网卡
[root@RS1 ~]# ifconfig lo:0 10.0.0.1 netmask 255.255.255.255 broadcast 10.0.0.1 up
[root@RS1 ~]# route add -host 10.0.0.1 dev lo:0  #配置路由
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #设置arp响应
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf  #设置httpdListen 80
[root@RS1 ~]# vim /var/www/html/index.html<h1> RS1 10.0.0.11<h1>
[root@RS1 ~]# systemctl start httpd  #启用httpd
[root@RS1 ~]# ss -tanLISTEN      0      128              :::8080                         :::*

RS2的配置参考RS1。

配置DR:

[root@DR ~]# ifconfig eno16777736 10.0.0.2/24 up  #配置dip
[root@DR ~]# ifconfig eno16777736:0 10.0.0.1 netmask 255.255.255.255 broadcast 10.0.0.1 up  #配置vip
[root@DR ~]# ipvsadm -A -t 10.0.0.1:80 -s wrr  #配置lvs集群规则
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.11 -g -w 1
[root@DR ~]# ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.12 -g -w 2
[root@DR ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.1:80 wrr-> 10.0.0.11:80                 Route   1      0          0         -> 10.0.0.12:80                 Route   2      0          0  

客户端测试:

# 调度算法使用wrr,比重为1:2
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS1 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.11 </h1>
<h1> RS2 10.0.0.12 </h1>
<h1> RS2 10.0.0.12 </h1>

RS1的配置脚本参考:

#!/bin/bash
#
vip=10.0.0.1
rip=10.0.0.11
mask1=255.255.255.255
mask2=255.255.255.0
case $1 in
start)echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig eno16777736 $rip netmask $mask2 upifconfig lo:0 $vip netmask $mask1 broadcast $vip uproute add -host $vip dev lo:0;;
stop)ifconfig lo:0 downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announce;;
*) echo "Usage $(basename $0) start|stop"exit 1;;
esac

DR的配置脚本参考:

#!/bin/bash
#
vip=10.0.0.1
mask1=255.255.255.255
dip=10.0.0.2
mask2=255.255.255.0
port=80
rs1=10.0.0.11
rs2=10.0.0.12
scheduler='wrr'
type='-g'
case $1 in
start)ifconfig eno16777736 $dip netmask $mask2 upifconfig eno16777736:0 $vip netmask $mask1 broadcast $vip upipvsadm -A -t ${vip}:${port} -s $scheduleripvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 2;;
stop)ipvsadm -Cifconfig eno16777736:0 down;;
*)echo "Usage $(basename $0) start|stop"exit 1;;
esac

附:使用 ldirectord 实现对各RS的健康状态做检查,失败时禁用,成功时启用。

DR上安装 ldirectord:

[root@DR ~]# lsb_release -r  #centos版本
Release:    7.2.1511
[root@DR ~]# yum localinstall ldirectord-3.9.6-0rc1.1.1.x86_64.rpm  #ldirectord版本
[root@DR ~]# cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/ldirectord.cf  #ldirectord默认没有配置文件,直接复制一份
[root@DR ~]# vim /etc/ha.d/ldirectordchecktimeout=3checkinterval=1fallback=127.0.0.1:80autoreload=yesquiescent=novirtual=10.0.0.1:80real=10.0.0.11:80 gate 1real=10.0.0.12:80 gate 2fallback=127.0.0.1:80 gateservice=http  #指定服务request="index.html"  #指定健康监测的文件#receive="Test"  #指定健康监测响应的内容scheduler=wrrchecktype=negotiatecheckport=80
[root@DR ~]# ipvsadm -C  #清除自己设定的集群
[root@DR ~]# ldirectord start
[root@DR ~]# ipvsadm -ln  #启用ldirectord会自行设定集群IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  10.0.0.1:80 wrr-> 10.0.0.11:80                 Route   1      0          0         -> 10.0.0.12:80                 Route   2      0          0

客户端测试:

#客户端测试
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done<h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS1 10.0.0.11 </h1>
#停止RS1的httpd服务
[root@RS1 ~]# systemctl stop httpd.service
#DR的状态
[root@DR ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  10.0.0.1:80 wrr-> 10.0.0.12:80                 Route   2      0          0
#客户端测试
[root@client ~]# for i in {1..20}; do curl http://10.0.0.1; done<h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> <h1> RS2 10.0.0.12 </h1> 

转载于:https://www.cnblogs.com/walk1314/p/9359158.html

lvs集群实现lvs-dr模型和lvs-nat模型相关推荐

  1. php lvs,LVS(四)LVS集群DR模式

    LVS集群DR模式 系统:CentOS-7-x86_64-Minimal-1611.iso 三台虚拟机网络规划: Director (桥接网卡) enp0s3DIP:192.168.43.201 19 ...

  2. lvs集群基础及lvs-nat、dr、fwm实践

    集群基础知识点: 集群类型:LB.HA.HP.DS LB:load balance,负载均衡集群,director:负载均衡器或者调度器,上游服务(upstream server),后端服务器称为re ...

  3. LVS集群-DR负载均衡集群

    LVS集群-DR负载均衡集群 服务介绍 Director 分配请求到不同的real server. real server 处理请求后直接回应给用户,这样director 负载均衡器仅处理客户机与服务 ...

  4. Linux系统(五)负载均衡LVS集群之DR模式

    序言 DR模式是lvs集群中三种负载均衡模式的其中一种,那么上一篇中我写啦关于NAT模式的搭建与原理,为什么还要有DR模式与IP隧道模式呢? 首先我们来看3张图.LVS/NAT模式如下图: LVS/I ...

  5. LVS集群---做前端调度器搭建使用

    LVS集群--->在这里做前端调度器搭建使用,工作模式用的LVS-nat和LVS-dr. ++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  6. Linux里面lvs的基础命令,Linux中使用ipvsadm配置LVS集群的基本方法

    LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...

  7. keepalived高可用lvs集群,主/备和主/主模型

    利用keepalived高可用lvs集群,主/备和主/主: vrrp_script高可用双主nginx: keepalived主备:lvs-dr工作模型 网络搭建: 在前端2台调度器: DR1:172 ...

  8. LVS集群应用配置详解

    一. 目录 关于集群的介绍. 什么是负载均衡以及为什么需要负载均衡. 负载均衡技术的特点. 负载均衡集群的常见解决方案. lvs介绍及管理工具. 实现lvs集群服务的三种类型方法介绍. LVS调度算法 ...

  9. Linux服务器集群系统(二)——LVS集群的体系结构

    原文地址:  http://www.linuxvirtualserver.org/zh/lvs2.html 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并讨论了其的设计原则 ...

最新文章

  1. 6D位姿估计Point Pair Feature (PPF)算法详解
  2. centos7安装mysql8.0简书_【Linux实战03】CentOS 7 下 MySQL 8.0 的安装
  3. 2021年看得见的粉丝价值——五大平台KOL粉丝分析研究报告
  4. 你不知道的Chrome调试技巧
  5. 无缝的缓存读取:双存储缓存策略
  6. Atitit.并发编程原理与概论 attilax总结
  7. 最具有中国特色的脑筋急转弯
  8. deficit记忆_英语单词分类记忆 高效快速的记忆法
  9. linux服务器如何查看硬盘型号,Linux如何查看硬盘型号和缓存
  10. bootcamp空间不足_mac安装双系统 提示磁盘上没有足够的可用空间的解决方法
  11. java newline_“\ n”和Environment.NewLine之间的区别
  12. 快速将PDF转换为图片:使用在线转换器的步骤
  13. 【MySQL基础】什么是MySQL约束?什么是主键约束?
  14. 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)
  15. c语言switch语句中文,C语言switch语句问题。
  16. zookeeper启动报错Starting zookeeper ... ./zkServer.sh:行113: /usr/local/src/zookeeper/data/zookeeper_serv
  17. 江西服装学院计算机考试是几级,江西服装学院2018年艺术类报考须知(江苏省)
  18. 九、【TF2】Metrics 评估指标
  19. 51单片机独立按键控制LED状态
  20. 江西计算机专业技校排名,江西技校一览表

热门文章

  1. PyQt5 QLabel标签
  2. px、pt和em的区别
  3. 中科曙光 量子计算机,中科曙光 量子计算机 量子计算机的曙光
  4. 一、 网络安全基础入门-概念名词
  5. Oracle--“ORA-28007: the password cannot be reused”解决
  6. YDOOK:Java: 获取 boolean Boolean 数据类型的默认值
  7. 秒杀99.99%大学生!看看清华的学霸到底有多牛?
  8. Eclipse 2020-06 汉化包安装步骤(附汉化包+安装教程)(转载)
  9. 最优化方法(学习笔记)-第十一章等式约束优化问题
  10. Java设计模式策略模式(附实例代码)每天一学设计模式