分享
1、Linux集群化.doc
下载文档

ID:3391404

大小:1.51MB

页数:19页

格式:DOC

时间:2024-04-15

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
Linux 集群
云计算Linux课程系列 ———————————————————————————————— Linux 集群化 尚硅谷 - 汪洋 目录 一、集群概述 3 1、集群是什么? 3 2、集群的分类 4 ①负载均衡集群 - LBC 4 ②高可用集群 – HAC 5 ③高性能运算集群 – HPC 6 二、负载均衡集群 6 1、LVS 相关原理 6 2、LVS 工作方式 6 ① LVS – DR 模式 7 ② LVS – NAT 模式 8 ③ LVS – TUN 模式 8 三、 LVS 实验构建 9 ① LVS – NAT 模式集群构建 9 ② LVS – DR 模式集群构建 10 4、负载均衡集群相关调度算法 12 ① 静态调度算法 12 ③ 动态调度算法 12 5、LVS 持久连接 13 ① 持久客户端连接 13 ② 持久端口连接 13 ④ 持久防火墙标记连接 13 三、高可用集群 14 1、Keepalived 相关说明 14 ① 软件相关介绍 14 ② 软件实现原理 14 2、Keepalived + LVS 高可用实验构建 15 ① 实验构建设计图 15 ② 实验构建代码 15 3、HeartBeat + Nginx 实验构建 18 ① 实验构建说明 18 ② 实验代码构建. 18 一、集群概述 1、集群是什么? 定义:一组协同工作的服务器,对外表现为一个整体 集群的意义:更好的利用现有资源实现服务的高度可用 集群扩展方式 l 垂直扩展:更换服务器硬件 l 水平扩展:添加更多的服务器节点 常见的集群拓扑 2、集群的分类 ①负载均衡集群 - LBC 使用意图:减轻单台服务器的压力,将用户请求分担给多台主机一起处理 实现方法 l 软件:LVS RAC Nginx l 硬件:F5 BIG-IP 负载均衡集群架构拓扑 调度器分类 l 触发条件不同 n 四层:传输层 IP+PORT n 七层:应用层 URL l 实现原理不同 n 四层:TCP连接只建立一次,客户端和正式服务器 n 七层:TCP连接建立两次,客户端和负载调度器 负载调度器和真实服务器 l 实现场景不同 n 四层:TCP应用 如:基于 C/S 机构的 ERP 系统 n 七层:HTTP应用 如:根据用户访问域名的方式,判断用户语言 l 安全性不同 n 四层:转发 SYN 攻击 n 七层:可以拦截 SYN 攻击 使用范围:业务并发较大的应用程序 ②高可用集群 – HAC 使用意图:最大限度的保证用户的应用持久,不间断的提供服务 最大限度 99% 99 87.6小时 99.9% 999 8.8小时 99.99% 9999 53分钟 99.999% 99999 5分钟 实现原理:心跳检测 实现方法 l 软件 n heartbeat linux-HA n RHCS n ROSE n keepalived l 硬件 n F5 特殊情况:脑分裂 l 可能出现的问题:数据不完整、数据不可访问 l 解决方法:预防:冗余、强制隔离:电源交换机 使用范围:需要持续提供服务的应用程序 ③高性能运算集群 – HPC 使用意图:提供单台计算机所不具备的计算能力 LBC 与 HAC 的原理对比: 负载均衡集群通过提高单位时间内执行的任务数来提升效率 高性能运算集群通过缩短单个任务的执行时间来提高效率 使用范围:天气计算、火箭弹道演算 二、负载均衡集群 1、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 负载调度器必须位于客户端和真实服务器之间,充当网关 l 支持端口映射 l 负载调度器操作系统必须是 Linux ,真实服务器可以使用任意系统 ③ LVS – TUN 模式 工作逻辑图 模式特点 l 集群节点不必位于同一个物理网络但必须都拥有公网IP(或都可以被路由) l 真实服务器不能将网管指向负载调度器 l RIP必须是公网地址 l 负载调度器只负责入站请求 l 不支持端口映射功能 l 发送方和接收方必须支持隧道功能 三、 LVS 实验构建 ① LVS – NAT 模式集群构建 实验架构图 构建代码 负载调度器 vi /etc/sysctl.conf # 开启路由转发功能 net.ipv4.ip_forward=1 sysctl -p iptables -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 service 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 网卡子接口充当集群入口接口 vim ifcfg-eth0:0 DEVICE=eth0:0 IPADDR=虚拟IP NETMASK=255.255.255.0 ifup eth0:0 vim /etc/sysctl.conf # 关闭网卡重定向功能 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 sysctl -p modprobe ip_vs # 重载 ipvs 模块 rpm -ivh ipvsadm-1.26l......... # 安装 ipvsadm 命令行工具 ipvsadm -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 -g ipvsadm -Ln service ipvsadm save # 保存 ipvs 集群内容至文件,进行持久化存储 chkconfig ipvsadm on # 设置为开机自启 真实服务器 service NetworkManager stop # 关闭网卡守护进程 cd /etc/sysconfig/network-scripts/ cp ifcfg-lo ifcfg-lo:0 vim ifcfg-lo:0 # 拷贝回环网卡子接口 DEVICE=lo:0 IPADDR=虚拟IP NETMASK=255.255.255.255 vim /etc/sysctl.conf # 关闭对应 ARP 响应及公告功能 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 ifup lo: 0 route add -host 虚拟IP dev lo:0 # 添加路由记录,当访问 VIP 交给 lo:0 网卡接受 service httpd start 4、负载均衡集群相关调度算法 ① 静态调度算法 特点:只根据算法本身去调度,不考虑服务器本身 算法说明 l RR 轮询:将每次用户的请求分配给后端的服务器,从第一台服务器开始到第N台结束,然后循环 l WRR 加权轮询:按照权重的比例实现在多台主机之间进行调度 l SH(source hash)源地址散列:将同一个IP的用户请求,发送给同一个服务器 l DH(destination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(提高缓存的命中率) ③ 动态调度算法 特点:除了考虑算法本身,还要考虑服务器状态 算法说明 l LC(lest-connection)最少连接:将新的连接请求,分配给连接数最少的服务器 活动连接 × 256 + 非活动连接 l WLC加权最少连接:特殊的最少连接算法,权重越大承担的请求数越多 (活动连接 × 256 + 非活动连接 ) / 权重 l SED最短期望延迟:特殊的WLC算法 (活动连接 + 1) * 256 / 权重 l NQ永不排队:特殊的 SED 算法,无需等待,如果有真实服务器的连接数等于0那就直接分配不需要运算 l LBLC特殊的DH算法:即能提高缓存命中率,又要考虑服务器性能 l LBLCR LBLC+缓存:尽可能提高负载均衡和缓存命中率的折中方案 5、LVS 持久连接 ① 持久客户端连接 定义:每客户端持久;将来自于同一个客户端的所有请求统统定向至此前选定的RS;也就是只要IP相同,分配的服务器始终相同 演示代码 ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120 # 添加一个 tcp 负载集群,集群地址为 172.16.0.8 ,算法为 wlc,持久化时间为 120s ② 持久端口连接 定义:每端口持久;将来自于同一个客户端对同一个服务(端口)的请求,始终定向至此前选定的RS 演示代码 ipvsadm -A -t 172.16.0.8:80 -s rr -p 120  # 添加一个 tcp 负载集群,集群地址为 172.16.0.8:80 ,算法为 wlc,持久化时间为 120s ④ 持久防火墙标记连接 定义:将来自于同一客户端对指定服务(端口)的请求,始终定向至此选定的RS;不过它可以将两个毫不相干的端口定义为一个集群服务 演示代码 iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10  # 添加一个防火墙规则,当目标地址为 172.16.0.8 并且 目标端口为 80 时给数据包打一个标记,设置 mark 值为 10 iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 443 -j MARK --set-mark 10   # 添加一个防火墙规则,当目标地址为 172.16.0.8 并且 目标端口为 443 时给数据包打一个标记,设置 mark 值为 10 service iptables save   # 保存防火墙规则持久化生效 ipvsadm -A -f 10 -s wlc -p 120   # 添加一个负载调度器,当 mark 值为 10 时进行负载均衡使用 wlc 算法,持久化生效时间为 120s 三、高可用集群 1、Keepalived 相关说明 ① 软件相关介绍 案例环境专为LVS和HA设计的一款健康检查工具 支持故障自动切换(Failover) 支持节点健康状态检查(Health Checking) 官方网站:http://www.keepalived.org/ ② 软件实现原理 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议) 一主 + 多备,共用同一个IP地址,但优先级不同 2、Keepalived + LVS 高可用实验构建 ① 实验构建设计图 ② 实验构建代码 构建前提 先构建 LVS-DR 模式的负载均衡集群,可参照上文进行构建 负载调度器-1 yum -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........./ make make install chkconfig --add keepalived # 设置 Keepalived 开机自启 chkconfig keepalived on vi /etc/keepalived/keepalived.conf # 修改 Keepalived 软件配置 global_defs { router_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 PASS auth_pass 1111 } virtual_ipaddress { 192.168.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 # 重试次数 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/ 负载调度器-2 yum -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........./ make make install chkconfig --add keepalived # 设置 Keepalived 开机自启 chkconfig keepalived on 修改从 负载调度器-1 拷贝的 Keepalived 配置文件 vi /etc/keepalived/keepalived.conf 修改1:state MASTER 修改至 state SLAVE 修改2:priority 100 修改至 priority 47 一般建议与主服务器差值为 50 service NetworkManager stop # 启动虚拟借口,必须关闭此服务 cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 ifcfg-eth0:0 vim ifcfg-eth0:0 # 配置虚拟借口 DEVICE=eth0:0IPADDR=虚拟IP NETMASK=255.255.255.0 ifup eth0:0 # 启动虚拟网卡 vi /etc/sysconfig/network-script/ifup-eth # 如果 报错修改文件 257 注释此区域 vim /etc/sysctl.conf 修改内核参数。 防止相同网络地址广播冲突, 如果有多快网卡需要设置多行net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 sysctl -p 刷新内核参数 modprobe 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 rr ipvsadm -Ln 查看设置的ipvsadm如果没有子项, 那么手动添加 ipvsadm -a -t 虚拟IP:80 -r 网站1:80 -g ipvsadm -a -t 虚拟IP:80 -r 网站2:80 -g 3、HeartBeat + Nginx 实验构建 ① 实验构建说明 软件包:软件包版本为 Centos6 系列,如果使用其它版本可以配置 eperl 源下载安装 环境准备 配置时间同步服务 配置主机名解析 实验拓扑结构 ② 实验代码构建. 1)基础准备,准备节点都需要安装 tar -zxvf hearbeat.tar.gz cd hearbeat yum -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/random bs=512 count=1 | openssl md5 #生成密钥随机数 vim authkeys auth 1 1 md5 a4d20b0dd3d5e35e0f87ce4266d1dd64 chmod 600 authkeys 3)heartbeat 主配置文件,修改 /etc/ha.d/ ha.cf , 在主上修改 bcast eth0 node 一主一备节点,需注意能后被两台主机之间解析 node 4) 配置 haresources 文件,在主上修改 IPaddr::10.10.10.100/24/eth0:0 5) 将主三个配置文件拷贝到从上 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人工智能资料下载,可百度访问:尚硅谷官网

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开