集群环境分析及部署(基础)

集群概念:html

由两个或两个以上的服务实体协调、配合完成一系列工做的模式,对外表现为一个总体。node

特色mysql

分配用户请求nginx

故障转移web

共享存储算法


结构sql

agent   负载调度器后端

业务层   服务器池缓存

存储   共享存储安全


1.垂直扩展

为一样的计算资源池加入更多资源,好比增长更多内存、磁盘或是虚拟cpu,来应对增长的应用负载

2.水平扩展

须要向计算平台加入更多的机器或设备,来处理增加的需求

向上拓展:对硬件的升级、更换、提高

缺点:

性能:提高是有限度的

wKiom1lJAh-DbySLAAAjHJ1KI9o866.png


wKioL1lJAiHi1YolAAHcxB4XtUM360.png


弊端:

DNS没有对后端设备健康状态进行检测的能力,也就是说当WEB2设备出现故障以后,DNS仍是根据本身缓存的记录把任务分配到WEB2上。

dns的缺陷:没法实现健康状态检查

缓存dns没法实现分配用户请求

DNS的解析缓存形成任务分配不均,致使单个服务器压力过大。

算法:

     RR(Round-Robin):轮询

     WRR(weightd-Round-Robin):权重(加权轮询)

wKiom1lJAiKDLJ0HAAFZ6OX7scg948.png


使用agent代理机制,能够对后端设备的健康状态进行检测,有效提升的工做效率。

最基础的一个集群拓扑:

wKioL1lJAiOCbpmrAAHAWDBeocc237.png


