linux 集群
一、集群概述
1. 集群是什么
定义:一组协同工作的服务器,对外表现为一个整体
集群的意义:更好的利用现有资源实现服务的高度可用
集群的扩展方式:
垂直扩展:更换服务器硬件
水平扩展:添加更多的服务器节点
常见的集群拓扑
2. 集群的分类
2.1 负载均衡集群 - LBC(Load balancing clusters)
使用目的:减轻单台服务器的压力,将用户请求分担给多台主机一起处理
实现方法:
软件:LVA RAC Nginx
硬件:F5 BIG-IP
负载均衡集群架构拓扑
调度器分类
触发条件不同
四层:传输层 IP + PORT
七层:应用层 URL
实现原理不同
四层:TCP 连接只建立一次,客户端和正式服务器
七层:TCP 连接建立两次,客户端和负载调度器,负载调度器和真实服务器
实现场景不同
四层:TCP 应用 如:基于 C/S 架构的ERP系统
七层:THHP 应用 如:根据用户访问域名的方式,判断用户语言
安全性不同
四层:转发 SYN 攻击
七层:可以拦截 SYN 攻击
使用范围:业务并发较大的应用程序
2.2 高可用集群 - HAC(High Available clusters)
使用目的:最大限度的保证用户的应用持久,不间断的提供服务
最大限度
99% 99 87.6小时 99.9% 999 8.8小时 99.99% 9999 53分钟 99.999% 99999 5分钟
实现原理:心跳检测
实现方法
软件
heartbeat linux-HA
RHCS
ROSE
keepalived
硬件
F5
特殊情况:脑分裂
可能出现的问题:数据不完整、数据不可访问
解决方法:预防:冗余、强制隔离:电源交换机
使用范围:需要持续提供服务的应用程序
2.3 高性能运算集群 - HPC(High Performance Computing)
使用目的:提供单台计算机所不具备的计算能力
LBC 与 HPC 原理对比:
负载均衡集群通过提高单位时间内执行的任务数来提高效率
高性能运算集群通过缩短单个任务的执行时间来提高效率
使用范围:天气计算、火箭弹道演算
二、负载均衡集群
1. LVS 相关原理
LVS 的组成
IPVS:运行在内核空间
IPVSADM:运行在用户空间,管理集群服务的命令行工具
LVS 的原理:根据用户请求的套接字判断,分流至真实服务器的工作模块
2. LVS 工作方式
工作模式
2.1 LVS - DR 模式
工作逻辑图
模式特点
集群节点,必须在一个网络中
真实服务器网关指向路由器
RIP 既可以是私网地址,又可以是公网地址
负载调度器只负责入站请求
大大减轻负载调度器压力,支持更多的服务器节点
2.2 LVS - NAT 模式
工作逻辑图
模式特点
集群节点,必须在一个网络中
真实服务器必须将网关指向负载调度器
RIP 通常都是私有 IP,仅用于各个集群节点通信
负载调度器必须位于客户端和真实服务器之间,充当网关
支持端口映射
负载调度器操作系统必须是 Linux,真实服务器可以使用任意系统
2.3 LVS - TUN 模式
模式特点
集群节点不必位于同一个物理网络但必须都拥有公网IP(或都可以被路由)
真实服务器不能将网关指向负载调度器
RIP 必须是公网地址
负载调度器只负责入站请求
不支持端口映射功能
发送方和接收方必须支持隧道功能
原文地址:https://www.cnblogs.com/sswind/p/12171588.html
- WCF技术剖析之十七:消息(Message)详解(上篇)
- 微信年底重磅更新,这次小程序才是重头戏!
- 《EnterLib PIAB深入剖析》系列博文汇总
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
- 大牛教你使用7种卷积神经网络进行物体检测!
- Enterprise Library深入解析与灵活应用(3):倘若将Unity、PIAB、Exception Handling引入MVP模式.. .. ..
- 别对我说谎!你的小九九我都知道
- Spring集成RabbitMQ-使用RabbitMQ更方便
- Nodejs学习笔记(三)--- 模块
- 使用JClouds在Java中获取和发布云服务器
- Silverlight单元测试框架
- Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步
- 让你感觉不真实的13个伟大科学成就和发现
- 分析Silverlight跨域调用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CVE-2020-0796漏洞复现(RCE)
- Jenkins持续集成平台安装
- mysql架构备份之M-S-S级联复制
- Docker构建lnmp环境部署typecho
- MANJARO KDE安装配置(已换Arch Linux,此贴可能废弃)
- [数据库推荐]qPCR引物设计与评价
- markdown数学公式
- C++核心准则T.2:使用模板表现可以适用于多种参数类型的算法
- C++核心准则T.3:使用模板表现容器和范围
- Markdown的时序图、流程图、和甘特图+Hexo的相关配置
- 记一次Fcitx5的安装
- 解决KDE下KDE Wallet重装系统后每次登陆需要输入密码
- KDE下完美的Unity桌面体验,扔掉active window control
- C++核心准则T.5:结合使用泛型和面向对象技术应该增强它们的效果而不是成本
- C++核心准则T.10:为所有的模板参数定义概念