1、 云计算Linux课程系列Linux 集群化尚硅谷 - 汪洋目录一、集群概述31、集群是什么?32、集群的分类4负载均衡集群 - LBC4高可用集群 HAC5高性能运算集群 HPC6二、负载均衡集群61、LVS 相关原理62、LVS 工作方式6LVS DR 模式7LVS NAT 模式8LVS TUN 模式8三、LVS 实验构建9LVS NAT 模式集群构建9LVS DR 模式集群构建104、负载均衡集群相关调度算法12 静态调度算法12动态调度算法125、LVS 持久连接13 持久客户端连接13 持久端口连接13持久防火墙标记连接13三、高可用集群141、Keepalived 相关说明14 软
2、件相关介绍14 软件实现原理142、Keepalived + LVS 高可用实验构建15 实验构建设计图15 实验构建代码153、HeartBeat + Nginx 实验构建18 实验构建说明18 实验代码构建.18一、集群概述1、集群是什么?定义:一组协同工作的服务器,对外表现为一个整体集群的意义:更好的利用现有资源实现服务的高度可用集群扩展方式l 垂直扩展:更换服务器硬件l 水平扩展:添加更多的服务器节点常见的集群拓扑2、集群的分类负载均衡集群 - LBC使用意图:减轻单台服务器的压力,将用户请求分担给多台主机一起处理实现方法l 软件:LVS RAC Nginxl 硬件:F5 BIG-IP
3、负载均衡集群架构拓扑调度器分类l 触发条件不同n 四层:传输层 IP+PORTn 七层:应用层 URLl 实现原理不同n 四层:TCP连接只建立一次,客户端和正式服务器n 七层:TCP连接建立两次,客户端和负载调度器 负载调度器和真实服务器l 实现场景不同n 四层:TCP应用如:基于 C/S 机构的 ERP 系统n 七层:HTTP应用如:根据用户访问域名的方式,判断用户语言l 安全性不同n 四层:转发 SYN 攻击n 七层:可以拦截 SYN 攻击使用范围:业务并发较大的应用程序高可用集群 HAC使用意图:最大限度的保证用户的应用持久,不间断的提供服务最大限度99%9987.6小时99.9%99
4、98.8小时99.99%999953分钟99.999%999995分钟实现原理:心跳检测实现方法l 软件n heartbeat linux-HAn RHCSn ROSEn keepalivedl 硬件n F5特殊情况:脑分裂l 可能出现的问题:数据不完整、数据不可访问l 解决方法:预防:冗余、强制隔离:电源交换机使用范围:需要持续提供服务的应用程序高性能运算集群 HPC使用意图:提供单台计算机所不具备的计算能力LBC 与 HAC 的原理对比:负载均衡集群通过提高单位时间内执行的任务数来提升效率高性能运算集群通过缩短单个任务的执行时间来提高效率使用范围:天气计算、火箭弹道演算二、负载均衡集群1、
5、LVS 相关原理LVS 的组成l IPVS:运行在内核空间l IPVSADM:运行在用户空间,管理集群服务的命令行工具LVS 的原理:根据用户请求的套接字判断,分流至真实服务器的工作模块2、LVS 工作方式工作模式 LVS DR 模式工作逻辑图模式特点l 集群节点,必须在一个网络中l 真实服务器网关指向路由器l RIP既可以是私网地址,又可以是公网地址l 负载调度器只负责入站请求l 大大减轻负载调度器压力,支持更多的服务器节点 LVS NAT 模式工作逻辑图模式特点l 集群节点,必须在一个网络中l 真实服务器必须将网关指向负载调度器l RIP通常都是私有IP,仅用于各个集群节点通信l 负载调度
6、器必须位于客户端和真实服务器之间,充当网关l 支持端口映射l 负载调度器操作系统必须是 Linux ,真实服务器可以使用任意系统 LVS TUN 模式工作逻辑图模式特点l 集群节点不必位于同一个物理网络但必须都拥有公网IP(或都可以被路由)l 真实服务器不能将网管指向负载调度器l RIP必须是公网地址l 负载调度器只负责入站请求l 不支持端口映射功能l 发送方和接收方必须支持隧道功能三、 LVS 实验构建 LVS NAT 模式集群构建实验架构图构建代码负载调度器vi /etc/sysctl.conf# 开启路由转发功能net.ipv4.ip_forward=1sysctl -piptables
7、 -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT -to-source 20.20.20.11 # 添加防火墙记录,当源地址是 内网网段 并且出口网卡为 eth0 的时候进行 SNAT 转换,转换源地址为外网卡地址iptables -t nat -L# 查看记录是否保存成功ipvsadm -A -t 20.20.20.11:80 -s rr# 添加 ipvsadm TCP 集群ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.12:80 -m# 添加 ipvsadm 节点ipvsadm -Ln ser
8、vice ipvsadm save # 保存 ipvs 集群设置到文件进行持久化chkconfig ipvsadm on真实服务器route add default gw IP地址# 指定网关至负载调度器 service httpd start# 开启 Apache 服务器chkconfig httpd on LVS DR 模式集群构建实验架构图构建代码负载调度器service NetworkManager stop# 关闭网卡守护进程cd /etc/sysconfig/network-scripts/cp ifcfg-eth0 ifcfg-eth0:0# 拷贝 eth0 网卡子接口充当集群入
9、口接口vim ifcfg-eth0:0DEVICE=eth0:0IPADDR=虚拟IPNETMASK=255.255.255.0ifup eth0:0vim /etc/sysctl.conf# 关闭网卡重定向功能net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.eth0.send_redirects = 0sysctl -pmodprobe ip_vs# 重载 ipvs 模块rpm -ivh ipvsadm-1.26l.# 安装 ipvsadm 命令行工具ipvsa
10、dm -v # 查看当前 ipvs 集群内容ipvsadm -A -t 虚拟IP:80 -s rr# 添加 ipvs TCP 集群ipvsadm -a -t 虚拟IP:80 -r 网站1:80 -g# 添加 ipvsadm 集群子节点ipvsadm -a -t 虚拟IP:80 -r 网站2:80 -gipvsadm -Lnservice ipvsadm save# 保存 ipvs 集群内容至文件,进行持久化存储chkconfig ipvsadm on# 设置为开机自启真实服务器service NetworkManager stop# 关闭网卡守护进程cd /etc/sysconfig/netw
11、ork-scripts/cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0# 拷贝回环网卡子接口DEVICE=lo:0IPADDR=虚拟IPNETMASK=255.255.255.255vim /etc/sysctl.conf# 关闭对应 ARP 响应及公告功能net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.default.arp_ignore = 1net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.a
12、rp_ignore = 1net.ipv4.conf.lo.arp_announce = 2sysctl -pifup lo: 0route add -host 虚拟IP dev lo:0# 添加路由记录,当访问 VIP 交给 lo:0 网卡接受service httpd start4、负载均衡集群相关调度算法 静态调度算法特点:只根据算法本身去调度,不考虑服务器本身算法说明l RR 轮询:将每次用户的请求分配给后端的服务器,从第一台服务器开始到第N台结束,然后循环l WRR 加权轮询:按照权重的比例实现在多台主机之间进行调度l SH(source hash)源地址散列:将同一个IP的用户请求
13、,发送给同一个服务器l DH(destination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(提高缓存的命中率) 动态调度算法特点:除了考虑算法本身,还要考虑服务器状态算法说明l LC(lest-connection)最少连接:将新的连接请求,分配给连接数最少的服务器 活动连接 256 + 非活动连接l WLC加权最少连接:特殊的最少连接算法,权重越大承担的请求数越多 (活动连接 256 + 非活动连接 ) / 权重l SED最短期望延迟:特殊的WLC算法(活动连接 + 1) * 256 / 权重l NQ永不排队:特殊的 SED 算法,无需等待,如果有真实服务
14、器的连接数等于0那就直接分配不需要运算l LBLC特殊的DH算法:即能提高缓存命中率,又要考虑服务器性能l LBLCR LBLC+缓存:尽可能提高负载均衡和缓存命中率的折中方案5、LVS 持久连接 持久客户端连接定义:每客户端持久;将来自于同一个客户端的所有请求统统定向至此前选定的RS;也就是只要IP相同,分配的服务器始终相同演示代码ipvsadm-A-t172.16.0.8:0-swlc-p120# 添加一个 tcp 负载集群,集群地址为 172.16.0.8 ,算法为 wlc,持久化时间为 120s 持久端口连接定义:每端口持久;将来自于同一个客户端对同一个服务(端口)的请求,始终定向至此
15、前选定的RS演示代码ipvsadm-A-t172.16.0.8:80-srr-p120 # 添加一个 tcp 负载集群,集群地址为 172.16.0.8:80 ,算法为 wlc,持久化时间为 120s 持久防火墙标记连接定义:将来自于同一客户端对指定服务(端口)的请求,始终定向至此选定的RS;不过它可以将两个毫不相干的端口定义为一个集群服务演示代码iptables-tmangle-APREROUTING-d172.16.0.8-ptcp-dport80-jMARK-set-mark10 # 添加一个防火墙规则,当目标地址为 172.16.0.8 并且 目标端口为 80 时给数据包打一个标记,设
16、置 mark 值为 10iptables-tmangle-APREROUTING-d172.16.0.8-ptcp-dport443-jMARK-set-mark10 # 添加一个防火墙规则,当目标地址为 172.16.0.8 并且 目标端口为 443 时给数据包打一个标记,设置 mark 值为 10serviceiptablessave # 保存防火墙规则持久化生效ipvsadm-A-f10-swlc-p120 # 添加一个负载调度器,当 mark 值为 10 时进行负载均衡使用 wlc 算法,持久化生效时间为 120s三、高可用集群1、Keepalived 相关说明 软件相关介绍案例环境专
17、为LVS和HA设计的一款健康检查工具支持故障自动切换(Failover)支持节点健康状态检查(Health Checking)官方网站:http:/www.keepalived.org/ 软件实现原理VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)一主 + 多备,共用同一个IP地址,但优先级不同2、Keepalived + LVS 高可用实验构建 实验构建设计图 实验构建代码构建前提先构建 LVS-DR 模式的负载均衡集群,可参照上文进行构建负载调度器-1yum -y install kernel-devel openssl-devel pop
18、t-devel gcc* # 安装相关 keepalived 依赖tar -zxf keepalived. # 源码安装 Keepalived 软件cd keep./configure -prefix=/ -with-kernel-dir=/usr /src/kernels/2.6.32./makemake installchkconfig -add keepalived # 设置 Keepalived 开机自启chkconfig keepalived onvi /etc/keepalived/keepalived.conf # 修改 Keepalived 软件配置global_defs ro
19、uter_id R1 #命名主机名 vrrp_instance VI-1 state MASTER # 设置服务类型主/从(MASTER/SLAVE)interface eth0 # 指定那块网卡用来监听virtual_router_id 66 # 设置组号, 如果是一组就是相同的ID号, 一个主里面只能有一个主服务器和多个从服务器priority 100 # 服务器优先级, 主服务器优先级高advert_int 1 # 心跳时间, 检测对方存活authenticetion # 存活验证密码auth_type PASSauth_pass 1111 virtual_ipaddress 192.1
20、68.1.100 #设置集群地址 virtual_server 192.168.1.100 80 # 设置集群地址 以及端口号delay_loop 6 # 健康检查间隔lb_algorr # 使用轮询调度算法lb_kind DR # DR模式的群集protocol TCP # 使用的协议real_server 192.168.1.2 80 # 管理的网站节点以及使用端口weight 1 # 权重, 优先级 在原文件基础上删除修改TCP_CHECK # 状态检查方式connect_port 80 # 检查的目标端口connect_timeout 3 # 连接超时(秒)nb_get_retry 3
21、 # 重试次数delay_before_retry 4 # 重试间隔(秒) real_server 192.168.1.3 80 # 管理的第二个网站节点以及使用端口weight 1 # 权重, 优先级 在原文件基础上删除修改TCP_CHECK # 状态检查方式connect_port 80 # 检查的目标端口connect_timeout 3 # 连接超时(秒)nb_get_retry 3 # 重试次数delay_before_retry 4 # 重试间隔(秒)* 多余删除scp keepalived.conf xx.xx.xx.xx: /etc/keepalived/负载调度器-2yum
22、-y install kernel-devel openssl-devel popt-devel gcc* # 安装相关 keepalived 依赖tar -zxf keepalived. # 源码安装 Keepalived 软件cd keep./configure -prefix=/ -with-kernel-dir=/usr /src/kernels/2.6.32./makemake installchkconfig -add keepalived # 设置 Keepalived 开机自启chkconfig keepalived on修改从 负载调度器-1 拷贝的 Keepalived 配
23、置文件 vi /etc/keepalived/keepalived.conf修改1:state MASTER 修改至 state SLAVE修改2:priority 100 修改至 priority 47 一般建议与主服务器差值为 50service NetworkManager stop # 启动虚拟借口,必须关闭此服务cd /etc/sysconfig/network-scripts/cp ifcfg-eth0 ifcfg-eth0:0vim ifcfg-eth0:0 # 配置虚拟借口DEVICE=eth0:0IPADDR=虚拟IPNETMASK=255.255.255.0ifup eth
24、0:0 # 启动虚拟网卡vi /etc/sysconfig/network-script/ifup-eth # 如果 报错修改文件 257注释此区域vim /etc/sysctl.conf 修改内核参数。 防止相同网络地址广播冲突, 如果有多快网卡需要设置多行net.ipv4.conf.eth0.send_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.eth0.send_redirects = 0sysctl -p 刷新内核参数modp
25、robe ip_vs 查看内核是否加载, 无法应则以加载cat /proc/net/ip_vs 参看版本, 确认知否正确加载cd /mnt/cdrom/Packages/ 进入光盘挂载目录rpm -ivh ipvsadm-1.26l. 安装ipvsadm管理工具ipvsadm -v ipvsadm -A -t 虚拟IP:80 -s rripvsadm -Ln 查看设置的ipvsadm如果没有子项, 那么手动添加ipvsadm -a -t 虚拟IP:80 -r 网站1:80 -gipvsadm -a -t 虚拟IP:80 -r 网站2:80 -g3、HeartBeat + Nginx 实验构建
26、实验构建说明软件包:软件包版本为 Centos6 系列,如果使用其它版本可以配置 eperl 源下载安装环境准备配置时间同步服务配置主机名解析实验拓扑结构 实验代码构建.1)基础准备,准备节点都需要安装tar -zxvf hearbeat.tar.gzcd hearbeatyum -y install *cd /usr/share/doc/heartbeat-3.0.4/cp ha.cf authkeys haresources /etc/ha.d/ 配置文件需拷贝到默认目录下2)认证服务,节点之间的认证配置,修改 /etc/ha.d/authkeys ,在主上修改dd if=/dev/ran
27、dom bs=512 count=1 | openssl md5 #生成密钥随机数vim authkeysauth 11 md5 a4d20b0dd3d5e35e0f87ce4266d1dd64chmod 600 authkeys3)heartbeat 主配置文件,修改 /etc/ha.d/ ha.cf , 在主上修改bcast eth0node 一主一备节点,需注意能后被两台主机之间解析node 4) 配置 haresources 文件,在主上修改 IPaddr:10.10.10.100/24/eth0:05) 将主三个配置文件拷贝到从上 cd /etc/ha.d/ scp ha.cf authkeys haresources root:/etc/ha.d/6) 启动服务进行验证 主:service httpd start 主:service heartbeat start 备:service httpd start 备:service heartbeat start更多云计算-Java 大数据 前端 python人工智能资料下载,可百度访问:尚硅谷官网