集群服务器

ZooKeeper理论基础

笑着哭i 提交于 2020-01-22 04:05:31
ZooKeeper理论基础 1 ZooKeeper简介 2 一致性 2.1 顺序一致性 2.2 原子性 2.3 单一视图 2.4 可靠性 2.5 最终一致性 3 ZAB协议 3.1 ZAB协议简介 3.2 ZAB与Paxos的关系 3.3 三类角色 3.4 三个数据 3.5 三种模式 3.6 四种状态 3.7 同步模式与广播模式 (1) 初始化广播 (2) 消息广播算法 (3) Observer的数据问题 3.8 恢复模式的三原则 (1) Leader的主动出让原则 (2) 已被处理过的消息不能丢原则 (3) 被丢弃的消息不能再现原则 3.9 Leader选举 (1) Leader选举中的基本概念 A. myid B.逻辑时钟 (2)Leader选举算法 A.集群启动中的Leader选举 B.宕机后的eader选举 4.高可用集群容灾 4.1 服务器数量的奇数与偶数 4.2 容灾设计方案 (1) 三机房部署 (2) 双机房部署 5.CAP定理 5.1 简介 5.2 BASE理论 (1) 基本可用 (2) 软状态 (3) 最终一致性 5.3 ZK与CP 6.zk可能会存在脑裂 1 ZooKeeper简介 ZooKeeper由雅虎研究院开发,后来捐赠给了Apache。ZooKeeper是一个开源得分布式应用程序协调服务器,其为分布式系统提供 一致性 服务

Docker搭建Redis4.0集群(不使用Ruby脚本)

萝らか妹 提交于 2020-01-21 18:53:50
前言 生产服务器没法下载ruby,因此我只能这么干啊。 拉取镜像 docker pull docker:4.0 创建网卡 docker network create redis-net 创建redis集群环境 我的文件是放在 /opt/docker/redis-cluster/ 目录下,这里酌情修改为自己的目录。 sudo mkdir /opt/docker/redis-cluster/ 创建模版文件: vim redis-cluster.tmpl port ${PORT} protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 127.0.0.1 #注意这儿一定是你的外网IP cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes 生成配置文件和数据存放目录: for port in `seq 7001 7006`; do \ mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf

使用LVS实现负载均衡原理及安装配置详解

瘦欲@ 提交于 2020-01-21 08:48:23
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。 二

zookeeper集群

泪湿孤枕 提交于 2020-01-21 05:10:22
注意: 1、zookeeper节点是奇数(容错率、防脑裂) 2、依赖java 一、创建、修改配置文件 zoo.cfg: 二、配置文件基本参数 1、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔 2、dataDir:存储内存中数据库快照的位置, dataLogDir: 数据记录位置 3、clientPort: 监听客户端连接的端口 4、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位 5、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度 6、server.myId= x:y:Z(number表示服务器标号, x为集群中各个节点IP,yLeader选举的端口,z服务器之间连接的通信端口) 三、其他配置 1、myid: 文件位于dataDir里,值为配置文件后的myid值。 2、配置环境bin 3、启动 sh bin/zkServer.sh [start / start-foreground / stop / upgrade / restart / status] */zoo.cfg 来源: CSDN 作者: khcsnmbs 链接: https://blog.csdn.net/khcsnmbs/article/details

Redis我们应该知道的特性

