什么是集群?

一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器。简而言之,一堆机器协同工作就是集群。集群的基本特点:高性能、高并发、高吞吐、经济实惠成本低、可伸缩性、可扩展性、高可用性、7*24提供服务、透明性、松耦合、可管理性、可编程性等。集群分为负载均衡集群 LB、高可用集群 HAC、高性能计算集群 HPC等,常见的集群软件有lvs、haproxy、nginx、keepalived、heartbeat,硬件有硬件:F5、Netscaler、Radware、A10,工作模式类似haproxy,内部还是安装软件然后进行优化。

LVS负载均衡技术

LVS属于四层负载均衡,主要采用IP负载均衡技术,实现LVS功能的是IPVS,IPVS工作在内核层,ipvsadm管理ipvs,工作在用户层;LVS真正实现调度的工具是IPVS,管理工具ipvsadm,keepalived也可以管理。LVS模式分为NAT网络地址转换模式、TUN隧道模式、DR直接路由模式、FULLNAT模式等。

LVS负载均衡DR模式

DR模式通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器将响应后的处理结果直接返回给客户端,不经过负载均衡器。通常来说返回的数据比请求数据要大得多,所以DR的效率高。
 
NAT模式由于将VIP修改为RIP,所以响应报文也必须经过LVS发回客户端,故LVS可能成为性能瓶颈。
所以,为了达到直接返回客户端的目的,VIP就不能变化,于是衍生出TUN模式和DR模式。
TUN模式不改变VIP,而是采用在VIP报文基础上直接封装一层RIP包头的方式,达到向后转发的目的。
但TUN模式需要LVS和RS都支持IP隧道,比较麻烦,于是想到向后转发除了使用RIP地址之外,还可以直接修改数据帧MAC地址,于是衍生出DR模式。
DR模式和TUN模式功能上相同,区别在于转发机制,在于如何区分定位RS,前者通过二层MAC,后者通过三层IP。
 
DR模式核心点在于不修改VIP,所以配置的关键点在于
  1. RS要绑定VIP才能接收数据包,同时VIP又不能出现在同一子网,于是绑定在lo或任一其它子网的网卡。
  2. 局域网有了相同的VIP就要抑制RS的ARP响应。

CIP:client ip VIP:virtual ip RS:realserver

安装LVS

LVS核心是ipvs模块,该模块已经整合进linux内核,我们安装的其实是ipvsadm管理工具
cd /server/tools
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
yum install libnl* popt* -y
tar xf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make
make install
lsmod | grep ip_vs
modprobe ip_vs 或者 /sbin/ipvsadm

手动配置LVS

1. 绑定VIP
ifconfig eth0:0 10.0.0.10/24 up
ping 10.0.0.10
2. 配置lvs
ipvsadm --help
ipvsadm -C //清空
ipvsadm --set 30 5 60 //设定超时
ipvsadm -A -t 10.0.0.10:80 -s rr -p 20 //添加实例
ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.13 -g -w 1 //添加节点
ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.14 -g -w 1 //添加节点
ipvsadm -L -n //查看
ipvsadm -D -t 10.0.0.10:80 //删除实例
ipvsadm -d -t 10.0.0.10:80 -r 10.0.0.13 //删除节点
3. RS节点绑定VIP到lo网卡
ifconfig lo:10 10.0.0.10 netmask 255.255.255.255 up
route add -host 10.0.0.10 dev lo
ifconfig
lo网卡子网掩码255.255.255.255只是一个推荐值,lo的IP通常只用于本机测试,不对外通信,所以网段内只有自己一台主机,故将子网掩码设为/32。
4. 抑制RS端ARP响应
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
我们可以看到,LVS的配置很简单,工作中通常需要用脚本来批量添加。

脚本配置LVS

#!/bin/bash
. /etc/init.d/functions
VIP=10.0.0.10
PORT=80
RIP=(
10.0.0.13
10.0.0.14
)
start(){
ifconfig eth0:0 $VIP/24 up
route add -host $VIP dev eth0
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t $VIP:$PORT -s rr -p 20
for ((i=0;i<${#RIP[*]};i++))
do
ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]} -g -w 1
done
}
stop(){
ifconfig eth0:0 down
route del -host $VIP dev eth0
ipvsadm -C
}
case "$1" in
start)
start
echo "ipvs is started"
;;
stop)
stop
echo "ipvs is stopped"
;;
restart)
stop
echo "ipvs is stopped"
start
echo "ipvs is started"
;;
*)
echo "Usage:$0 {start|stop|restart}"
esac

RS脚本绑定VIP并抑制ARP

