什么是集群?

一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器。简而言之,一堆机器协同工作就是集群。集群的基本特点:高性能、高并发、高吞吐、经济实惠成本低、可伸缩性、可扩展性、高可用性、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. Elasticsearch cat Apis

    1._cat列入所有有效命令 GET /_cat 返回:有个猫...所以不难想象为啥是cat api =^.^= /_cat/allocation /_cat/shards /_cat/shards/ ...

  2. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

  3. 运行Jar包程序Shell

    启动: #!/bin/bash set -e JAVA_HOME=/usr/local/java# 检查是否有项目名 appName=$ if [ "$appName" == &q ...

  4. js空对象判断 isPlainObject

    //有缺陷,JSON.stringify(obj)中,如果obj本来是空的,又继承了一个非空的对象那么结果也会是“{}” 1. JSON.stringify(obj) == '{}' 2. Objec ...

  5. Linux之根文件系统的构建20160611

    说一下LINUX根文件系统的构建: 制作文件系统 1. 交叉编译busybox 安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_ne ...

  6. LoadRunner中的IP欺骗

    应用程序服务器和网络设备使用IP地址来识别客户端.应用程序服务器通常会对来自同一计算机的客户端信息进行高速缓存. 网络路由器尝试对原信息和目标信息进行高速缓存以优化吞吐量.如果多个用户具有相同的IP地 ...

  7. snmp代码篇

    相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) SNMP是英文“Simple Network Manage ...

  8. TP-LINK TL-WN725N V2 / rtl8188eu Linux驱动安装

    https://github.com/lwfinger/rtl8188eu 驱动下载地址 安装: make all make install 参考一下把 http://devillived.net/f ...

  9. gulp压缩css和js

    压缩 css 代码可降低 css 文件大小,提高页面打开速度. 规律转换为 gulp 代码 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下.一. ...

  10. [LeetCode] 7. Reverse Integer ☆

    Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321   Have y ...