首页 > 其他分享 >为什么需要集群

为什么需要集群

时间:2022-12-09 16:33:23浏览次数:36  
标签:为什么 需要 可用 Redis nginx 保证 集群

为什么需要集群


摘要

设备是廉价的极端容易损坏的
最近世代的数据中心与大型机小型机时代最大的区别在于
大型机小型机时代, 都是scale up.假设基础设施是非常稳定的(也的确如此).
新时代的数据中心,都是scale out的.都是假定设备是非常不稳定,容易损坏的.

最近时代, 不管是内存,CPU还有硬盘,以及整机服务器都变得非常廉价. 
也更加容易损坏. 所以数据中心必须考虑硬件损坏的情况. 
保证业务不断, 必须保证有很多完全独立的,并且是互相冗余的设备存在.
一方面性能冗余, 一方面功能冗余. 

集群的种类

中间价集群
数据库集群
应用集群
基础设施集群

中间件

这里所说的中间件泛指很多提供服务的非自研产品. 
主要有:
类型 举例
缓存,锁session redis
应用负载均衡,发现代理 nginx
消息队列 rabbitmq
服务注册发现 nacos

Redis

Redis的高可用主要有如下几种
1. 哨兵
2. 集群
3. 机遇keepavlie+haproxy实现vip迁移的主从集群

redis主要是存储缓存以及锁信息
缓存需要持久化, 锁和session 根据业务需求进行判断是否需要持久化. 

Redis的集群要考虑.安全,性能,以及容量. 
要定期进行容灾测试演练. 保证应用可以无感迁移.
建议及群的节点必须分布于不同的机柜上面, 避免机柜Tor或者是电源宕机时无法使用.

Redis的集群需要测试如下方面
1. 性能 
2.稳定性 
3.容量支撑情况 
4.功能准确性(批量锁是否支持) 
5.异常宕机对应用的影响

nginx

Nginx最常用的有两个角色:
1. web服务器
2. 反向代理服务器.

都建议需要进行集群化高可用的处理
可以使用多个nginx节点然后牵连使用lvs等工具进行负载
保证单个nginx节点出问题时可以支撑业务应用. 

nginx与redis相同点是 都必须保证高可用.
不同点在于:
Redis是有状态的. 数据是由具体含义的
Nginx是可以无状态. 可以自由扩容. 不用担心状态的问题. 

Nginx不管是集群还是单点都需要考虑
1. 安全 2.性能.
Redis 一般是不需要开放的熬外网的. 安全漏洞可能还可控
Nginx 一般是需要暴露到外部网络, 对安全性要求极高. 

nginx一般是应用的最外城, 往往承载着最多的压力
他需要很多配置来进行优化.
CPU的核心数. 内存数. 以及内核参数都需要优化. 
Nginx自己的配置, 比如工作连接数,工作线程数
是否长连接. proxy_pass的长连接设置等等配置
以及linux的tcp_reuse, tcp_timstamp,以及tcp缓存参数等. 

消息队列

rabbitmq 为例
消息队列有集群和镜像模式.
集群模式下一般小时是分片的. 
镜像模式一般保证消息队列的高可用和保证一定的数据不丢失(需要持久化加持.)

不建议将集群部署到一台机器上面. 建议多台机器分散部署.保证安全
也需要进行集群的测试验证.
1. 功能 配置,最佳实践
2. 性能  
3. 稳定性 洪峰流量时的异常处理
4. 异常恢复 部分节点宕机时对应用的影响,以及是否可以保证数据不丢失.

服务注册发现

微服务部署的场景下,最核心的应用其实是服务注册发现
网上zookeeper,consul,其实都可以实现一定程度的服务注册与发现

产品这边用的是 nacos. 其实nacos也是可以进行集群处理的. 
可以选择使用 mysql数据库存储一些核心配置. 

需要注意的是 注册和反注册都需要进行实现. 需要保证反注册时能够将不提供服务的
在nacos里面剔除, 避免出现服务关闭了.其他人调用出现404的问题. 

集群的难点

1. 安装.
2. 配置.
3. 调优.
4. 高可用
5. 分布式一致性.防止脑裂等. 

集群的难点

