Cluster原理

集群的总类:
1.负载均衡集群(LB:Load Banlancing):实现将一个访问量或者任务量特别大的应用,给他
平均分配到不同的服务器上面,以提供高容量、大并发。
2.高可用集群(HA:High Avalibility):将多台计算机组合起来,避免一个服务因某台机器
出现故障,而导致服务中断的,在于保障服务的可持续性。
3.高性能集群(HP:High Performance)又叫科学运算集群:解决复杂的计算,组合起来的集群,一般要很大量
的计算机组成。suse用的比较多
集群分别代表的软件
LB:负载均衡集群(LB:Load Banlancing)
lvs(Linux Virtual Serverlinux虚拟服务器):提供更高的吞吐率、提供冗余、更灵活的实用性
lvs:ipvsadm(工作在用户空间)/(ipvs工作在内核空间)和iptables/netfilter类似
lvs的四个ip地址
1)Virtual IP address(VIP):面向用户提供服务的地址
2)Real IP address(RIP):real server的ip地址
3)Director's IP address(DIP):director与real server连接的ip地址,DIP是配置在director上面
4)Client computer's IP address(CIP): 客户端地址
拓扑图:                            (ip4)web server1
[LVS]       /
user(ip1)----(ip2)director(ip3)
\
(ip5)web server2
ip1表示CIP,ip2表示VIP,ip3表示DIP,ip4和ip5表示RIP
lvs的三个种类(或者三个模型)
1)NAT:Network address translation网络地址转换(LVS-NAT)--->目标地址转换
如何实现:
CIP-->VIP             DIP-->RIP
Client------------->Director------------->Cluster node(server)
<-------------        <-------------
CIP<--VIP             DIP<--VIP
NAT模型一般承受5-6台server node
拓扑图:
(ip4)web server1
[LVS]       /
user(ip1)----(ip2)director(ip3)
\
(ip5)web server2
请求的过程:user[S(CIP)D(VIP)]------>director[S(CIP)D(RIP)]----->web 
涉及到目标地址转换(DNAT)
回复的过程:web----->director[S(RIP)D(CIP)]----->user[S(VIP)D(CIP)]
涉及到源地址转换(SNAT)  
web server 的网关是指向director的DIP。 
NAT模型的要求:集群节点必须在同一个网段当中,即DIP与RIP在同一个网段;RIP通常使用私有IP
地址,仅用于和DIP地址进行通信;director将处理在客户端与server之间的所有通信;server
必须把DIP设置为默认的网关;director可以实现端口映射,即VIP的端口和RIP的端口可以不一
样;server可以使用任意的操作系统;director所能支持的server的数量不多;
2)Direct routing:直接路由(LVS-DR)使用最多的模型,用于生产环境中
DR模式可以承受上百台server
拓扑图:
web server1
(RIP)-----> 虚拟一个VIP
/
user(CIP)------router--------switch----(VIP/DIP)director
\
(RIP)----> 虚拟一个VIP
web server2
请求的过程:user[S(CIP)D(VIP)]------>director[S(CIP)D(VIP)]----->web 
回复的过程web------->user[S(VIP)D(CIP)]
DR模型中web server和director都有两个IP,server是RIP和VIP,每个server的VIP都一样,但是RIP
不一样。
DR模型的要求:server必须和director在同一个物理网络上;RIP可以使用公网地址,使用公网地址的好处
如果director出现故障,可以用dns的A记录来指向server的RIP;director仅处理发来的请求,响应的请求
将不在通过director;通常server的网关一定不能指向director;director不能做端口映射,server可以
使用任意的操作系统;director能支持大量的server;
3)IP tunneling:IP隧道(LVS-TUN)
拓扑图:
(RIP)web server1
/
user(CIP)------router--------network cloud----(VIP/DIP)director
\
(RIP)web server2
请求的过程:user[S(CIP)D(VIP)]------>director[S(DIP)D(RIP)]----->web
把源[S(CIP)D(VIP)]进行了封装成DIP
回复的过程:web[S(VIP)D(CIP)]----->user
把从director接受到的包解分装,发现源是director的VIP,目的是
user的CIP
TUN模型的要求:server和director在不同的网络上;RIP必须是公网IP地址;director只
需要处理传来的请求,同时响应的数据包一定不能经过director;director不能做端口映射;
只有支持IP隧道的操作系统才能是server
director的调度server的方法:
1)静态调度方法:fixed Scheduling Methods指director在选举server的时候不会考虑这个server当前
的连接的活动状态。
代表算法
RR(Round-robin)轮叫算法
WRR(Weighted round-robin)加权轮叫算法--->适合server的硬件不同和性能不同
DH(Destination hashing)目标地址哈希算法---->将同一个ip地址的请求发给同一个server,应                           用的server为sqiud server 缓存服务器
SH(Source hashing)源地址哈希算法---->适合公司很多员工,然后自己上网的外接口有两个
2)动态调度方法:dynamic scheduling methods指director每选举server的时候会判断这个server当前连接
状态是不是很多,如果很多则排除在外,然后选择那些连接状态比较少的,如果连接状态都一样多,那就选择排在最上面的。
TCP连接  活动状态的标识是established并且有数据传输,非活动状态的标识是非established状态的连接,连接还没有断开,但是已经不在传输数据了。还有一种就是根本没有连接
代表算法
LC(Least-connection)最少连接数---->每当一个新的请求连接进来,director会查看每个                            server上当前处于活动状态的个数和处于非活动状态的个数,计算方法                          overhaed(当前的负载个数)=10(处于活动状态的个数)*256+10000(非活                          动状态),首先那个server的overhead个数少就选那个server,如果                        server的overhead相同,那就选择排列在server列表的最上方的一个server。
WLC(Weight Least-connection)是最优算法,也是默认的算法,计算方法overhead/weight(权重)
SED(Shortst Expected Delay)最少期望延迟---->是WLC的改进算法,在算overhaed值的时候不考                              虑非活动状态的值,计算方法overhaed=(n+1)*256/weight,n表示                              活动的个数,weight表示权重。
NQ(Never Queue)从不排队---->对SED的算法的改进,先不管overhaed是多少,只要有server的连                   接状态为0,则会给你一个连接个数。
LBLC(Locality-Based Least-Connection)基于本地的最少连接,是DH算法的动态调度。
LBLCR(Locality-Based Least-Connection with Replication Scheduing)带复制的基于本地的最                        少连接,时候director后面接cache服务器的,在接后面的server
LVS的实验:NAT模式
拓扑图:
(ip4)web server1
[LVS]       /                 \
user(ip1)----(ip2)director(ip3)                  ====nfs(来共享文件)  
\                 /
(ip5)web server2
ip地址规划
保证web server的数据一致---->1.rsync实现文件级别的同步,效率不高
2.drbd基于主机的磁盘镜像,高可用集群中用到  
3.share storage共享存储 a.DAS直接附加存储  b.NAS(nfs、                                    samba)文件服务  c.SAN存储区域网络,本身具有冗余
1.看内核是否支持ipvs
grep -i 'ip_vs' /boot/config-2.6.32-71.el6.i686 
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
CONFIG_IP_VS_FTP=m
2.拓扑规划ip
Client:
ip1(CIP)=192.168.1.1
Director:
ip2(VIP)=192.168.1.10 gw=192.168.1.1
ip3(DIP)=192.168.14.50
Web server1:
ip4(RIP)=192.168.14.51 gw=192.168.14.50
Web Server2:
ip5(RIP)=192.168.14.52 gw=192.168.14.50
3.Diretor的配置:
ifconfig eth0 192.168.1.10/24
ifconfig eth1 192.168.14.50
route add default gw 192.168.1.1
iptables -F
a)yum -y install ipvsadm
b)man ipvsadm
ipvsadm -D -t|u|f service-address  删除集群服务
ipvsadm -C    清空集群服务的
ipvsadm -R 
ipvsadm -S [-n]  显示统计数据的
ipvsadm -d -t|u|f service-address -r server-address  从集群服务里面删除real server的
ipvsadm -L|l [options]  显示状态表或者查看
ipvsadm -Z [-t|u|f service-address]  清空计数器的
ipvsadm --set tcp tcpfin udp  设置超时时间
ipvsadm --start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm --stop-daemon state
ipvsadm -h  帮助
1.定义一个集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-O] [-M netmask]   定义集群服务
解释:-A|E -A表示add,E表示修改  
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark   
service-address服务地址即director (VIP)
-s指明调度方法(默认是WLC)
eg:ipvsadm -A -t  192.168.1.112:80 -s rr
2.向此集群服务器添加RealServer  
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]   向集群服务添加real server的
解释:-a|e -A表示add,E表示修改  
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark   
service-address服务地址director
-r 指明real server的地址 server-address
[-g|i|m] g表示直接路由模型 i隧道模型  m表示nat模型   默认是-g DR模型
-w 表示权重 可以省略,省略表示1,选择这个之前你的算法可以支持权重
-x 连接的个数的上限
-y  连接的个数的下限
eg:ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.51 -m -w 1
ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.52 -m -w 2 
c)设置转发
sysctl -w net.ipv4.ip_forward=1
or
sed -i '/net.ipv4.ip_forward/s/0/1/'  /etc/sysctl.conf 
sysctl -p
4.Web Server1的配置:
ifconfig eth0 192.168.14.51/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i '$a ServerName 192.168.14.51:80' /etc/httpd/conf/httpd.conf
c)echo "this is web1 server" >> /var/www/html/index.html
d)service httpd restart
5.Web Server 的配置
ifconfig eth0 192.168.14.52/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i '$a ServerName 192.168.14.52:80' /etc/httpd/conf/httpd.conf
c)echo "this is web2 server" >> /var/www/html/index.html
d)service httpd restart
LVS:DR模型
拓扑图:
web server1
(RIP)-----> 虚拟一个VIP
/
user(CIP)------router--------switch----(VIP/DIP)director
\
(RIP)----> 虚拟一个VIP
web server2
1.规划ip
Client:
CIP=172.16.1.1
director:
VIP=172.16.1.100---->eth0:1(虚拟的ip)
DIP=172.16.1.200--->eth0
web server1:
VIP=172.16.1.100(指向director的VIP) ---> lo:1 (虚拟的ip)  gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.10---->eth0
web server2:
VIP=172.16.1.100---> lo:1 (虚拟的ip)   gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.20---->eth0
director的配置:
ifconfig eth0 172.16.1.200/24
ifconfig eth0:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev eth0:1
yum -y install ipvsadm
ipvsadm -A -t 172.16.1.100:80 -s wlc
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.10 -w 2 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.20 -w 2 -g
web server1的配置:
ifconfig eth0 172.16.1.10/24
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
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i '$a ServerName 172.16.1.10:80' /etc/httpd/conf/httpd.conf
echo "this is web1 server" >> /var/www/html/index.html
service httpd restart
web server2的配置:
ifconfig eth0 172.16.1.20/24
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
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i '$a ServerName 172.16.1.20:80' /etc/httpd/conf/httpd.conf
echo "this is web2 server" >> /var/www/html/index.html
service httpd restart
DR模型的脚本
Real(web) server script
vim /etc/init.d/real
##################
#!/bin/bash
#script to start lvs-dr web server
. /etc/rc.d/init.d/functions
read -p "please input a ip for set up real server VIP:" VIP
case "$1" in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
;;
stop)
/sbin/ifconfig lo:1 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
islothere=`/sbin/ifconfig lo:1 | grep $VIP`
isrothere=`netstat -rn | grep "lo:1" | grep $VIP`
if [ ! "islothere" -o ! "isrothere" ];then
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
echo " Usage: $0 (start|status|stop)"
exit 1
;;
esac
###########保存退出 +x
service real start|stop|status
director script
vim /etc/init.d/ipvs
######
#!/bin/bash
#script to start lvs-dr director server
. /etc/rc.d/init.d/functions
VIP=
RIP1=
RIP2=
PORT=80
case "$1" in
start)
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/ipvsadm -C
ipvsadm -A -t $VIP:$PORT -s wlc
ipvsadm -a -t $VIP:$PORT -r $RIP1 -w 2 -g
ipvsadm -a -t $VIP:$PORT -r $RIP2 -w 2 -g
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:1 down
/sbin/route del $VIP
/bin/rm -f  /var/lock/subsys/ipvsadm
echo "ipvs is stopped...."
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm is stopped..."
else
echo "ipvsadm is running..."
ipvsadm -L -n
fi
;;
*)
echo "$0: Usage: $0 (start|status|stop)"
exit 1
;;
esac
######保存退出 +x
service ipvs start|stop|status