负载均衡集群(LBC Load Balance Cluster

做用:减轻单台服务器压力

Load Balancing负载均衡,不一样节点之间相互独立,不共享任何资源;经过必定算法将客户端的访问请求平分到群集的各个节点上,充分利用每一个节点的资源。负载均衡扩展了网络设备和服务器带宽,增长吞吐量,增强网络数据处理能力。

实现

软件:LVS RAC

硬件:F5

wKiom1lJAiTQ8GwZAAAquQx6BoU641.png


1.分担系统的负载

2.监控节点的运行状况

在一个网络下,能够搭建多个负载均衡集群来实现压力的分散:

wKiom1lJAijQWKS2AAOEWQrh_Wg278.png

wKioL1lJAiniJoWJAAEihoKnp9E910.png


区别:

硬件后期的维护,比较好,可是价格偏高

软件灵活性比较大,价格相对便宜

高可用集群(HA):保证服务器的不间断运行

wKioL1lJAiyAGoVnAAOEwkOYEFw634.png

为应用程序提供持久访问

出现故障自由切换


实现访问web1和web2不管哪个,获得的结果都是同样的,不会有误差

wKiom1lJAi7RYFUKAAIFKZSGwdM090.png


为了使用web1和web2内容一致:

使用的机制是:心跳检测

方法实现:

RS232串口线(心跳线)

每隔几秒钟发个数据包,看对方是否(存活)有回应,无回应,则判断目标出现问题

现有网卡

wKiom1lJAi-iyJT6AAGlsFG_uYw937.png

经过两个服务器之间的eth1端口进行检测(每隔一段时间发送数据包进行确认)

eth0是给用户访问使用的

服务器可用性要求标准:

99% 2个9 1年 87.6小时(停机)
99.9% 3个9 1年 8.8小时(停机)
99.99% 4个9 1年 53分钟(停机)
99.999% 5个9 1年 3-5分钟(停机)

若是心跳线出现故障:

两台主机都认为对方出现故障(死亡),都会抢着接替对方工做,处理响应客户的请求,抢夺共享的资源、数据。(这种现象称之为“脑裂”)

带来的后果:数据不完整、甚至是灾难级

wKioL1lJAjGwerU2AAGs-Lrn-8I573.png


在脑裂的状况下:

两台主机都认为对方已死亡,都会对共享存储服务器,读取、写入数据,这样同时对一个文件,进行写入,会形成数据丢失,完整性遭到破坏。

对服务形成影响:致使访问不可达

wKioL1lJAjOyWueHAAGvBYpmoTk447.png

正常状况下web1在工做,web2不工做,在脑裂状况下,双方主机都认为对方已死亡,这时,web2服务器会抢夺web1的IP地址,给本身配置,在同一个网络下,因为web1和web2使用相同的IP,会形成网络故障,用户不能正常访问服务器。

解决方案:

预防为主:增长冗余心跳线

强制隔离:

wKiom1lJAjXwBh5QAAHlVZSQsLU407.png

两台服务器都链接电源交换机,当web2检测出web1出问题时,想要接替工做,又为了不脑裂状况出现,这时,web2会发送一条指令给电源交换机,这时电源交换机会将链接web1的电源线断掉,这样就不会出现web1和web2冲突的现象

Stonish:爆头

Shoot in other node in the head

用工具实现:ipfail

为两个服务器设置参考IP(通常是网关IP)

当两台服务器认为对方出问题时,这时会ping 设置的参考IP,若是参考IP都ping不通,这时服务器会断定问题不是出在对方服务器,是本身内部出了问题,这时,会检测本身内部,并做出相应的动做

高可用集群软件:

wKiom1lJAjaQ7JmNAAEyS_21i7M232.png


高性能运算集群:

wKioL1lJAjmws6zuAAHNAYUaYAA219.png


A包含10个子任务:a1 a2 a3 .......a10

每一个子任务完成须要1小时

负载均衡集群:(单位时间内处理的子任务)

1台计算机完成任务须要10小时(处理10个子任务)

10台计算机完成任务须要10小时(总共处理100个子任务)

高性能运算集群:(缩短单个任务的执行时间,来提高效率)

1台计算机完成任务须要10小时(处理10个子任务)

10台计算机完成任务须要1小时(总共处理10个子任务)

高性能集群概念:

高性能计算集群就是将一个大的运算任务拆分,每个节点计算其中一部分运算内容,最后再将每台计算机的处理结果汇总,获得咱们想要的答案,这种运算方式就是高性能运算集群。

wKioL1lJAjvSw0QEAAIL2dB8kjk385.png

3PB的数据须要处理,这时AGENT会告诉客户端,如何分发到每一个存储服务器为100G,以后,客户端会找AGENT2,询问AGENT2如何处理这些分发的数据,这时AGNET2会分别去到每一个节点上运行

程序以运算处理数据,当数据被处理完以后,会将数据汇总,反馈给客户端,这个过程就是高性能运算集群。


wKiom1lJAj7zfHKsAAJQY-QFfpU999.png


负载调度器:

wKioL1lJAkCxYPASAAGSKvscfDU190.png

硬件:F5 citrix array

软件:

四层负载调度器  四层交换机

效率高

LVS    Linux virtual server

七层负载调度器  七层交换机

mysql proxy

nginx

haproxy

高级特性

wKiom1lJAkKC44POAAMM5_a7ShY388.png


四层交换机:IP+端口

七层交换机:URL或主机名或页面内容包含的高级特性

区别:

1.触发条件不一样

四层:工做在传输层,转发数据依靠的是三层的ip和四层的port

七层:工做在应用层。转发数据依靠URL或主机名

2.实现原理不一样

四层负载调度器:TCP链接创建一次,客户端和RS主机之间

四层交换机工做原理:(转发做用)

wKioL1lJAkOyCR0jAAC16QeozfA722.png

七层负载调度器:TCP链接创建两次,客户端和负载调度器;负载调度器和RS主机

七层交换机工做原理:(起到代理服务器的角色)

wKiom1lJAkThoyJ0AADpJhyWhg0164.png


七层交换机能够根据客户发起的访问请求,作出判断,给客户相应的内容反馈!

3.应用场景不一样

四层负载调度器:TCP应用为主 OA ERP

七层负载调度器:以HTTP协议为主

4.安全性不一样

四层负载调度器:转发***

七层负载调度器:拦截***

IPVS:钩子函数,内核机制,在请求没有到达目的地址以前,捕获并取得优先控制权的函数。

IPVSADM:工做在用户空间,负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端真实 的服务器

LVS概述:

首先简单介绍一下LVS (Linux Virtual Server)究竟是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具备很好的吞吐率,将请求均衡地转移到不一样的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,并且无需修改客户端和服务器端的程序。

wKiom1lJAkaiidQtAADO05Pze90137.png

wKioL1lJAkfBAO-UAAI3Duebe_0598.png

wKiom1lJAkiinwTYAAB52GcaY6c815.png

举例:

wKioL1lJAkvBpR2GAAKjI1lOB3c746.png


解释:当外网客户端,将请求提交到负载调读器的外网卡上,这时网卡会对请求进行处理,将请求提交到内核所提供的的INPUT函数模块上 ,这个函数正常状况下,会将客户申请访问本地80端口的应用请求转发给本地应用所安装HTTP服务器上面,可是咱们真正的目的是,想让负载调度器将用户的请求转发到后端的web网站节点上面去,这时咱们就须要IPVS,IPVS在这里扮演的是钩子函数角色(正常状况下,所接受的请求会被转发到本地的相应服务上面,可是IPVS所扮演的钩子函数角色会在请求被转发到本地服务上面以前,将数据请求包文强制拿过来,本身先查看,若是发现用户是访问集群节点的话,会经过eth1端口,由于IPVS会保存必定的策略,本身可以判断,而后会相应的把请求转交给web1,第二次给web2,依次轮询。。。)

这时,咱们会有疑问,IPVS内核模块为何会知道把请求分别转发给web1、web2,这是由于是有IPVSadm工具来实现的

CIP:client IP 客户端IP

DIP:director IP 负载调度器内网口IP

VIP:virtual IP 虚拟IP 集群IP

RIP:realserver IP 服务器节点IP 真实服务器IP

NAT:地址转换

wKioL1lJAkzR9YhPAAEnoef-J80003.png

注意:

1.最多支持10台左右RS

2.集群节点(director和RS)必须在同一个网络中

3.RS的网关必须位于客户端和RS之间

4.RS能够用任意的操做系统

5.RS网关必须设置为director

DR:路由模式

wKiom1lJAk6Ql0mKAAE33s62hDc272.png

wKioL1lJAlCjO22hAAKdKZW0G24366.png

优势:

大大减轻了负载调度器的压力

能够支持更多的服务器节点RS

注意:

1.RS必须和director在一个网络

2.RS能够设置公网IP或私网IP(当负载调度器坏了的话,能够直接让客户访问经过公网IP访问集群)

3.负载调度器只负责入站请求

4.集群节点的网关不能使用director

TUN:隧道模式

wKiom1lJAlLT8I-cAAECbZmeRKI180.png

wKiom1lJAlOh9WEWAAGKmqWL40Q044.png


优势:

不受地理位置限制

注意:

1.全部节点都要有公网IP,RS而且必须配置在RIP上

2.RS必定不能使用负载调度器做为默认网关

4.必须支持隧道功能

负载调度器算法:

静态算法:只考虑算法自己,不考虑服务器状态

rr (轮循):从1开始到n结束(N=RS个数)、无状态的的调度算法,不考虑服务器性能

wrr (加权轮循):按权重比例进行调度,权重越大,负责的请求越多(权重=优先级)

sh (源地址hash):源地址散列或源地址hash,实现会话绑定,保留以前创建的会话信息。未来自于同一个ip地址的请求发送给一个真实服务器。

dh (目标地址hash):将同一个目标地址的请求,发送给同一个服务器节点。提升缓存命中率

动态算法:既要考虑算法自己,也要考虑服务器状态(原理:经过hash表记录链接状态----active/inactive)

LC (最少链接):将新的链接请求分配给当前链接数最少的服务器。。。公式:活动链接*256+非活动链接

WLC(加权最少链接):最少链接的特殊模式。。。公式:(活动链接*256+非活动链接)/权重

SED(最短时间望延迟):加权最少链接的特殊模式。。。。公式:(活动链接 +1)*256/权重

NQ     (永不排队):sed的特殊模式,当某台真实服务器链接为0时,直接分配,不计算

LBLC(基于局部性的最少链接):dh的特殊模式,既要提升缓存命中率,又要考虑链接数量。先根据请求的目标 IP 地址寻找最近的该目标 IP 地址全部使用的服务器,若是这台服务器依然可用,而且有能力处理该请求,调度器会尽可能选择相同的服务器,不然会继续选择其它可行的服务器

LBLCR(带复制的基于局部性的最少链接):LBLCR=LBLC+缓存共享机制

实验:基于NAT模式负载集群搭建

拓扑展现:

wKioL1lJAlSA6E_jAAF6W3y0tnw895.png




背景:须要五台虚拟机,图中IP为展现使用,如下操做,不同

wKiom1lJAlWhX3j_AAC7FjYWaa4225.png

wKioL1lJAsby0u3TAAC-kea4_rg127.png

wKiom1lJAsexUJ8JAADA1lBVxVs390.png

wKioL1lJAsjjTo3yAAD0DcV2HsM038.png

wKiom1lJAsmTfSAzAACnbL1KQNk068.png


在共享存储服务器上面配置NFS

wKioL1lJAsmjhN9aAAASm96I0kM694.png

wKioL1lJAsmBMNYeAAARjzosaro018.png

在RS1和RS2上面分别安装Apache服务

RS1的网页页面经过挂载NFS服务器上面的首页

mount -t nfs 192.168.115.179:/share /var/www/html/

挂载以后、启动Apache服务以后,失败

chcon -R -h -t httpd_sys_content_t /var/www/html/

以后就行了

RS1的网关指向负载调度器的内网口IP

route add default gw 192.168.115.175

RS2的网页由本身建立,两个服务首页不一样,方便区分

RS2的网关指向负载调度器的内网口IP

wKiom1lJAsnQfmCxAAAVL89Gwi4094.png

负载调度器:(双网卡)

开启路由转发功能

wKiom1lJAsrzeLamAAArrAcP8t8902.png

并执行sysctl -p刷新

安装IPVSadm软件

wKioL1lJAsqgzkcXAAAoh8WFiuM263.png

检查ipvsadm是否安装成功

wKioL1lJAsuBYgjlAAByh6eoztE024.png

配置

wKiom1lJAszBPWd-AAB2Ngz97II407.png


外网客户端验证:(每刷新一次,页面会一次出现)

wKioL1lJAs3wWDRvAABAq48skIo604.png

wKioL1lJAuji8JbmAAA0qQymngM002.png

wKioL1lJAunQ_dN0AACOKuAAOKw915.png

wKiom1lJAurS4lkeAADiRQllPzY172.png



基于DR模式的负载集群:

原理拓扑展现:

wKiom1lJAuyy7c1SAAH40IL8hjg327.png

实验拓扑展现:

wKioL1lJAu_w71xRAAPaq5wAneA509.png


图上IP地址仅供参考:

ARP工做原理:

wKiom1lJAvGBo0w3AAKYVXX778I643.png

arp_ignore:接收到其余主机的ARP请求后的响应级别

后面参数设置的若是是0:

只要本机配置有响应的IP地址就响应

wKioL1lJAvLA6l4KAACZ-H0eDak039.png

后面参数设置的若是是1:

仅响应请求的目的地址配置在请求到达的网络接口上

wKioL1lJAvTy6x1WAAF1pXO3EwA428.png


arp_announce:设置ARP通告的级别

0:通告网络本机全部接口的任何地址信息

2:仅向目标网络通告网络与其相匹配的网络信息

配置:

wKiom1lJAvWAPNXSAAC1KylpUVo187.png

wKioL1lJAvXgeFqiAAClQcFZWT4409.png

wKiom1lJAvaSZNMJAACq5cob4yg163.png

wKiom1lJAvfDrDPNAACN9xP28Vs628.png

wKioL1lJAvjxTWEaAACMlHu72eI498.png

负载调度器:

配置ifcfg0:1映射子端口,地址为集群IP(210)

优化环境配置:(/etc/sysctl.conf)

wKiom1lJAvjiVi3rAAASB9-LBPU698.png

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

查询IPVS是否安装:

grep -i "ip_vs" /boot/config-2.6.32-431.el6.x86_64wKioL1lJAvnTO6VkAAB0Lyobuuk679.png

安装ipvsadm

rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm

设置增长负载调度器,默认使用轮询

ipvsadm -A -t 192.168.115.210:80 -s rr

设置使用DR模式

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.178:80 -g

ipvsadm -a -t 192.168.115.210:80 -r 192.168.115.173:80 -g

ipvsadm -L -n

service ipvsadm save

共享存储服务器:

wKiom1lJAvmiWY-HAAAResO0Sk4863.png

wKioL1lJAvnziLZkAAANadkeAF8480.png


RS1配置:

配置本地回环接口IP

wKioL1lJAvqQLHilAAAVyZVDt0Q881.png

优化环境变量(/etc/sysctl.conf)

wKiom1lJAzmB9tlZAAAgdP6OdQ0891.png

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安装Apache服务,并将NFS服务器上面的主页内容挂在过来

mount -t nfs 192.168.115.179:/share /var/www/html/

wKioL1lJAzmBew_FAAAMVs47lik826.png


设置一条路由,凡是请求跟集群地址(115.210)相关的信息的时候,都会交给本地回环接口处理

route add -host 192.168.115.210 dev lo:0


RS2配置:

配置本地回环映射端口:

wKiom1lJAzrjCKm6AAAVhL22-IQ450.png

优化环境:

wKioL1lJAzrxJeiYAAAgKgzzENY848.png

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

安装Apache服务,手动建立一个主页,区份内容,以便达到实验效果

wKiom1lJAzuSy0d7AAAQQaD-duA388.png


设置一条路由,凡是请求跟集群地址(115.210)相关的信息的时候,都会交给本地回环接口处理

route add -host 192.168.115.210 dev lo:0

客户端验证:直接访问集群的IP,进行访问,刷新会依次轮询显示页面

wKioL1lJAzvC_vxdAABHmQGnb0w174.png

wKiom1lJAzyiFgKOAABBebMj9oo383.png

ipvsadm命令参数选项详细含义以下所示

-A (--add-service) 在内核的虚拟服务器列表中添加一条新的虚拟IP记录。也就是增长一台新的虚拟服务器。虚拟IP也就是虚拟服务器的IP地址。

-E (--edit-service) 编辑内核虚拟服务器列表中的一条虚拟服务器记录

-D (--delete-service) 删除内核虚拟服务器列表中的一条虚拟服务器记录

-C (--clear) 清除内核虚拟服务器列表中的全部规则

-R (--restore) 恢复虚拟服务器规则

-S (--save) 保存虚拟服务器规则,输出为-R 选项可读的格式

-a (--add-server) 在内核虚拟服务器列表的一条记录里添加一条新的Real Server记录。也就是在一个虚拟服务器中增长一台新的Real Server

-e (--edit-server) 编辑一条虚拟服务器记录中的某条Real Server记录

-d (--delete-server) 删除一条虚拟服务器记录中的某条Real Server记录

-L|-l –list 显示内核中虚拟服务器列表

-Z (--zero) 虚拟服务器列表计数器清零(清空当前的链接数量等)

--set tcp tcpfin udp 设置链接超时值

-t 说明虚拟服务器提供的是tcp服务,此选项后面跟以下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 说明虚拟服务器提供的是udp服务,此选项后面跟以下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f  fwmark 说明是通过iptables标记过的服务类型

-s  此选项后面跟LVS使用的调度算法

有这样几个选项: rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默认的调度算法是: wlc

-p  [timeout] 在某个Real Server上持续的服务时间。也就是说来自同一个用户的屡次请求,将被同一个Real Server处理。此参数通常用于有动态请求的操做中,timeout 的默认值为360 分钟。例如:-p 600,表示持续服务时间为600分钟。

-r 指定Real Server的IP地址,此选项后面跟以下格式:

 [real-server-ip:port]

-g (--gatewaying) 指定LVS 的工做模式为直接路由模式(此模式是LVS 默认工做模式)

-i (-ipip) 指定LVS 的工做模式为隧道模式

-m (--masquerading) 指定LVS 的工做模式为NAT模式

-w (--weight) weight 指定Real Server的权值

-c (--connection) 显示LVS目前的链接信息 如:ipvsadm -L -c

-L --timeout 显示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout

-L --daemon 显示同步守护进程状态,例如:ipvsadm -L –daemon

-L  --stats 显示统计信息,例如:ipvsadm -L –stats

-L  --rate 显示速率信息,例如:ipvsadm -L  --rate

-L  --sort 对虚拟服务器和真实服务器排序输出,例如:ipvsadm -L --sort

注: 保存添加的虚拟ip记录和ipvsadm的规则可使用service ipvsadm save,还能够用-S或--save。清除全部记录和规则除了使用-C,还以使用--clear。

相关文章
相关标签/搜索