云服务器的资源都是从资源池中调配组合而成。资源池,是由数十台到数百台甚至数万台服务器跨节点、跨数据中心组成,通过成熟的虚拟化技术和已部署的管理程序,共同管理虚拟池中的资源。虚拟化,就是将规模级的物理资源(CPU、内存、磁盘等)高度整合和自由分配,实现资源的d性扩容或缩减,以及快速地在不断电的前提下完成资源的变化。这就必须要有底层虚拟化技术、SDN的支持。这里主要介绍的是基于 Linux(CentOS7) 系统,不同服务器集群之前的数据迁移。Elasticsearch 可以通过快照(snapshot)相关的命令对索引进行备份和恢复。(这个备份是增量的,同一个索引在第一次备份的基础上进行第二次备份只会备份新变化的数据)
假定旧集群有三个节点,分别对应三台服务器: 192168110 、 192168111 、 192168112
在旧集群中指定 192168110 作为 NFS(Network File System)服务端,其它两台服务器作为 NFS 客户端,分别安装 NFS:
以下步骤只需要在 NFS 服务端执行。
创建数据共享目录,目录结构可以根据自己的实际情况修改:
修改配置文件:
相关参数的含义如下:
重启 NFS 服务端:
最后确保 NFS 保客户端能够访问 NFS 服务端的数据共享目录。
以下步骤需要在每台 NFS 客户端服务器执行。
在 NFS 客户端服务器创建数据挂载目录,这里方便起见,目录结构和 NFS 服务端共享目录一致:
将 NFS 服务端共享目录挂载到各个 NFS 客户端:
这样所有的 ES 节点就可以使用同一个数据共享目录。
在旧集群每个 ES 节点的 elasticsearchyml 中,设置 ES 快照仓库目录为前边 NFS 配置的数据共享目录,也就是 ES 数据要备份到的目录:
修改完成后重启 ES 服务。
连接旧集群中某一个节点发送 PUT 请求来创建快照仓库,例如使用 192168110 节点,可以使用 Postman、Kibana 发送请求:
或者直接在对应节点的服务器上执行如下命令:
创建索引的快照就是对索引进行备份,如下发送一个 PUT 请求来生成 index_1 、 index_2 索引的快照:
或者:
可以在 NFS 的数据共享目录中( /opt/data/es_backup )得到最终生成的索引快照文件。
查看快照仓库的信息:
查看指定快照:
查看仓库中所有的快照信息:
删除指定快照:
删除快照仓库:
参考文章第一部分的内容,在新集群的服务器上搭建 NFS 环境。
给新集群每个 ES 节点配置快照仓库的目录,也就是新集群中的 NFS 数据共享目录:
连接新集群中某个 ES 节点发送 PUT 请求创建快照仓库,和之前的一样:
先将旧集群中生成的索引快照文件拷贝到新集群的快照仓库目录下。
再连接集群中的某 ES 个节点,发送 POST 请求从索引快照中恢复数据:
或者:
如果不要参数,则是恢复快照中的全部索引:
一般情况下,我们会结合索引的大小,在旧群集中生成指定索引的快照文件,然后拷贝到新集群的快照仓库来恢复索引数据,恢复完后就可以删除对应的索引快照文件(如果有需要的话也可以备份起来),重复这个步骤直到所有索引数据迁移而完毕。
如果集群中的数据量比较大,比如上百个G,整个迁移过程还是比较耗时的,耐心等待吧。
分布式:服务分散部署在不同服务器组成一个整体应用,分散压力,解决高并发。
假设访问量特别大,就可以做成分布式,将一个大项目拆分出来单独运行。跟cdn一样的机制。
Redis分布式:将redis中的数据分布到不同的服务器上,每台服务器存储不同内容。Mysql集群是每台服务器都存放相同数据。分布式部署:系统应用部署在2台或以上服务器或虚拟机上,服务间通过RPC、WCF(包含WebService)等交互,即可称作分布式部署。微服务也算作分布式的一种,反之则不然。分布式优点:1、将模块拆分,使用接口通信,降低模块之间的耦合度。2、将项目拆分成若干个子项目,不同团队负责不同子项目。3、增加功能时只需再加一个子项目,调用其它系统接口即可。4、可灵活进行分布式部署。5、提高代码的复用性,比如service层,如果不采用分布式rest服务方式架构,在手机Wap商城、微信商城、PC、Android、ios每个端都要写一个service层逻辑,开发量大,难以维护和一起升级,此时可采用分布式rest服务方式共用一个service层。缺点:系统之间交互要使用远程通信,接口开发增大工作量,但利大于弊。微服务:可单独部署运行的微小服务,一个服务只完成单一功能分散能力,服务之间通过RPC等交互,至少有一个数据库。用户量过大高并发时,建议将应用拆解为多个子系统,各自隔离,独立负责功能。缺点:服务数量大,后期运维较难。分布式、微服务区别:分布式依赖整体组合,是系统的部署方式;微服务是架构设计方式,粒度更小,服务之间耦合度更低。独立小团队负责,敏捷性更高。集群:多台服务器复制部署相同应用,由负载均衡共同对外提供服务,逻辑功能仍是单体应用。项目如果跑在一台机器上,这台机器如果出现故障,或者用户请求量比较高一台机器支撑不住,网站可能就访问不了。那怎么解决呢?就需要使用多台机器,复制部署一样的程序,让几个机器同时运行网站。那怎么分发请求到所有机器上?所以负载均衡的概念就出现了。负载均衡:将请求分发以分摊服务器压力。基于反向代理能将所有的请求根据指定的策略算法,分发到不同的服务器上。实现负载均衡常用Nginx、LVS。负载均衡服务器出现问题了怎么办?所有冗余的概念就出现了。冗余:两台或多台服务器,一个主服务器,一个从服务器。假设一个主服务器的负载均衡服务器出现问题,从服务器能替代主服务器来继续负载均衡。实现的方式就是使用Keepalive来抢占虚拟主机。双机双工模式:目前Cluster(集群)的一种形式,两台服务器均为活动状态,同时运行相同的应用,保证整体的性能,也实现了负载均衡和互为备份。WEB服务器或FTP服务器等用此种方式比较多。实现多台服务器代码(文件)同步方案:1、负载均衡中实现代码同步rsync。2、rsync+inotify逐一文件监听并实时同步。3、实现redis共享session。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)