集群服务器

Docker 三剑客--Machine

陌路散爱 提交于 2020-02-28 10:19:26
Machine 我们知道在多个集群服务环境下,安装管理Docker的容器,要使用的是Docker Swarm,而使用Docker Swarm的情况是在多个集群的服务器已经搭建好Docker环境的情况下进行。如果在多台服务环境下,并没有安装好Docker环境,想要快速搭建一套Docker主机集群,这里就要使用到Docker Machine。 通过上面的基本简介,我们知道了Docker Machine是用来干啥的。即Docker Machine是负责使用Docker的第一步,让我们可以在多种平台上快速安装Docker环境,同时也支持多种平台,让用户可以在短时间内搭建一套Docker主机集群。 Docker Machine是Docker官方的开源项目,负责实现对Docker主机本身进行管理,由Go语言编写,开源地址为 https://github.com/docker/machine。 通过Machine用户可以在本地任意指定被Machine管理的Docker主机,并对其进行操作。Docker Machine 的定位主要是“在本地或者云环境中创建Docker”。其基本功能为: 在指定的节点上安装Docker引擎,配置其为Docker主机 集中管理所有Docker主机 总之Docker Machine 是一个工具,它允许你在虚拟宿主机上安装 Docker Engine ,并使用

分布式集群架构学习笔记

为君一笑 提交于 2020-02-28 03:09:21
分布式和集群 分布式和集群是不⼀样的,分布式⼀定是集群,但是集群不⼀定是分布式(因为集群就是多个实例⼀起 ⼯作,分布式将⼀个系统拆分之后那就是多个实例;集群并不⼀定是分布式,因为复制型的集群不是拆 分⽽是复制) 第⼀部分 ⼀致性Hash算法 Hash算法,⽐如说在安全加密领域MD5、SHA等加密算法,在数据存储和查找⽅⾯有Hash表等, 以上 都应⽤到了Hash算法。 为什么需要使⽤Hash? Hash算法较多的应⽤在数据存储和查找领域,最经典的就是Hash表,它的查询效率⾮常之⾼,其中的 哈希算法如果设计的⽐较ok的话,那么Hash表的数据查询时间复杂度可以接近于O(1),示例 需求:提供⼀组数据 1,5,7,6,3,4,8,对这组数据进⾏存储,然后随便给定⼀个数n,请你判断n是否存在 于刚才的数据集中? list:List[1,5,7,6,3,4,8] // 通过循环判断来实现 for(int element: list) { if(element == n) { 如果相等,说明n存在于数据集中 } } 以上这种⽅法叫做顺序查找法 :这种⽅式我们是通过循环来完成,⽐较原始,效率也不⾼ ⼆分查找:排序之后折半查找,相对于顺序查找法会提⾼⼀些效率,但是效率也并不是特别好 我能否不循环!不⼆分!⽽是通过⼀次查询就把数据n从数据集中查询出来???可以! 定义⼀个数组,数组⻓度

一篇文章带你搞定 ElasticSearch 术语

心不动则不痛 提交于 2020-02-27 23:43:01
这篇文章主要介绍 ElasticSearch 的基本概念,学习文档、索引、集群、节点、分片等概念,同时会将 ElasticSearch 和关系型数据库做简单的类比,还会简单介绍 REST API 的使用用法。 ElasticSearch 术语 索引和文档是偏向于逻辑上的概念,节点和分片更偏向于物理上的概念。 首先来说下什么是文档: 文档(Document) ElasticSearch(简称 ES) 是面向文档的, 文档是所有可搜索数据的最小单位 。 给大家举几个例子,让大家更形象地理解什么是文档: 日志文件中日志项 一本电影的具体信息、一张唱片的详细信息 MP3 播放器里的一首歌、一篇 PDF 文档中的具体内容 一条客户数据、一条商品分类数据、一条订单数据 大家可以把文档理解为关系型数据库中的一条记录。 在 ES 中文档会被序列化成 JSON 格式 ,保存在 ES 中,JSON 对象由字段组成,其中每个字段都有对应的字段类型(字符串/数组/布尔/日期/二进制/范围类型)。 在 ES 中,每个文档都有一个 Unique ID,可以 自己指定 ID 或者通过 ES 自动生成 。 在上一篇文章 手把手教你搭建 ELK 实时日志分析平台 中,我们讲到了通过 Logstash 向 ES 中导入数据,其中部分测试数据集和对应的转换后的格式如下所示: movieId,title,genres