#!/bin/bash
VIP=(
10.0.0.10
)
. /etc/init.d/functions
start(){
echo "start LVS of RIP"
for ((i=0;i<`echo ${#VIP[*]}`;i++))
do
interface="lo:`echo ${VIP[$i]}|awk -F "." '{print $4}'`"
/sbin/ifconfig $interface ${VIP[$i]}/32 up
route add -host ${VIP[$i]} dev $interface
done
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
}
stop(){
for ((i=0;i<`echo ${#VIP[*]}`;i++))
do
interface="lo:`echo ${VIP[$i]}|awk -F "." '{print $4}'`"
/sbin/ifconfig $interface ${VIP[$i]}/32 down
route del -host ${VIP[$i]} dev $interface
done
echo "stop LVS of RIP"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage:$0 {start|stop|restart}"
;;
esac

LVS负载均衡DR模式的更多相关文章

  1. lvs负载均衡(DR模式)

    lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...

  2. LVS负载均衡DR模式实现

    LVS负载均衡之DR模式配置 DR 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed - ...

  3. LVS负载均衡DR模式部署

    目录: 1. 拓扑图 2. 搭建环境 3. LVS服务器部署 4. 测试 1. 拓扑图     LVS-DR模式采的IP地址全部为外网IP.    本例中IP的设置全部采用临时设置IP的方式,重启后会 ...

  4. LVS负载均衡DR工作流程

    LVS负载均衡DR工作流程 (a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链. 此时报文的源IP为CIP,目标IP为VIP (b) PRE ...

  5. LVS负载均衡NAT模式实现

    LVS负载均衡之NAT模式配置 NAT 模式架构图: 操作步骤 实验环境准备:(centos7平台) 所有服务器上配置 # systemctl stop firewalld //关闭防火墙 # sed ...

  6. LVS负载均衡工作模式和调度算法

    原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...

  7. lvs负载均衡net模式

    环境配置,一台双网卡的ens33,ens37,ens37的网关是ens33的IP,指定一下nginx ens33,192.168.30.22,ens37,172.16.1.1nginx  192.16 ...

  8. LVS负载均衡NAT模式原理介绍以及配置实战

    LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...

  9. lvs 负载均衡 NAT模式

    1.原理 基于NAT机制实现.当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时将报文的目标端口也改成选定的realserve ...

随机推荐

  1. [CF1037H] Security

    题目链接 codeforces. 洛谷. Solution 按照套路,可以\(SAM\)上线段树合并求出\(endpos\)集合,然后随便贪心一下就好了. #include<bits/stdc+ ...

  2. 【HUD-5790】Prefix (主席树+tire)

    似乎是归队赛的最后一道题. 由于当时以为是公共字串所以没写555555,其实是求公共前缀. 做法是建立tire,把tire上的点编号看成是值,查询第l到第r个字符串的区间内不重复的值的个数.建立主席树 ...

  3. C++中typedef和#define简介

    本文基于<C++ Primer(第5版)>和网上博客,整理而成. 一.类型别名 类型别名是一个名字,它是某种类型的同义词,有两种方法可用于定义类型别名:typedef.using. 1.关 ...

  4. sub-G 无线芯片基础知识

    1.典型无线收发机编码 2.前导码的作用是使接收机的时钟和发射机同步(有待验证),如果接收机工作在WOR模式,前导码还有唤醒接收机的功能(接收一定数量的前导码),此时发射机必须发送较长的前导码才能把接 ...

  5. [EXT JS]"hasMany" association on ExtJS 4.1.1a

    ExtJS uses "hasMany" association to support nested json. However the sencha docs lacks wel ...

  6. 南阳ACM 题目8:一种排序 Java版

    一种排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...

  7. Java注释@interface的用法【转】 --好文章 很好理解

    java用  @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类. @Override,@Deprecated,@SuppressWarnings ...

  8. Codeforces Round #380 (Div. 2)/729B Spotlights 水题

    Theater stage is a rectangular field of size n × m. The director gave you the stage's plan which act ...

  9. 【CodeForces】835D Palindromic characteristics

    [题意]给你一个串,让你求出k阶回文子串有多少个.k从1到n.k阶子串的定义是:子串本身是回文串,而且它的左半部分也是回文串. [算法]区间DP [题解]涉及回文问题的区间DP都可以用类似的写法,就是 ...

  10. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 找不到jar包的问题,路径问题

    1.参考连接: https://blog.csdn.net/huangbiao86/article/details/6428608 折腾了一上午,找到了这错误的原因.哎……悲剧! 确认包已经被导入we ...