Redis-cluster集群 + ElasticSeach
1.Redis-cluster集成
学习之前,首先要弄清楚什么是集群,为什么我们要使用集群
1.1什么是集群:
集群就是 很多服务器组成的一个网络。指的是将多台服务器集中在一起,实现同一业务。
1.2为什么要集群:
一台服务器不能满足开发需要的时候,需要多台服务器来支持。这个时候就需要做集群,但是集群往往伴随着分布式;
1.3分布式是什么:
分布式是指将不同的业务分布在不同的地方
1.4 集群提供了以下两个关键特性:
1、可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。动态添加服务器
2、高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性
当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器。
2)两大能力
为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:
1、负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。
2、错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
当访问的服务器挂了时,集群要有能力找可以正常使用额服务器继续提供服务器。
1.5分布式和集群相同点和不同点?
相同点:
都是处理高并发,而且都需要多台服务器协同.一般在一个系统中同时存在分布式和集群.
不同点:
分布式中不同服务器处理是不同业务.而集群处理时同一业务.
1.6为什么redis要做集群
(1)防止单点故障
(2)处理高并发-太多请求一台服务器搞不定
(3)处理大量数据-太多内存数据一台服务器搞不定
Redis集群方案选择
方案1 主从复制 方案2 哨兵模式 方案3 Redis-Cluster集群(采纳)
要求(采用方案3)
1)Redis 3.2
需要 6 台 redis 服务器。搭建伪集群。
需要 6 个 redis 实例。
需要运行在不同的端口 6379-6384
2)Ruby语言运行环境 我们需要使用ruby脚本来实现集群搭建
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名
3)RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统
4)Redis的Ruby驱动redis-xxxx.gem
5)创建Redis集群的工具redis-trib.rb
2.2搭建
要让集群正常运作至少需要3个主节点,建议配置3个主节点,其余3个作为各个主节点的从节点(也是官网推荐的模式)。同一台电脑,不同端口模拟
1)安装并拷贝6个服务器
2)进行配置
打开每个Redis目录下的文件 redis.windows.conf,修改里面的端口号分别对应相对应的文件夹名:6379、6380、6381、6382、6383、6384。
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
3)编写启动脚本,或者进入每个端口命名的文件夹下启动服务
方便启动
编写一个 bat 来启动 redis,在每个节点目录下建立 startup.bat,内容如下:
title redis-6379
redis-server.exe redis.windows.conf
title命名规则 redis-相对应的端口。
4)安装Ruby
redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境
5)安装Redis的Ruby驱动redis-xxxx.gem
下载地址 https://rubygems.org/pages/download
下载后解压,当前目录切换到解压目录中,如 D:\Program Files\Redis_cluster\rubygems-2.7.7 然后命令行执行 ruby setup.rb
再用 GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis
6)启动每个节点并且执行集群构建脚本
点击每个节点start.bat进行启动
拷贝redis-trib.rb到6379的redis节点
执行命令
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下:
注意事项:
1)现在是windows搭建的,以后再linux.只是redis安装与启动不一样其他都是一样的.
2)5.0以上版本兼容
如果出现 redis-trib.rb is not longer available! 如果redis版本是5.0以上,则使用如下命令:
redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 12
1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1
原因是redis5.0以上不再需要redis-trib.rb了,而是使用自带的redis-cli作为创建集群的命令了。
2.1ElasticSearch(简称ES)
2.2.安装ES
ES服务只依赖于JDK,推荐使用JDK1.7+。
① 下载ES安装包
官方下载地址:https://www.elastic.co/downloads/elasticsearch
② 运行ES
bin/elasticsearch.bat
③ 验证
访问:http://localhost:9200/
看到上图信息,恭喜你,你的ES集群已经启动并且正常运行.
2.3辅助管理工具Kibana5
① Kibana5.2.2下载地址:https://www.elastic.co/downloads/kibana
② 解压并编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES
③ 启动Kibana5 : bin\kibana.bat
④ 默认访问地址:http://localhost:5601
Discover:可视化查询分析器
Visualize:统计分析图表
Dashboard:自定义主面板(添加图表)
Timelion:Timelion是一个kibana时间序列展示组件(暂时不用)
Dev Tools :Console(同CURL/POSTER,操作ES代码工具,代码提示,很方便)
Management:管理索引库(index)、已保存的搜索和可视化结果(save objects)、设置 kibana 服务器属性。
2.4两个都安装完之后,启动
bin目录下的/elasticsearch.bat
测试 -web端口
http://localhost:9200
查询状态