集群基础知识点:

集群类型:LB、HA、HP、DS

LB:load balance,负载均衡集群,director:负载均衡器或者调度器,上游服务(upstream server),后端服务器称为real server;

HA:high avalilability,高可用集群,评估高可用性能Availability = 平均无故障时间/(平均无故障时间+平均修复时间)

HP:high performance 超级计算机类型

LB集群的实现:硬件、软件(lvs: Linux Virtual Server、haproxy、nginx、ats (apache traffic server)、perlbal、

基于工作的协议层次划分:

传输层:(工作于内核)可以突破socket 可用端口的限制一共6W多个;lvs, haproxy (mode tcp)

应用层:(用户空间):haproxy (mode http), nginx, ats, perlbal

lvs的实现基于传输层:类型有四种nat、dr(direct routing)、tun、fullnat

lvs-nat:多目标的DNAT:通过将请求报文的目标地址和目标端口修改为挑选出某RS的RIP和PORT来实现;

(1) RIP和DIP应该使用私网地址,RS的网络应该指向DIP;

(2) 请求和响应报文都要经由director转发;极高负载的场景中,Director可能会成为系统瓶颈;

(3) 支持端口映射;

(4) VS必须为Linux,RS可以是任意的OS;

(5) RS的RIP与Director的DIP必须在同一IP网络;

lvs-dr:direct routing通过修改请求报文的MAC地址进行转发;IP首部不会发生变化(源IP为CIP,目标IP始终为VIP);

(1) 确保前端路由器将目标IP为VIP的请求报文一定会发送给Director;

解决方案:

静态绑定;在路由器上静态绑定VIP和director的Mac地址,禁止RS响应VIP的ARP请求;

(a) arptables;

(b) 修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应;

(2) RS的RIP可以使用私有地址,也可以使用公网地址;

(3) RS跟Director必须在同一物理网络中;

(4) 请求报文必须由Director调度,但响应报文必须不能经由Director;

(5) 不支持端口映射;

(6) 各RS可以使用大多数的OS;

lvs-tun:ip tunneling,ip隧道;转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原有的IP首部这外再次封装一个IP首部(源IP为DIP,目标IP为RIP);

(1) RIP,DIP,VIP全得是公网地址;

(2) RS的网关不能也不可能指向DIP;

(3) 请求报文经由Director调度,但响应报文将直接发给CIP;

(4) 不支持端口映射;

(5) RS的OS必须支持IP隧道功能;

lvs-fullnat:(非标准模型)通过同时修改请求报文的源IP地址(cip-->dip)和目标IP地址(vip --> rip)实现转发;

(1) VIP是公网地址;RIP和DIP是私网地址,且可以不在同一IP网络中,但需要通过路由互相通信;

(2) RS收到的请求报文的源IP为DIP,因此其响应报文将发送给DIP;

(3) 请求报文和响应报文都必须经由director;

(4) 支持端口映射;

(5) RS可使用任意OS;

集群服务管理命令:需要检查内核是否支持ipvs:grep -A 11 -i 'IPVS' /boot/config-3.10.0-327.el7.x86_64

安装服务程序:yum install -y ipvsadm

ipvsadm命令的用法: (大写用于服务,小写用于RS)

管理集群服务命令:

ipvsadm  -A|E  -t|u|f  service-address  [-s scheduler]  [-p [timeout]]

ipvsadm  -D  -t|u|f service-address

-A:添加

-E:修改

-D:删除

service-address:

-t, tcp, vip:port

-u, udp, vip:port

-f, fwm, MARK  Firewalls mask

-s scheduler:默认为wlc;加权最少连接

管理real server命令:

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

-a:添加一个RS

-e:修改一个RS  修改属性,修改IP地址要先删除再添加

-d:删除一个RS

-r server-address:RS地址 rip[:port]

-g:GATEWAY (默认) dr模型

-i: IPIP             tun隧道模型

-m: MASQUERADE       nat模型

查看命令:

ipvsadm -L|l [options]

-n:numeric,数字格式显示地址和端口,名称解析

-c:connection,显示ipvs连接;

--stats:统计数据;

--rate:速率

--exact:精确值

清空规则:ipvsadm  -C

规则保存和重载:

保存:ipvsadm -S  > /PATH/TO/SOME_RULE_FILE

ipvsadm-save  > /PATH/TO/SOME_RULE_FILE

若重启生效:保存至默认路径/etc/sysconfig/ipvsadm

ipvsadm-save > /etc/sysconfig/ipvsadm

开机生效:systemctl enable ipvsadm

重载:ipvsadm  -R < /PATH/FROM/SOME_RULE_FILE

ipvsadm-restore < /PATH/FROM/SOME_RULE_FILE

lvs-nat

实验环境:centos7x86虚拟机

nat模型

搭建环境配置

1、director核心转发功能设置,打开核心转发功能:两个网卡间,若永久有效编辑配置文件

vim /etc/sysctl.d/*conf 添加net.iPv4.ip_forward=1

确保RS网关指向director内网地址(内网基于host-only通信),测试是否能通信:

2、配置RSweb服务启动

3、director请求服务是否正常

4、director添加集群服务规则

5、lvs集群实现调度的效果

总结要点:

1.DIP与RIP要在同一网段,RIP网关指向dip

2.支持端口映射

3.是否用到共享存储  取决于业务要求:

lvs-dr

在各主机director,RS均需要配置VIP,因此,要解决地址冲突问题,目标是让各个RS上的VIP不可见,

仅用接收目标地址为VIP报文,同时又可以作为响应报文的源地址;

方案:1.在前端的网关接口上静态绑定

2.在RS上使用arptables

3.在各RS上修改内核参数,来限制arp响应和通告;

限制响应级别:arp_ignore

0:使用本地任意接口上配置地址进行响应;

1:仅在请求的目标IP配置在本地主机的接入报文的接口上时,才给予响应;

限制通告级别:arp_announce

0:默认,把本机所有接口向每一个接口通告;

1:尽量避免向本网络通告

2:总是避免;

模型:

调整网络director、rs在同一网络192.168.1,配置IP、vip

配置director添加vip方法:

1.IP addr add命令实现

2.ifconfig interface:alias ip netmask方法:

3.rs-vip配置并设置内核参数

4.给director添加集群服务规则

5.通过本地访问服务:

设计要点:

(1):各主机一个接口即可,但需要在同一网络

(2):rip的网关不能指向dip;rip和dip通常应该在同一 网段,但二者未必会与VIP在同一网段;

(3):各rs需先设置内核参数,在设置VIP和路由

fwm:在netfilter上实现给报文打记;mangle 需要在PREROUTNG链上打标,mangle可用于所有的链上

ipvsadm -A|E -t|u|f service-address [-s scheduler]  [-p [timeout]]

-t, -u: service-address

ip:port

-f: service-address

firewall mark $

基于fwm定义集群服务的步骤:

(1) 打标

# iptables -t mangle -A PREROUTING -d $vip -p $protocol --dport $serviceport -j MARK --set-mark #

mangle:

target: MARK

--set-mark value[/mask]16进制整数

可以实现多个端口标记:-m multiport

(2) 定义集群服务

# ipvsadm -A -f # [-s scheduler] [-p [timeout]] 默认300s

(3) 定义real server

lvs persistence:持久连接

功能:无论ipvs使用何种scheduler,其都能够实现在指定时间范围内始终将来自同一个ip地址的请求发往同一个RS;此功能是通过lvs持久连接模板实现,其与调度方法无关;

ipvs持久连接的模式:

每端口持久(PPC):per port,一个server可以有多个集群服务指向的端口不一80,8080,只对单个服务集群持久

每客户端持久(PCC):定义tcp或udp协议的0号端口为集群服务端口;对所有服务进行持久,无论访问任何访问,都是同一台服务主机

每FWM持久(PFWMC):只对同一防火墙标记进行持久如http, https绑定

eg:pfwmc   https ca

iptables -t mangle -A PREROUTING -d 192.168.1.111 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 10

ipvsadm -A -f 10 -s rr -p

ipvsadm -a -f 10 -r 192.168.1.201 -g

ipvsadm -a -f 10 -r 192.168.1.202 -g

pcc: 没有添加iptables打标记

ipvsadm -A -t 192.168.1.200:0 -s rr -p

ipvsadm -a -t 192.168.1.200:0 -r 192.168.1.201 -g -w 1

ipvsadm -a -t 192.168.1.200:0 -r 192.168.1.202 -g -w 2

转载于:https://blog.51cto.com/12580678/2132721

lvs集群基础及lvs-nat、dr、fwm实践相关推荐

  1. linux lvs 存储层,LVS集群配置之LVS介绍

    首先,先来介绍下LVS集群 LVS集群组成 前端:负载均衡层 –由一台或多台负载调度器构成 中间:服务器群组层 –由一组实际运行应用服务的服务器组成 底端:数据共享存储层 –提供共享存储空间的存储区域 ...

  2. LVS集群应用配置详解

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

  3. 集群架构之LVS介绍

    LVS项目介绍 章文嵩 (wensong@linux-vs.org) 2002 年 3 月 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目的产生背景和目标 ...

  4. Linux服务器集群系统(LVS)

    from:http://www.linuxvirtualserver.org/zh/lvs1.html#5 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目 ...

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

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

  6. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

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

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

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

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

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

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

最新文章

  1. rewind和fseek
  2. (转)jQuery.fn.extend与jQuery.extend到底区别在哪?
  3. JDK和SSH无密码配置
  4. 数据库——MongoDB增删改查
  5. 一文搞懂C语言文件操作
  6. linux 多个java_linux 同时出现两个java进程,新手~ 请详细说明,这个是怎么回事。 我就装了一个jdk...
  7. CSS3之Transform
  8. python垃圾回收机制为什么标记能解决循环引用问题_python 关于循环引用以及标记清除的问题...
  9. pythonjson实例_python对json的相关操作实例详解
  10. Java开发团队管理细则
  11. 关于python的论文the philosophy_Philosophy in Python
  12. TextView内部类Layout光标相关方法
  13. 西刺代理python_python爬西刺代理
  14. 希捷移动硬盘官方测试软件,希捷 SeaTools 硬盘检测软件安装使用教程
  15. java订餐管理系统
  16. matlab神经网络工具箱的使用
  17. 详解网关和路由器的区别
  18. 好看的html页脚,Photoshop教程:设计非常漂亮的网页页脚
  19. 世界的物质性及其发展规律
  20. (转)奴徒工匠师家圣

热门文章

  1. 第十、十一周项目四 - 教师兼干部类
  2. 树组件说明书java_java树组件
  3. (0073)iOS开发之核心动画高级技巧
  4. 大数据与数据挖掘考试题_大数据时代下的数据挖掘试题及答案
  5. 360浏览器打不开qq空间_浏览器变慢有救了!只要2秒,重回新安装一样爽快!
  6. NFS共享服务搭建笔记
  7. docker容器学习笔记
  8. 消息队列 RabbitMQ
  9. Xilinx SDK使用教程
  10. (转)ADC的滤波方法