笑着哭i 提交于 2020-01-21 03:05:21
关于的知识点总结成了思维导图 1、什么是 Redis? Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: (1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 (2)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。 (3)Redis 支持数据的备份,即 master-slave 模式的数据备份。 Redis 优势 (1)性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。 (2)丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 数据类型操作。 (3)原子 – Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC指令包起来。 (4)丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。 Redis 与其他 key-value 存储有什么不同? (1)Redis

Redis我们应该知道的特性

微笑、不失礼 提交于 2020-01-21 00:39:26
关于的知识点总结成了思维导图 1、什么是 Redis? Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: (1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 (2)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。 (3)Redis 支持数据的备份,即 master-slave 模式的数据备份。 Redis 优势 (1)性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。 (2)丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 数据类型操作。 (3)原子 – Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC指令包起来。 (4)丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。 Redis 与其他 key-value 存储有什么不同? (1)Redis

kubernetes基础概念知多少

耗尽温柔 提交于 2020-01-21 00:26:10
kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用、高扩展性和可预测性的方式来管理容器应用的生命周期。通过k8s,用户可以定义程序运行方式、部署升级策略、动态伸缩容,使得用户以一种更灵活可靠的方式来管理应用程序。 关于k8s,是一种对应用服务的打包、部署、监控等一整套生命周期的自动化管理平台,目前各大公司已在生产环境部署使用,同时k8s社区比较活跃,在未来一段时间内会越来越流行,可以说是以后服务部署的事实标准,对于Java开发者来说,你可以不直接使用它,但是不能不了解它。 总结来看,k8s特点如下: 自动装箱 :基于容器,结合调度策略将多种应用部署到同一节点上,提高资源利用率; 自我修复 :支持故障转移/重启,具有健康检查机制; 水平扩展 :通过命令手动执行扩容,可基于CPU等资源负载率来动态实现伸缩容; 服务发现/负载均衡 :通过KubeDNS(或CoreDNS)为系统内置了服务发现功能,为每个service配置DNS名称,service通过iptables或ipvs内建了负载均衡机制; 自动部署 :自动发布和回滚,支持灰度、增量发布等; 配置管理 :ConfigMap实现了配置数据与Docker镜像解耦,为开发部署提供了良好的灵活性; 批处理 :除了管理服务型应用之外,Kubernetes还支持批处理作业及CI(持续集成)

读懂这一篇,集群节点不下线

ぐ巨炮叔叔 提交于 2020-01-20 21:19:02
作者 | 声东 阿里云售后技术专家 导读 :排查完全陌生的问题、完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如 systemd 和 dbus。但是排查问题的思路和方法基本上还是可以复用了,希望对大家有所帮助。 问题一直在发生 1. I’m NotReady 阿里云有自己的 Kubernetes 容器集群产品。随着 Kubernetes 集群出货量的剧增,线上用户零星的发现,集群会非常低概率地出现节点 NotReady 情况。 据我们观察,这个问题差不多每个月就会有一到两个客户遇到。在节点 NotReady 之后,集群 Master 没有办法对这个节点做任何控制,比如下发新的 Pod,再比如抓取节点上正在运行 Pod 的实时信息。 2. 需要知道的 Kubernetes 知识 这里我稍微补充一点 Kubernetes 集群的基本知识。Kubernetes 集群的“硬件基础”,是以单机形态存在的集群节点。这些节点可以是物理机,也可以是虚拟机。集群节点分为 Master 和 Worker 节点。 Master 节点主要用来负载集群管控组件,比如调度器和控制器; 而 Worker 节点主要用来跑业务。Kubelet 是跑在各个节点上的代理,它负责与管控组件沟通,并按照管控组件的指示

redis 安装 集群 主从 哨兵 docker

折月煮酒 提交于 2020-01-20 19:49:31
安装redis 官方文档 docker run -d --net host -v /opt/myconfig/redis/redis.conf:/usr/local/etc/redis/redis.conf --name redis redis redis-server /usr/local/etc/redis/redis.conf 用集群 网络用 --net host 主机模式 用主机模式就不用指定端口映射 。 否则会报错 WARNING: Published ports are discarded when using host network mode redis.conf 官方文档 高可用 主从 哨兵 配置主从 最少配置 replicaof masterip masterport 单独配置主从时 不支持 集群 改为 cluster-enabled no 在集群中 配置主从 需要在创建集群的时通过 --cluster-replicas 指定从机数量 主从管理 查看主从信息 redis-cli -h 127.0.0.1 -p 6379 info replication 配置从机 slaveof MASTER_IP MASTER_PORT 搭建哨兵 在从机中选择主机 搭建哨兵系统 redis安装包里有 该系统 不用重新去下,没有的要下一个 最少配置文件 #指示 Sentinel

HBASE的完全分布式搭建

六眼飞鱼酱① 提交于 2020-01-19 19:24:02
今天来教大家如何搭建一个完全分布式的hbase集群: 1.环境确认: 由于hbase的数据是存储在hdfs集群上面,所以你需要搭建一个hdfs集群,而且我们需要使用zookeeper管理我们的hbase集群,所以我们的机器需要安装zookeeper集群。 如图: hadoop集群: 本地环境是有三台机器:master,slave1,slave2,分别是是hdfs的namenode和datanode,其中QuorumPeerMain是zookeeper的java进程,确认上述环境没有问题之后就可以来安装我们的hbase集群了。 2.上传hbase安装包 注意,因为hbase是依赖于hadoop集群的,所以我们需要的hbase版本要和hadoop对应好,我本地的hadoop是2.7.3版本的(可以使用hadoop version查看版本) 按照官网 http://hbase.apache.org/book.html#java 查看版本对应的关系: 所以我下载的hbase版本是2.1.8版本的,上传到服务器 3. 解压 tar -zxvf hbase-2.1.8-bin.tar.gz 我的文件夹是/home/hbase,效果如图: 4.修改配置文件 进入/conf目录: 修改hbase-env.sh 需要修改的一个是jdk的安装位置,一个是使用外部的zk,可以使用 echo $JAVA