lb集群lvs的3种模式相关推荐

  1. LB集群--LVS部署

    一.集群的种类: LB: Load Balancing      负载均衡       LVS.haproxy HA: High Availability   高可用         heartbea ...

  2. LB集群——LVS负载均衡介绍(DR模式、TUN模式、NAT模式)

    一.LVS负载均衡 1.LVS概念 LVS :Linux Virtual Server 的简称,即Linux虚拟服务器. 现在LVS已经被集成到 Linux内核模块中.该项目在Linux内核中实现了基 ...

  3. MongoDB分布式集群架构(3种模式)

    MongoDB 有三种集群部署模式,分别为主从复制(Master-Slaver).副本集(Replica Set)和分片(Sharding)模式. Master-Slaver 是一种主从副本的模式,目 ...

  4. Redis集群部署的三种模式

    一.Redis简介 Redis 是一款完全开源免费.遵守BSD协议的高性能(NOSQL)的key-value数据库.它使用ANSI C语言编写,支持网络.可基于内存亦可持久化的日志型.Key-Valu ...

  5. LVS负载均衡集群介绍(4种工作模式10种调度算法)

    文章目录 集群简介 集群的特点 集群的分类 负载均衡 负载均衡集群技术的实现 负载均衡分类 四层负载均衡(基于IP+端口的负载均衡) 七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 高可用性集 ...

  6. LB负载均衡集群--LVS

    LB集群: LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.keepalived ,商业的硬件负载设备F5.Netscale. ...

  7. CHAPTER 6 LB集群部署 - LVS

    LB集群部署 - LVS 1 LVS介绍 1.1 基本概念 1.2 LVS主要组成部分: 1.3 LVS负载均衡 方式: 1. LVS/NAT 2. IP隧道(IP TUNnel) 3. 直接路由(D ...

  8. LVS的四种模式的实现

    LVS 是四层负载均衡,也就是说建立在 OSI 模型的第四层--传输层之上,传输层上有我们熟悉的 TCP/UDP,LVS 支持 TCP/UDP 的负载均衡. LVS 的转发主要通过修改 IP 地址(N ...

  9. Linux服务器集群LVS

    本文主要介绍了Linux服务器集群系统–LVS(Linux Virtual Server),并简单描述下LVS集群的基本应用的体系结构以及LVS的三种IP负载均衡模型(VS/NAT.VS/DR和VS/ ...

最新文章

  1. 有一份华为荣誉证书等你来拿!网络人工智能硬盘异常预测黑客松比赛火热报名中...
  2. suse11 oracle11g 安装
  3. 五十一、微信小程序云开发中的云函数
  4. jenkins ssh发布配置
  5. innerHTML、innerText和outerHTML、outerText的区别
  6. 如何查看redhat社区的solution(或者订阅);redhat内容不全
  7. FLOPs和模型参数计算
  8. 【linux】如何查看和解压缩rpm文件内容
  9. ActiveMQ 下载与安装
  10. 大学生学计算机笔记本配置,上大学该买什么笔记本?推荐给准大学生的几款本...
  11. java字节码查看器_jclasslib 64位
  12. matlab实现螺旋谱分解,MATLAB实现EMD分解及希尔伯特谱分析
  13. VUE 动态三级路由界面不显示
  14. 使用ffmpeg合并多个视频文件
  15. 32位oracle10,Oracle10g32位升级到64位方法
  16. httpqyl.php,linux运维架构--PHP开发-零基础学习PHP视频教程
  17. CentOS全版本 阿里云下载详细教程
  18. Linux基础命令之tar解压缩详解
  19. 【钉钉-场景化能力包】CRM销售系统集成
  20. Ubuntu安装时卡在安装界面怎么办

热门文章

  1. BZOJ2062 : 素颜2(face2)
  2. Yii AR Model CRUD数据库操作
  3. 构建Flex数据服务程序
  4. linux的passwd命令的作用,Linux passwd 命令的使用
  5. 急招 Golang 熟手,来做 5G 事业。
  6. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
  7. 互联网协议 — FTP 文件传输协议
  8. 从Altium Designer导出PCB的3D模型至Solidworks
  9. 怎么修改CAD编辑器中默认的线型
  10. Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)