ElasticSearch集群

风流意气都作罢 提交于 2020-02-27 20:56:37
ES为什么要实现集群 在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。 如果使用ES集群,会将单台服务器节点的索引文件使用分片技术,分布式的存放在多个不同的物理机器上,从而可以实现高可用、容错性等。 es核心存放的是索引。 什么是分片技术 将数据拆分成多台节点进行存放。 ES是如何解决高并发 ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。 Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。 Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。 ES集群核心原理分析 1、每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储,每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards 主分片。 查看索引分片信息 http://192.168.0.110:9200/myindex/_settings 结果为: { "myindex":

RabbitMQ 集群+负载均衡

左心房为你撑大大i 提交于 2020-02-27 20:51:16
负载均衡 集群的配置已经搭建好了,代码也成功跑通,成功做到了高可用,但是我们的程序连接节点并不会管哪个服务器在忙、哪个服务器空闲,完全看心情想连谁就连谁。而且代码中要把每个ip的节点都手动的写出来 ,既然是手动的就很有可能发现写错这种情况,同样WEB UI 通常也不知道打开哪个好,因为每个服务器都有一个 WEB UI,可能有人说,既然哪个都行,你随便打开一个就是了。但是如果不巧这个服务器后面崩了呢。 基于以前问题,我们就需要一个强大的负载均衡服务器来帮助我们完成这些事情。 这里选择使用 haproxy,看官们可以根据心情来选择自己想要的 这里记一个坑,博主之前想用windows系统做负载均衡服务器,但是实验的时候总是会出错,换到linux后,发现高版本的haproxy不可用!试了几次 1.5.8是可以成功的。 准备工作就是 下载 haproxy,然后在linux下安装 make TARGET=linux26 PREFIX=/usr/local/haproxy #将haproxy安装到/usr/local/haproxy make install PREFIX=/usr/local/haproxy 然后把haproxy.cfg拷贝到安装目录下sbin文件夹中,这里我做了一些配置。包括对WEB UI与集群的负载均衡 global log 127.0.0.1 local0 # log

Redis集群的配置与故障恢复

北战南征 提交于 2020-02-27 20:24:41
集群 Redis在主从复制模式下,每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储量受限于内存最小的服务器。 另外,对Redis进行水平扩展比较麻烦,通常使用客户端分片来解决这个问题,由客户端决定每个键存储到哪个节点。但扩容时想增加新的节点就需要对数据进行手工迁移,为了保证迁移过程中,数据的一致性,还需要将Redis暂时下线。 Redis在3.0版本推出了集群模式,在该模式中由Redis决定key存储在哪个节点,以及查询时从哪个节点查询。 准备8个虚拟机,安装好redis: 192.168.2.104 192.168.2.105 192.168.2.106 192.168.2.107 192.168.2.108 192.168.2.109 192.168.2.110 192.168.2.111 先将前6个节点组成集群,然后在将后两个节点以扩容的形式加入到集群。 配置 要使用集群,首先要开启集群的配置: cluster-enabled yes 如果由防火墙,打开16937端口(默认) 启动Redis后,在redis-cli终端下执行INFO cluster查询集群是否正常: [root@localhost redis-5.0.7]# redis-cli 127.0.0.1:6379> INFO cluster # Cluster cluster_enabled:1

hadoop集群搭建

久未见 提交于 2020-02-27 16:24:21
hadoop-2.8.4 本地模式 配置免密登录 ssh - keygen 将公钥拷贝到要免密登录的目标机器上 ssh - copy - id 主机名1 记录ssh访问过计算机的公钥 ( public key ) cat / root / . ssh / known_hosts scp scp / etc / hosts root @bigdata1112 : / etc / scp test . tar . gz ip: / opt / svn / 配置环境变量 vi / etc / profile export JAVA_HOME= / opt / mod / jdk1 . 8 . 0_144 export PATH= $PATH : $JAVA_HOME / bin export HADOOP_HOME= / opt / mod / hadoop - 2 . 8 . 4 export PATH= $HADOOP_HOME / bin: $PATH : $HADOOP_HOME / sbin source / etc / profile 统计test文件的单词个数 / opt / soft / hadoop - 2 . 8 . 4 / share / hadoop / mapreduce hadoop jar hadoop - mapreduce - examples - 2