安装是第一步. 需要收敛掌握, 但是跟配置一样,必须有一个全局的规划能力
规划服务器, 网络交换机. 机柜等设备.
云服务的话需要保证高可用区. 

配置需要保证一方面安全, 避免数据被脱库. 另一方面需要保证性能.
能够支撑尽可能多的应用负载. 在可用范围内进行使用. 

调优. 需要根据现场情况进行配置
修改服务器的配置, 内核参数,应用配置,落盘持久化参数等等. 

高可用. 必须进行高可用的设置,多花钱花精力了必须保证可用性.
保证一两台机器宕机的情况下无严重问题. 

分布式一致性. paxos以及raft等算法来保证. 可能需要研究源码.
基本上在于 leader 和 选leader 以及半数同意提交等. 

为什么要高可用集群

为了sla,为了项目
甲方爸爸给钱多,就得保证高可用
这就好比舔狗必须24小时在线舔女神才可能有机会. 

但是前提时得足够有钱, 足够美丽
给不够钱, 没有足够的诱惑力
集群就是镜花水月. 没人维护,没人演练. 

时间永远是最宝贵的. 要珍惜所有留给你时间的人. 
时间也是所有人的敌人, 耗费很多钱和很多精力也不一定能够买到一点时间.

希望产品项目用不宕机 orz!

标签:为什么,需要,可用,Redis,nginx,保证,集群
From: https://www.cnblogs.com/jinanxiaolaohu/p/16969299.html

相关文章

  • 认识一下 Kubernetes 多集群服务 API
    由于各种原因,采用Kubernetes的企业内部存在着几个、几十甚至上百个集群。比如处于研发流程上的考虑,不同环境下都存在独立的集群;监管层面的考虑,就地存储的用户数据需要搭......
  • Redis(六)集群
    Redis集群1.1存在的问题容量不够Redis如何扩容并发写操作,Redis如何分摊当主机或者从机宕机,薪火相传、反客为主等主从模式都会导致ip发生变化,应用程序中的配置需......
  • 投身开源,需要持之以恒的热爱与贡献 —— Apache Spark Committer 姜逸坤
    本期访谈阵容嘉宾:姜逸坤,华为计算开源团队高级软件工程师,ApacheSparkCommitter,openEulerInfraSIGMaintainer,VolcanoReviewer,OpenStack存储项目Committer,目前致力于......
  • 二进制部署高可用k8s集群
    一、k8s高可用架构解析etcd是键值数据库用来存储集群信息apiserver是集群的整个控制中心,所有的流量都会经过他ControllerManager控制器,监控整个集群的状态Scheduler调......
  • MSDS认证什么产品需要做呢?
    MSDS认证需要提供什么资料什么是MSDS认证?MSDS认证报告即MaterialSafetyDataSheet,(材料安全数据表),中文名为化学品安全说明书。美国、加拿大、澳洲及亚洲多国一般称MSDS,而......
  • 企业的可视化分析能力想要提升,还需要多多关注瓴羊Quick BI
    各企业的经营想要更好,商业智能BI工具成为了很重要的内容。涉及到的工具的种类一直都是很多的,帆软、SMARTBI在企业使用过程中效果都是很不错的。而很多人对于瓴羊QuickBI确......
  • 美国站亚马逊需要做什么认证呢
    近期,亚马逊在严查登山扣及其相关产品,被抽查到没有相关认证的登山扣产品将直接被下架!而登山扣上亚马逊,需要做什么认证呢?一、什么是登山扣登山扣是扣子的一种,顾名思义其就......
  • Redis主从复制,哨兵模式和集群模式
    一、主从复制1.1主从复制-哨兵-集群主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操......
  • 为什么gdb通过0地址显示偏移会提示地址错误
    现象在gdb中,如果想看一个struct的某个field的偏移量,和C语言一样可以通过对一个0地址变量取地址,然后取成员的偏移量获得。更神奇的地方在于和C语言一样,这里也不会触发内存......
  • HCIP-ICT实战进阶08-以太网链路的聚合和集群
    HCIP-ICT实战进阶08-以太网链路的聚合和集群1网络可靠性需求网络可靠性可以从设备、链路多个层面实现,保持当前设备或链路出现单点或者多点故障时保证网络服务不间断......