redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。 redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单。 ? Redis高可用集群搭建 redis集群需要至少三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis redis-cluster/8003/redis-8003.conf redis-server /usr/local/redis-cluster/8006/redis-8006.conf Redis高可用集群水平扩展 Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成
集群高可用 HDFS单节点架构存在的问题 HDFS单点架构存在一些问题,首先是NameNode内存受限,因为数据的元数据信息全部保存在NameNode内存中。 其次就是单点故障问题,主从架构的HDFS是依靠主节点NameNode来运转的,一旦主节点挂掉就会导致整个集群不可用。 NameNode High Availability(高可用)机制 NameNode High Availability高可用机制是Hadoop 2.x中提出的,用于解决NameNode单节点故障问题的方案 实现高可用,至少提供两台NameNode做热备:Active、Standby
一、Kubernetes 集群高可用 下载链接: 链接:https://pan.baidu.com/s/1U3UWaZSA5b5bf3QnR_XZGw 密码:2flw 1.1、环境准备 准备好五台虚拟机分别做为 /v1alpha1 kind: KubeProxyConfiguration featureGates: SupportIPVSProxyMode: true mode: ipvs 1.13、安装配置集群 coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml 1.14、将从节点加入集群 #---------------------Master 节点使用下面这条命令加入集群------------------------------# kubeadm join 192.168.1.170 -------------------------------------------------------# #------------------------Node 节点使用下面这条命令加入集群
RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的 一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图: 这里对上面的集群架构做一下解释说明: 首先一个基本的 RabbitMQ 集群不是高可用的,虽然集群共享队列,但在默认情况下,消息只会被路由到某一个节点的符合条件的队列上 HAProxy 同时支持四层和七层负载均衡,并基于单一进程的事件驱动模型,因此它可以支持非常高的井发连接数。 此时对外服务的 VIP 依然可用,代表已经成功地进行了故障转移。 官方文档 —— 高可用镜像队列:www.rabbitmq.com/ha.html HAProxy 官方配置手册:cbonte.github.io/haproxy-dco… KeepAlived 官方配置手册
在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。 S 17:49 0:00 /usr/sbin/keepalived -D ---- 三、测试高可用 为了测试简单明了,修改主上面的主页为: [root@zhdy-02 ~]# vim /usr vim /etc/keepalived/keepalived.conf priority 90 除了配置nginx的高可用,我们当然也可以配置mysql的高可用,前提是一定要保证双方的数据是一致的。
RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用的 RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 普通集群模式(无高可用性) 普通集群模式,有服务器ABC,在服务器ABC上分别启动RabbitMQ实例,生产者生产消息1,随机发给某一实例A,实例BC 上记录消息1的原数据信息(比如消息1具体信息在示例 所以这个事儿就比较尴尬了,这就没有什么所谓的高可用性,这方案主要是提高吞吐量的,就是说让集群中多个节点来服务某个 queue 的读写操作。 镜像集群模式(高可用性) 这种模式,才是所谓的 RabbitMQ 的高可用模式。 那么如何开启这个镜像集群模式呢?
kafka高可用集群搭建 说明 这篇博文主要是为了后面的 elk 做准备,我们这里搭建一个 kafka 集群,使用2个节点,还是前面的节点。主要是为了后面做数据缓冲。 zookeeper.connection.timeout.ms=6000 设置zookeeper的连接超时时间 ---- vi config/zookeeper.properties 为了保证 kafka 的高可用 现在 kafka 可用确认生产消费是正常的了 容错测试集群可用性 虽然说两个节点的 kafka 正常启动了,我们还需要对他的可用性进行测试,保证到时候我们服务的一个高可用。 ,这里我想表明的实际是冗余是解决可用性的方案 创建 topic . 现在已经完成了我们的高可用测试,但是我们对 kafka 的管理老是通过命令行处理非常麻烦,然后给大家介绍一下 kafka 的可视化工具: kafkatool、或者可以使用 kafka-manager 可视化
Sentinel为Redis提供了高可用性架构,该部署架构可以在无需人工干预的情况下完成故障转移;同时也提供监控,通知等其他功能. 一. TILT 模式 redis sentinel 严重依赖计算机的时间功能: 比如说,为了判断一个实例是否可用, sentinel 会记录这个实例最后一次相应 PING 命令的时间,并将这个时间和当前时间进行对比 删除指定master集群,sentinel不再对该集群进行监控 sentinel remove <name> 13. Sentinel集群的不足 1. 集群较难支持横向扩容,且单节点的容量是有限的。 2. 从节点并不能分担主节点的压力,在没有故障发生时是很浪费资源的. 3. 综上,sentinel集群在数据量不是很大,并发也不是很高的情况是一种不错的选择.
上面的这些问题在多数讲eureka集群教程里都没有说明白,上来就是配server相互注册,client添加所有的server地址,大大的误导了我一把。 专门从头新建了项目来看看到底eureka集群是该怎么配置。 server端配置 创建个eureka server项目 pom.xml如下: <? application: name: eureka profiles: active: server1 我用同一个项目打算启动两个server服务,占用不同的端口,以此模拟eureka服务集群 这是因为eureka是通过在各个节点进行复制来达到高可用的目的。 测试很简单,我们直接关掉server1,然后看看server2是否还能维持住client的发现。 下面我们可以测试一下把server端yml里配置register-with-eureka: false的那两行注释给放开,看看eureka的server忽略自己后,是否能完成服务发现的高可用。
集群架构图 先来简单说一下这个架构图,前段是两台nginx + keepalived的高可用负载均衡群集,对后面两个tracker服务器做负载均衡,然后最后端是由fastdfs组成的分布式存储池,通过tracker storage服务器 nginx fastdfs storage fastdfs相关模块 (两台机器,对等的两组 192.168.3.23/24) keepalived结合nginx做高可用的负载均衡 client.conf image.jpg 然后我们在访问tracker服务器,看是否能反向代理到后端storage上 2)测试负载均衡器 我们访问负载均衡器的VIP,来看下是否能访问 至此,,一个简单的fastdfs高可用的负载均衡集群已经搭建完毕
kubernetes 虽然具有故障自愈和容错能力,但某些组件的异常会导致整个集群不可用,生产环境中将其部署为高可用还是非常有必要的,本文会介绍如何构建一个高可用的 Kubernetes 集群。 apiserver 的高可用可以分为集群外高可用和集群内高可用。 集群内的高可用配置是指对于部署到集群中的 pod 访问 kubernetes,kubernetes 集群创建完成后默认会启动一个kubernetes的 service 供集群内的 pod 访问,service etcd 的高可用配置 etcd 是一个分布式集群,也是一个有状态的服务,其天生就是高可用的架构。为了防止 etcd 脑裂,其组成 etcd 集群的个数一般为奇数个(3 或 5 个节点) 。 apiserver 作为集群的核心组件,其必须高可用部署,其他组件实现高可用相对容易。
这样你可以通过web页面观察rabbitmq的status,端口号是15672,例如http://ip:15672 3、配置RabbitMQ集群 我们这里会展示如何配置一个RabbitMQ集群,集群由以下节点组成 要保证集群在同一个局域网,IP能通。 ? 1)安装好RabbitMQ 安装方法同上文。 ,当然这个时候还没有组成集群。 client10:加入到集群rabbit@bigdata-arch-client09 [root@bigdata-arch-client10 ~]#rabbitmqctl stop_app [root 4、HA配置 我们使用haproxy来代理配置高可用。 haproxy可以用来做代理,进行负载均衡和backend探活。支持TCP和HTTP模式。 关于haproxy的内容就不展开说了。
应用场景 Yahoo将Spark用在Audience Expansion中的应用,进行点击预测和即席查询等 淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。 应用于内容推荐、社区发现等 腾讯大数据精准推荐借助Spark快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上。 ,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠 配置Spark集群之前一定要把zookper集群启动 Spark集群规划:hdp-01,hdp-02是Master ;hdp-03,hdp-04是Worker 安装配置zk集群,并启动zk集群 停止spark所有服务 集群中Master地址是不固定的 所以必须把export SPARK_MASTER_IP=hdp-01 spark-examples_2.11-2.2.0.jar 100 参数说明: --master spark://hdp-01:7077 指定Master的地址 --executor-memory 1G 指定每个worker可用内存为
将配置好的activemq全部复制到其他服务器,启动ActiveMQ集群搭建就完成了 Master-Slave集群主要解决了单点故障的问题,Master-Slave集群中的一个节点挂掉,其他的节点任然可用 ,服务就任然可用。 initialReconnectDelay=100” 基于Broker-Cluster集群部署 Broker-Cluster集群通过网络连接,将多个broker组合,对外构成一个整体,集群之间共享队列和主题列表 Master-Slave集群解决了单点故障的问题,但是仍然只是一个节点处理所有请求。 Master-Slave与Broker-Cluster两者相结合的集群即可解决单点故障又可保证负载均衡,做到了高可靠和高可用。 ?
Mysql高可用集群--MHA 强烈推介IDEA2020.2破解激活,IntelliJ MHA Manager 可以单独部署在一台独立机器上管理多个 master-slave 集群,也可以部署在一台 slave 上。 MHA Manager 探测集群的 node 节点,当发现 master 出现故障的时候,它可以自动将具有最新数据的 slave 提升为新的 master,然后将所有其它的 slave 指向新的 master purge_relay_logs : 清除中继日志(不会阻塞 SQL 线程) MHA优点 a、自动故障转移快,秒级就能完成故障切换 b、可以结合半同步复制,保证主从数据的一致 c、manager节点可以管理多个MHA集群系统 relay-log=relay-log-bin relay-log-index=slave-relay-bin.index read-only=1 # 启动只读属性 relay-log-purge=0 # 高可用进行切换时
计划分几篇文章把近一个月技术上的一些实践记录一下,这第一篇记录一下mongodb的高可用集群部署。 复制集节点2 shard server3 复制集节点3 端口分配 mongos:27088 config:27077 shard1:27017 shard2:27018 shard3:27019 集群搭建 WantedBy=multi-user.target EOF systemctl enable mongos systemctl start mongos 再在任意一台服务器上依次将3个分片加入到集群中 systemctl restart mognod-shard3 systemctl restart mognod-config systemctl restart mognos 至此,整个mongodb高可用集群就搭建好了 > sh.enableSharding("test") > sh.shardCollection("test.col1", { "name" : 1 } ) > exit 总结 手工部署mongodb集群还是比较麻烦的
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式、集群组成、容灾和水平扩容四方面逐步深入,最终构建出高可用的 ZooKeeper 集群。 要搭建一个高可用的 ZooKeeper 集群,我们首先需要确定好集群的规模。 答案是否定的,在搭建一个高可用的集群的时候依然需要考虑容灾问题。正如上面讲到的,如果集群中超过半数的机器还在正常工作,集群就能够对外提供正常的服务。 } System.out.println("("+n1+","+n2+","+n3+")"); } } } 四、水平扩容 水平可扩容可以说是对一个分布式系统在高可用性方面提出的基本的
集群拓扑 ? 架构说明 部署主要分为以下4个步骤: 1.搭建外部etcd集群: etcd是kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息。 本次实验通过kubelet部署static pod方式在集群外部部署一个3节点的etcd集群。 3.kubeadm部署集群:部署3 master,3 worker高可用集群。 4.部署Rancher(可选):在kubernetes集群中安装rancher-agent,将kubeadm部署的k8s集群纳管到Rancher中。Rancher可以提供可视化管理界面。 ,需要另外搭建一个k8s集群用于部署Rancher,这里跳过搭建k8s集群的步骤。
上面的这些问题在多数讲eureka集群教程里都没有说明白,上来就是配server相互注册,client添加所有的server地址,大大的误导了我一把。 专门从头新建了项目来看看到底eureka集群是该怎么配置。 server端配置 创建个eureka server项目 pom.xml如下: <? application: name: eureka profiles: active: server1 我用同一个项目打算启动两个server服务,占用不同的端口,以此模拟eureka服务集群 这是因为eureka是通过在各个节点进行复制来达到高可用的目的。 测试很简单,我们直接关掉server1,然后看看server2是否还能维持住client的发现。 下面我们可以测试一下把server端yml里配置register-with-eureka: false的那两行注释给放开,看看eureka的server忽略自己后,是否能完成服务发现的高可用。
MHA Manager 可以单独部署在一台独立机器上管理多个 master-slave 集群,也可以部署在一台 slave 上。 MHA Manager 探测集群的 node 节点,当发现 master 出现故障的时候,它可以自动将具有最新数据的 slave 提升为新的 master,然后将所有其它的 slave 指向新的 master purge_relay_logs : 清除中继日志(不会阻塞 SQL 线程) MHA优点 a、自动故障转移快,秒级就能完成故障切换 b、可以结合半同步复制,保证主从数据的一致 c、manager节点可以管理多个MHA集群系统 relay-log=relay-log-bin relay-log-index=slave-relay-bin.index read-only=1 # 启动只读属性 relay-log-purge=0 # 高可用进行切换时