Zookeeper知识梳理

丶灬走出姿态 提交于 2020-02-27 13:23:31
转载自: https://hadyang.github.io/interview/docs/architecture/distributed/zk/ 分布式应用 分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说, 对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用通过使用所有系统涉及的计算能力可以在几分钟内完成 。 通过将分布式应用配置为在更多系统上运行,可以进一步减少完成任务的时间。分布式应用正在运行的一组系统称为 集群 ,而在集群中运行的每台机器被称为 节点 。 分布式应用的优点 可靠性:单个或几个系统的故障不会使整个系统出现故障。 可扩展性:可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。 透明性:隐藏系统的复杂性,并将其显示为单个实体/应用程序。 分布式应用的挑战 竞争条件:两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。 死锁:两个或多个操作等待彼此无限期完成。 不一致:数据的部分失败。 ZooKeeper基础 Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据

我们为什么会删除不了集群的 Namespace?

梦想的初衷 提交于 2020-02-27 12:38:13
作者 | 声东 阿里云售后技术专家 导读 :阿里云售后技术团队的同学,每天都在处理各式各样千奇百怪的线上问题。常见的有网络连接失败、服务器宕机、性能不达标及请求响应慢等。但如果要评选的话,什么问题看起来微不足道事实上却让人绞尽脑汁,我相信肯定是“删不掉”的问题,比如文件删不掉、进程结束不掉、驱动卸载不了等。这样的问题就像冰山,隐藏在它们背后的复杂逻辑,往往超过我们的预想。 背景 今天我们讨论的这个问题,跟 K8s 集群的 Namespace 有关。Namespace 是 K8s 集群资源的“收纳”机制。我们可以把相关的资源“收纳”到同一个 Namespace 里,以避免不相关资源之间不必要的影响。 Namespace 本身也是一种资源。通过集群 API Server 入口,我们可以新建 Namespace,而对于不再使用的 Namespace,我们需要清理掉。Namespace 的 Controller 会通过 API Server,监视集群中 Namespace 的变化,然后根据变化来执行预先定义的动作。 有时候,我们会遇到下图中的问题,即 Namespace 的状态被标记成了 "Terminating",但却没有办法被完全删除。 从集群入口开始 因为删除操作是通过集群 API Server 来执行的,所以我们要分析 API Server 的行为。跟大多数集群组件类似,API

MySQL家族"新"成员——MySQL Shell

我怕爱的太早我们不能终老 提交于 2020-02-27 07:22:31
本文转载自“MySQL解决方案工程师”公众号,由徐轶韬翻译 标题虽然叫做MySQL家族新成员,但如果从发布时间上来看,MySQL Shell已经不能算做新成员了,它的正式版与MySQL8.0同一天诞生,2018年4月19日,但还有很多人对它比较陌生,所以称之为“新”。在这篇文章里,我将会介绍一下它的部分功能和使用方法。 首选概括一下它的功能,MySQL Shell是一个统一的命令行客户端,使用它可以对MySQL进行管理和操作。它支持多种语言,包括JavaScript,Python和SQL,并且支持编写脚本。此外,它同时支持文档型和关系型数据库模式,并且具有完整的开发和管理API。 看到这里,您可能会发现MySQL Shell与传统的MySQL数据库的客户端mysql的区别了,旧的mysql客户端缺失了脚本功能(可能有人会说可以通过编写SQL命令进行批处理),但是想要通过脚本语言对数据库进行管理的用户会发现,并没有专门适用于合并脚本语言的工具,MySQL Shell的出现弥补了这一点。 使用MySQL Shell除了可以对数据库里的数据进行操作,还可以对数据库进行管理,特别是对Innodb Cluster的支持,使用它可以十分方便的对Innodb Cluster进行管理,配置。您可以理解为MySQL Shell就是为Innodb Cluster 而生的