(1).集群技术的分类

  集群技术主要分为三大类:负载均衡(Load Balance)集群,简称LB集群;高可用(High Availability)集群,简称 HA 集群;高性能计算(High Perfermance Computing)集群,简称 HPC 集群。

(2).常见的LB集群实现手段

  而常见的LB集群实现手段为:硬件实现的F5负载均衡器;软件实现的LVS(4层,传输层)和Nginx(7层,应用层)。其中,LVS是基于iptables实现(所以使用与iptables类似),由国内开发的开源软件,其性能优于Nginx,但只能实现4层。

(3).LVS的模式和NAT工作原理

  LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Rounting(直接路由),分别对应NAT模式、TUN模式、DR模式。不同的转发方式决定了不同的集群网络结构。

 1)NAT模式介绍

  NAT:网络地址转换;DNAT:目标地址转换,改变的是目标地址;SNAT:源地址转换,改变的是源地址;LVS-NAT:使用SNAT和DNAT完成报文的转发。

  NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。

 2)TUN模式介绍

  director(分发器)分配请求到不同的real server,然后real server处理请求后直接回应给用户,这样director负载均衡器仅需处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。

 3)DR模式介绍(最常用的模式)

  与TUN模式类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。

 4)NAT工作原理

  扣了一张大佬的图,比较详细。原地址为:https://blog.csdn.net/gui951753/article/details/80316565#LVS_29

  客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

  简单来说可以分为四步:第一步、客户端请求访问,源地址:CIP,目标地址:VIP;第二步、请求报文到达负载均衡器,源地址:CIP,目标地址:RIP;第三步、Real Server接收到报文,处理并响应(回头了),源地址:RIP,目标地址:CIP;第四步、负载均衡器收到报文,根据之前的转发修改记录还原报文,源地址VIP,目标地址CIP。

  CIP:客户端的IP;VIP:虚拟IP,对外公网IP,负载均衡器(Director)的外网IP;DIP:负载均衡器(Director)的内网IP,与服务器交互的IP;RIP:真实服务器的IP。

(4).实验

  以下128网段是外网IP,5网段是内网IP

youxi1  192.168.5.101,192.168.128.213    负载均衡器(Director)

youxi2  192.168.5.102(网关为youxi1的内网IP) 真实服务器1

youxi3  192.168.5.103(网关为youxi1的内网IP) 真实服务器2

 1)首先在真实服务器youxi2和youxi3上两台真实服务器上安装httpd用于测试

[root@youxi2 ~]# yum -y install httpd
[root@youxi2 ~]# systemctl start httpd.service
[root@youxi2 ~]# echo youxi2 > /var/www/html/index.html [root@youxi3 ~]# yum -y install httpd
[root@youxi3 ~]# systemctl start httpd.service
[root@youxi3 ~]# echo youxi3 > /var/www/html/index.html

  如果是和我一样使用yum安装,那么安装完成后需要将网关改为192.168.5.101。

 2)开启负载均衡器youxi1上的路由转发功能

[root@youxi1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1  //添加或修改
[root@youxi1 ~]# sysctl -p  //重新加载sysctl
net.ipv4.ip_forward = 1

 3)在负载均衡器youxi1上安装ipvsadmin,并设置开机自启

[root@youxi1 ~]# yum -y install ipvsadm
[root@youxi1 ~]# systemctl enable ipvsadm.service

  之所以现在不启动,是因为启动ipvsadm需要/etc/sysconfig/ipvsadm配置文件。

 4)在负载均衡器youxi1上使用ipvsadm命令设置规则

  注意:ipvsadm保存的时候会使用短域名,所以需要注意/etc/hosts文件里的短域名和IP配对。

[root@youxi1 ~]# ipvsadm -A -t 192.168.128.213:80 -s rr  //-A添加虚拟服务器,-t服务器的IP地址和端口,-s指定调度算法
[root@youxi1 ~]# ipvsadm -a -t 192.168.128.213:80 -r 192.168.5.102 -m  //-a添加真实服务器,-r真实服务器的IP地址和端口,-m使用NAT模式
[root@youxi1 ~]# ipvsadm -a -t 192.168.128.213:80 -r 192.168.5.103 -m
[root@youxi1 ~]# ipvsadm -Ln  //-L列出IPVS表,-n显示IP和端口
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.128.213:80 rr
-> 192.168.5.102:80 Masq 1 0 0
-> 192.168.5.103:80 Masq 1 0 0
[root@youxi1 ~]# ipvsadm --save > /etc/sysconfig/ipvsadm  //保存,也可以使用ipvsadm -S > /etc/sysconfig/ipvsadm
[root@youxi1 ~]# cat /etc/sysconfig/ipvsadm
-A -t youxi1:http -s rr
-a -t youxi1:http -r youxi2.cn:http -m -w 1
-a -t youxi1:http -r 192.168.5.103:http -m -w 1
[root@youxi1 ~]# systemctl start ipvsadm.service

  -s选项能够调用的算法有rr(表示round-robin,轮询)、wrr、lc、wlc(加权最小连接)、lblc、lblcr、dh、sh、sed、nq,默认调度的是wlc。

  调用算法详细请看:https://blog.csdn.net/weixin_40470303/article/details/80541639

 5)注意,如果防火墙是打开的记得添加端口号

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@youxi1 ~]# firewall-cmd --reload
success [root@youxi2 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@youxi2 ~]# firewall-cmd --reload
success [root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@youxi3 ~]# firewall-cmd --reload
success

  6)测试

  刷新

  如果再刷新又会变为youxi2。

