集群服务器

2019年常见ElasticSearch 面试题解析(上)

核能气质少年 提交于 2019-12-25 20:43:25
前言 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。 Elasticsearch 面试题 1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。 2、elasticsearch 的倒排索引是什么 3、elasticsearch 索引数据多了怎么办,如何调优,部署 4、elasticsearch 是如何实现 master 选举的 5、详细描述一下 Elasticsearch 索引文档的过程 6、详细描述一下 Elasticsearch 搜索的过程? 7、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法 8、lucence

搭建redis集群

笑着哭i 提交于 2019-12-25 14:03:56
什么是Redis集群 简介 Redis是一个快速高效的NoSQL型数据库,由于其基于内存存储、单线程、多路IO复用的特性,其QPS可以达到惊人的100000+(官方数据),但是即使有这么高的速度,在中国这么大的网民基数环境下,也存在着性能瓶颈。 首先抛开服务器故障不谈,Redis集群首先可以使Redis性能得到线性提高,这是毋庸置疑的,其次Redis集群除了解决了效率问题,还可以解决服务器宕机造成的数据丢失问题,当某个Redis节点宕机,剩下的节点会继续工作,并不会影响整体集群的使用,从而实现 高可用 。 Redis单机模式有什么问题 单机故障 在单机模式下的Redis,我们的应用中所有需要缓存的数据都依赖一台Redis服务器,应用的流量小可能看不出什么问题,但是随着应用越来越大,流量越来越大,如果出现服务器宕机或者断电的状况,那么我们的应用整个一个缓存层在一段时间内(重启)都将不复存在。 先不谈基于Redis的分布式Session可能造成的问题,如果恰好遇上流量高峰,这些流量直接打在数据库上,我们知道数据库的IO效率远不及Redis,这将大大提高应用负载,容易出现数据库服务器的宕机,从而造成应用的宕机。 由此看来,单机版Redis如果出现故障,将有可能引起一系列的连锁反应,造成不可逆的损失。 容量瓶颈 我们知道Redis是基于内存存储的一个NoSQL数据库

分布式缓存Redis使用心得

我的未来我决定 提交于 2019-12-25 13:32:51
一、缓存在系统中用来做什么 1. 少量数据存储,高速读写访问。通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。 2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。Redis3.0以后开始支持集群,实现了半自动化的数据分片,不过需要smart-client的支持。 二、从不同的角度来详细介绍redis 网络模型:Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。 内存管理:Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。 数据一致性问题:在一致性问题上

Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用

萝らか妹 提交于 2019-12-25 12:07:14
一、介绍 高可用,大家可能会想到比较简单的Keepalived,或者更早一点的 heartbeat,也可能会用到 Corosync+Pacemaker,那么他们之间有什么区别。 Heartbeat到了v3版本后,拆分为多个子项目:Heartbeat、cluster-glue、Resource Agent、Pacemaker。 Heartbeat:只负责维护集群各节点的信息以及它们之前通信。 Cluster-glue:当于一个中间层,可以将heartbeat和crm(pacemaker)联系起来,主要包含2个部分,LRM和STONITH; Resource Agent :用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。 pacemaker:原Heartbeat 拆分出来的资源管理器,用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。 它不能提供底层心跳信息传递的功能,它要想与对方节点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方。 Pacemaker 配置文件比较不太容易修改,可以使用命令行界面的crmsh、pcs和图形化界面pygui、hawk等进行管理,看个人喜好。 Heartbeat 和 Corosync 的区别: 1、经过安装heartbeat

使用kubeadm安装Kubernetes 1.15

