标签(空格分隔): linux

笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流

前言

LVS一共四种工作模式。其中,DR模式是比较常用的模式之一,配置较麻烦,这里重点记录一下它的核心要点及优化。先看工作流程,上图:


实战配置一台LVS负载均衡服务器

一、主机列表

主机名 IP地址 角色
lb01 10.0.0.5/24 调度器
web01 10.0.0.7/24 RS服务器
web02 10.0.0.8/24 RS服务器

二、安装

# lb01操作
yum install ipvsadm -y
rpm -qa ipvsadm
lsmod |grep ip_vs
ln -s /usr/src/kernels/`uname -r` /usr/src/linux #注意Centos 6.X安装lvs,使用1.26版本。并且需要先安装yum install libnl* popt* -y
执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核

[root@lb01 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn #IP Virtual Server version 1.2.1 ---- ip_vs 内核模块版本

三、配置LVS服务器

lb01添加虚拟IP

ifconfig eth0:0 10.0.0.3/24 up #==>简便写法
[root@lb01 ~]# ipvsadm-save     #保存当前的lvs的规则,可以用ipvsadm-restore恢复
[root@lb01 ~]# ipvsadm -C #clear the whole table 清空lvs的所有规则
[root@lb01 ~]# ipvsadm --set 30 5 60 #设置tpc tcpfin udp超时时间
[root@lb01 ~]# ipvsadm -A -t 10.0.0.3:80 -s wrr -p 20
-A # add virual service with options
[root@lb01 ~]# 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.3:80 wrr persistent 20
-t   tcp服务
-s 指定轮询算法 rr wrr wlc
-p 指定会话保持时间

添加服务员RS服务器

[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.7:80 -g -w 1
[root@lb01 ~]# ipvsadm -a -t 10.0.0.3:80 -r 10.0.0.8:80 -g -w 1
[root@lb01 ~]# 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.3:80 wrr persistent 20
-> 10.0.0.7:80 Route 1 0 0
-> 10.0.0.8:80 Route 1 0 0
[root@lb01 ~]# ipvsadm-save
-A -t www.etiantian.org:http -s wrr -p 20
-a -t www.etiantian.org:http -r 10.0.0.7:http -g -w 1
-a -t www.etiantian.org:http -r 10.0.0.8:http -g -w 1

参数说明

-a   #添加rs服务器
-r #real server RS ip
-g #dr 模式
-w #l weight 权重
-t #10.0.0.3:80 使用tcp协议,负载均衡的ip地址是10.0.0.3:80

四、手工在RS端绑定

1.在每台real server端执行

绑定vip

ip addr add 10.0.0.3/32 dev lo label lo:0

2.手工在RS端抑制ARP响应

cat >>/etc/sysctl.conf<<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p

五、浏览器测试


四种工作模式

  • DR(Direct Routing)
  • NAT(Network Address Translation)
  • TUN(Tunneling)
  • FULLNAT(Full Network Address Translation)

建议日1000千万到2000千万PV或并发请求1万以下都可以考虑用haproxy/nginx或(LVS-NAT模式),DR模式效率很高,但配置麻烦。

核心要点:

  • 因后端服务器上同样配置了虚拟IP,如果在客户端进行ARP请求时,后端服务器以自身的MAC地址进行了回复,则起不到负载均衡的效果,此时客户端直接连到了某台后端服务器上。

  • 后端服务器的虚拟IP必须绑定到lo:0上,同时指定子网掩码是255.255.255.255,否则ARP禁用会出现异常。

  • 持久连接(Persistence)的问题。持久连接使同一个客户端在超时时间内(ipvsadm-p参数指定,keepalived中的persistence_timeout指令)会持续地连接到同一台后端服务器,这个是4层上的持久连接。来自客户端的每个新的连接会重置该超时时间。

  • Keepalived对后端服务器的健康检查,推荐使用应用层检查方式,另外可以配置Keepalived使用管理员自定义的脚本进行健康检查(MISC_CHECK指令)

  • 负载均衡器之间使用vrrp协议进行高可用设置时,禁用iptables或者打开对vrrp协议的支持。

  • LVS集群中的负载均衡器,推荐使用16GB及以上内存,同时采用多队列网卡提高网卡吞吐量减少处理延时。

  • LVS集群中的后端服务器,根据IO密集型和CPU密集型2类,可以分别使用RAID10、SSD及高频多核CPU来优化。

参考书籍【Linux运维最佳实践】

LVS-DR模式(原理图详解)的更多相关文章

  1. lvs dr 模型配置详解

    前期准备: 两台服务器 note01(lvs服务器) note02(real sever) 1 首先在note01配置子网卡: ifconfig eth0: :2意思是eth0的子接口,随便一个数字就 ...

  2. CentOS下LVS DR模式负载均衡配置详解

    一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...

  3. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  4. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  5. 一个公网地址部署LVS/DR模式

    http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式   网上看了很多关于LVS的文章,在选取2种模式LVS/D ...

  6. Java多线程编程中Future模式的详解

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  7. LVS DR模式搭建、keepalived+lvs

    1.LVS DR模式搭建 条件: 即三台机器,在同一内网. 编辑脚本文件:/usr/local/sbin/lvs_dr.sh #! /bin/bashecho 1 > /proc/sys/net ...

  8. LVS DR模式搭建 keepalived lvs

    LVS DR模式搭建• 三台机器 • 分发器,也叫调度器(简写为dir)172.16.161.130 • rs1 172.16.161.131 • rs2 172.16.161.132 • vip 1 ...

  9. Java多线程编程中Future模式的详解<转>

    Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Futu ...

  10. Atitit.设计模式-----触发器模式 trigger  详解

    Atitit.设计模式-----触发器模式 trigger  详解 1. 触发器概念1 1.1. 触发器位置 after|before|instead of1 2. 数据库里面的触发器1 2.1. o ...

随机推荐

  1. 日期插件-flatpickr

    github的仓库地址:https://github.com/chmln/flatpickr 手册地址:http://www.htmleaf.com/Demo/201608213895.html    ...

  2. 从 0 到 1,Java Web 网站架构搭建的技术演进

    初始搭建 最开始,就是各种框架一搭,然后扔到 Tomcat 容器中跑,这时候我们的文件.数据库.应用都在一个服务器上. 服务分离 随着系统的上线,用户量也会逐步上升,很快一台服务器已经满足不了系统的负 ...

  3. clear命令新认识

    学习Linux的时候,最先学习的几个命令中有一个就是clear,中文翻译为:清屏. 以前的理解都是按照字面进行解读的,清除屏幕上多余的内容. 但是实际上真的如此么? 原来屏幕是: 运行clear命令: ...

  4. 【转载】OAuth2 流程

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  5. oracle查询16个小题

    --1.查询出至少有一个雇员的所有部门 select Dept_id from emp group by Dept_id having count(*)>0; select dname from ...

  6. springboot之集成mybatis mongo shiro druid redis jsp

    闲来无事,研究一下spingboot  发现好多地方都不一样了,第一个就是官方默认不支持jsp  于是开始狂找资料  终于让我找到了 首先引入依赖如下: <!-- tomcat的支持.--> ...

  7. C陷阱:求数组长度

    // 这是一篇导入进来的旧博客,可能有时效性问题. 程序中,当我们建立了一个int型数组:int a[]={1,2,3,4,5,6};随后我们可能需要知道它的长度,此时可以用这种方法:length = ...

  8. HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09

    学长好久之前讲的,本来好久好久之前就要写题解的,一直都没写,懒死_(:з」∠)_ Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memor ...

  9. Kruskal求最小生成树

    #include<bits/stdc++.h> using namespace std; ; ; const int inf = 0x3f3f3f3f; ; typedef long lo ...

  10. 自定义省市选择器 微信小程序多列选择器

    由于微信小程序的选择器为省市区选择器共3列 如我仅需要省市2列的选择器 就需要我们另寻他法找来找去没有合适的 只能自己写了 1. 首先我们把所需要的省数据 市县数据放在一个 p_c.js 文件里面,使 ...