(5).ipvsadm的常用命令

  ipvsadm -Ln查看规则,显示内核虚拟服务器表

[root@youxi1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.128.213:80 rr
-> 192.168.5.102:80 Masq 1 0 3
-> 192.168.5.103:80 Masq 1 0 1

  ipvsadm -Lnc查看客户端连接分发器和真实服务器的情况

[root@youxi1 ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:50 SYN_RECV 192.168.128.137:49464 192.168.128.213:80 192.168.5.103:80
TCP 00:50 SYN_RECV 192.168.128.137:49467 192.168.128.213:80 192.168.5.103:80
TCP 00:26 SYN_RECV 192.168.128.137:49433 192.168.128.213:80 192.168.5.103:80
TCP 00:50 SYN_RECV 192.168.128.137:49465 192.168.128.213:80 192.168.5.102:80
TCP 00:26 SYN_RECV 192.168.128.137:49432 192.168.128.213:80 192.168.5.102:80

  还有ipvsadm -Ln --stats查看分发情况和ipvsadm -Ln --rate查看速率

[root@youxi1 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.128.213:80 23 8807 782 627655 38778
-> 192.168.5.102:80 11 5357 524 404849 26620
-> 192.168.5.103:80 12 3450 258 222806 12158
[root@youxi1 ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 192.168.128.213:80 0 0 0 0 0
-> 192.168.5.102:80 0 0 0 0 0
-> 192.168.5.103:80 0 0 0 0 0

  ipvsadm -Z清空当前虚拟服务器计数器(连接数等信息);ipvsadm -C清空所有规则。

(6).扩展:ipvsadm选项

-A --add-service    在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp 设置连接超时值
--start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived的VRRP 功能。
--stop-daemon 停止同步守护进程
-h --help 显示帮助信息
其他的选项:
-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-m --masquerading 指定LVS 的工作模式为NAT 模式
-w --weight weight 真实服务器的权值
--mcast-interface interface 指定组播的同步接口
-c --connection 显示LVS 目前的连接 如:ipvsadm -L -c
--timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 显示同步守护进程状态
--stats 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP 地址和端口的数字形式

  

LVS搭建负载均衡集群(一)——NAT模式的更多相关文章

  1. LB负载均衡集群及NAT模式配置

    一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...

  2. LVS搭建负载均衡集群(二)——DR模式

    (1).DR模式和TUN模式介绍 Direct Routing(直接路由):director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director ...

  3. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  4. LVS搭建负载均衡(一)NAT模型

    应用场景:LVS配置负载均衡方式之一:nat 测试环境: 测试步骤: 1. 在主机lvs上安装ipvsadm lvs~]# yum install ipvsadm -y lvs~]# ipvsadm ...

  5. keepalived + nginx 搭建负载均衡集群

    第一章 keepalived 1.1 keepalived 服务说明 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现 ...

  6. 搭建LVS+Keepalived负载均衡集群

    这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...

  7. Nginx+Tomcat搭建负载均衡集群

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器, 使用 Nginx 可以使得程序在高并发的情况下依旧可以保持良好的性能.使用 Nginx+Tomcat ...

  8. Nginx + Tomcat 在 Windows7 上搭建负载均衡集群

    一.安装Tomcat和Nginx 首先安装两个apache-tomcat-8.0.41,下载地址:http://tomcat.apache.org 并安装一个nginx-1.13.0,下载地址http ...

  9. Nginx搭建负载均衡集群

    (1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...

随机推荐

  1. 本地python环境检查,插件检查及插件安装

    电脑windows键+r  输入cmd 在python命令模式下 pip list  --可以查看已安装的插件情况 或者用 pip freeze 也可以 卸载插件:pip uninstall *** ...

  2. Mybatis之foreach批量插入

    1接口 public boolean insertMembersBatch(@Param("memberList") List<Members> members); @ ...

  3. WebStorm 简单搭建NodeJs服务

    开始使用 WebStorm 搭建( WebStorm 请自行安装...... ) 在 项目 根目录 新建个 app.js 开始 编写 app,js // 引入 HTTP 模块 const http = ...

  4. AcWing P173 矩阵距离 题解

    Analysis 就是一个裸的广搜,每次从是1的点开始找就好啦~~~ #include<iostream> #include<cstdio> #include<cstri ...

  5. divisors 数学

    divisors 数学 给定\(m\)个不同的正整数\(a_1, a_2,\cdots, a_m\),请对\(0\)到\(m\)每一个\(k\)计算,在区间\([1, n]\)里有多少正整数是\(a\ ...

  6. Cogs 1714. [POJ1741][男人八题]树上的点对(点分治)

    [POJ1741][男人八题]树上的点对 ★★★ 输入文件:poj1741_tree.in 输出文件:poj1741_tree.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] ...

  7. NetworkX系列教程(3)-手动创建graph

    小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...

  8. opencv 学习一安装环境vs2015+opencv3

    参考博客 http://www.cnblogs.com/skyfsm/p/6840202.html 针对 模块计算机类型“X64”与目标计算机类型“X86”这个问题,我使用cmake 对环境的工程进行 ...

  9. css添加了原始滚动条要隐藏滚动条的显示

    // 添加伪类 <style> ::-webkit-scrollbar {display:none} </style> <div style=" width:2 ...

  10. 2019暑期金华集训 Day3 图论

    自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...