假装没事ソ 提交于 2019-12-25 00:21:11
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。 1.准备 1.1系统配置 [root@k8s-master ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.246 k8s-master 192.168.0.247 k8s-node1 192.168.0.248 k8s-node2 如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙: systemctl stop firewalld systemctl disable firewalld 禁用SELINUX: setenforce 0 vi /etc

大数据(hadoop)

人盡茶涼 提交于 2019-12-24 23:48:45
大数据基础平台 大数据:通俗就是收集、分析、处理大量的数据,然后从中获得结果的技术总称 大数据应用领域 广告、金融、能源生物、安全、电商等等 大数据的技术 批处理框架 历史性数据,有源有结束点 离线型数据 能处理全部的历史性数据 Apache MapReduce 流处理框架 处理实时性数据 源源不断的处理数据 Apache samza Apache storm 混合处理框架 既有批处理也有流处理 Apache flink Apache spark 项目定义 可靠的,可扩展的开源软件 是一个大数据处理框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 可以从单个服务器扩展到数千台计算机 集群中的媚态计算机都提供本地计算和存储 集群不是依靠硬件来提供高可用性,而是设计了用于检测和处理应用程序层的故障,从而在计算机集群上提供高可用性服务。 hadoop的核心项目 hadoop分布式文件系统(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。 hadoop YARN:作业调度和集群资源管理的框架。 hadoop MapReduce: 基于YARN的系统,用于并行处理大型数据集。 相关项目 Apache的其他Hadoop相关项目: Hadoop Common:支持其他Hadoop模块的常用实用程序 Ambari: 基于web的工具,用于配置

二进制部署k8s 1.15.3

霸气de小男生 提交于 2019-12-24 15:14:54
二进制部署k8s 1.15.3 自带补全 source <(kubectl completion bash) kubectl get csr kubectl certificate approve XXXXID kubectl get node minikube Minikube是一个工具,可以在本地快速运 行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方地址:https://kubernetes.io/docs/setup/minikube/ kubeadm Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ 二进制包 从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 小结: 生产环境中部署Kubernetes集群,只有Kubeadm和二进制包可选,Kubeadm降低部署门槛,但屏蔽了 很多细节,遇到问题很难排查。我们这里使用二进制包部署Kubernetes集群,我也是推荐大家使用这种方式,虽然手动部署麻烦点,但学习很多工作原理,更有利于后期维护。 软件环境 软件 版本 操作系统

大数据篇[Hadoop]-01

我的梦境 提交于 2019-12-24 14:48:50
如约而至,你们好我是AC,就是啊晨的意思, 今天讲hadoop,是大数据开发工程师必备技术之一 好吧,废话不多说,跟我一起,先入个hadoop的门吧 文章目录 什么是Hadoop? 简单叙述: 发展历史 Hadoop特点 核心组成 HDFS架构概述 一、HDFS简介 二、HDFS组成结构以及各部分作用 1.Client(客户端) 2.NameNode(书的目录) 3.DataNode(实际的内容) 4.Secondary NameNode(辅助NameNode) YARN架构概述 MapReduce架构概述 大数据生态体系(了解知识扩展) 什么是Hadoop? 简单叙述: 为了方便理解简单叙述,关于正式介绍,百度了解即可,我就稍微总结下吧 由Apache基金会所开发的分布式系统基础架构,广泛的概念-hadoop生态圈 架构:项目整体的布局方式 集群:多个机器共同完成一件事 分布式:多个集群做不同的事 集群不一定是分布式,分布式一定是集群 主要解决:海量数据的存储和海量数据的分析计算问题。 发展历史 Lucene–Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 2001年年底成为apache基金会的一个子项目 可以说Google是hadoop的思想之源

【分布式缓存系列】集群环境下Redis分布式锁的正确姿势

匆匆过客 提交于 2019-12-24 12:03:03
一、前言   在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 客户端1在Redis的master节点上拿到了锁 Master宕机了,存储锁的key还没有来得及同步到Slave上 master故障,发生故障转移,slave节点升级为master节点 客户端2从新的Master获取到了对应同一个资源的锁   于是,客户端1和客户端2同时持有了同一个资源的锁。锁的安全性被打破了。针对这个问题。Redis作者antirez提出了RedLock算法来解决这个问题 二、RedLock算法的实现思路   antirez提出的redlock算法实现思路大概是这样的。   客户端按照下面的步骤来获取锁: 获取当前时间的毫秒数T1。 按顺序依次向N个Redis节点执行获取锁的操作。这个获取锁的操作和上一篇中基于单Redis节点获取锁的过程相同。包括唯一UUID作为Value以及锁的过期时间(expireTime)。为了保证在某个在某个Redis节点不可用的时候算法能够继续运行,这个获取锁的操作还需要一个超时时间。它应该远小于锁的过期时间。客户端向某个Redis节点获取锁失败后,应立即尝试下一个Redis节点

Hadoop 集群常见错误

半腔热情 提交于 2019-12-24 11:25:20
(一)启动 hadoop 集群时易出现的错误: 1. 错误现象: java.net.NoRouteToHostException: No route to host. 原因: master 服务器上的防火墙没有关闭。 解决方法 : 在 master 上关闭防火墙 : chkconfig iptables off. 2. 错误现象 : org.apache.hadoop.ipc.RPC: Server at JMN/10.22.1.203:9000 not available yet. /* JMN/10.22.1.203 是 hadoop 集群当中 master 的主机名 /ip */ 原因 : / etc/hosts 中的文件被自动篡改。 解决方法 : 将 /etc/hosts 文件按配置文件要求改回来。 3. 错误现象 : Too many fetch-failures. 原因: 结点间的连通不够全面 。 解决方法: 1) 检查 /etc/hosts 要求本机 ip 对应服务器名,并且包含所有的服务器 ip 和服务器名。 2) 检查 .ssh/authorized_keys 要求包含所有服务器(包括其自身)的 public key 。 (二) 在 hadoop 集群的 master 中用命令运行例子易出现的故障: 1. 错误现象: java.lang