当你试图解决一个你不理解的问题时,复杂化就产成了。—Andy Boothe

Redis集群安装部署

Redis是一个运行在内存的非关系型数据库,因为其速度快(效率高),支持数据的持久化(安全),事务操作的原子性(所有操作的原子性),使得其在高并发场景下广泛使用。Redis也常常在高并发场景下作为缓存服务器的角色进行使用,在《大型网站技术架构:核心原理与案例分析》中提到:高并发场景下性能的优化优先考虑缓存。常用的缓存服务有Redis,MongoDB等。


Redis下载

在Redis官方网站上可以在Download it选项中获取到Redis的最新版本或者旧版本,本地搭建我使用的是redis-5.0.9.tar.gz版本,比较稳定。可以使用wget命令下载相关压缩包,并对压缩包进行解压如下:

  wget http://download.redis.io/releases/redis-5.0.9.tar.gz  tar -zxvf redis-5.0.9.tar.gz -C ~/cache/

Redis的编译和安装

首先我们需要确定我们集群的规模,这里建立集群6个节点,三个master节点,三个slave节点。首先我们切换目录到上一步骤的解压目录,cd redis6379,然后执行makemake install命令对Redis进行安装。然后,我们建立集群目录。在Redis集群搭建的过程中主要是Redis的配置文件Redis.conf文件中的配置不同而已,这里我直接拷贝的编译后的Redis目录。可以得到如下节点分布情况:


更改Redis配置为集群模式

因为在同一台电脑上搭建的Redis集群,所以需要修改Redis的端口号来标识不同的进程,并开启集群模式。六台实例的端口号分布在6379~6384,详细配置如下:

参数 参数值 额外说明
bind Ip地址 外部可访问IP
port 端口号 需要确认端口是否已被占用
daemonize 后台进程 设置为yes
pidfile 进程文件 修改为对应端口号
cluster-enabled 集群模式 设置为yes
cluster-config-file nodes_7000.conf 首次启动自动生成
cluster-node-timeout 15000 请求超时时间,默认15s
appendonly yes aof日志开启

Redis启动脚本

path=`pwd`for dic in `ls $path`do   if [[ ${dic} == redis* ]] && [[ -d ${dic} ]];then     path=${dic}'/src'     cd ${path}     ./redis-server ../redis.conf     cd ../../   fidone

保存到文件,start-cluster.sh文件中,并执行。

检查Redis启动情况


创建集群

在启动集群命令时,我遇到了比较多的问题需要处理,详细问题如下:

  1. ruby版本过低
  2. 执行gem install redis 超时 等问题。

关于问题一:需要卸载安装高版本的ruby。我本地虚拟级安装的为2.5.3版本。主要步骤包括卸载,安装,设置环境变量,安装redis等步骤,详情如下:

  # 卸载  yum remove ruby  # 下载新版本  wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz  # 解压安装  tar zxvf ruby-2.5.3.tar.gz  cd ruby-2.5.3  ./configure --prefix=/usr/local/ruby  make  make install  # 配置环境  export PATH=$PATH:/root/pl/ruby-2.5.3/bin >>/etc/profile  source /etc/profile  # 验证  ruby -version

然后就可以执行

  gem install redis

关于问题二:因为ruby的源是国外的,导致执行gem install redis超时卡死,需要更新yum源头,可按照如下方式更新:可以拷贝如下命令:

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

处理完以上的问题我们就可以创建集群了,创建集群前,我们已经启动了所有的Redis节点,所以:

./redis-cli --cluster create IP:6380  IP:6381  IP:6382 IP:6383 IP:6384 --cluster-replicas 1

可以大致看一下集群关系:

./redis-cli -h IP -p 6379 -c cluster slots | xargs  -n8 | awk '{print $3":"$4"->"$6":"$7}' | sort -nk2 -t ':' | uniq

执行上面的命令,我们可以得出下面的结果

IP:6379(master)->IP:6383(slave)IP:6380->IP:6384IP:6381->IP:6382

我们测试一下:

IP:6379> sadd aaa ccc-> Redirected to slot [10439] located at 192.168.64.134:6380(integer) 1

执行成功,其实Redis集群搭建远远不止这些,后面还会结合Zookeeper对Redis节点进行协调,并设置哨兵等问题对改文档进行更改。希望大家多多关注!!!

redis 集群搭建_Redis分布式缓存分布式集群搭建相关推荐

  1. redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建

    当你试图解决一个你不理解的问题时,复杂化就产成了.-Andy Boothe Redis集群安装部署 Redis是一个运行在内存的非关系型数据库,因为其速度快(效率高),支持数据的持久化(安全),事务操 ...

  2. 分布式面试全家桶:分布式事务+分布式锁+分布式缓存+分布式面试题+分布式项目

    一.分布式事务 1.分布式事务简介 2.Seata简介 3.Seata-Server安装 4.Seata配置Nacos注册中心和配置中心 5.Seata-AT模式   6.XA协议 7.Seata整体 ...

  3. codis配置_分布式缓存Codis集群安装手册

    安装Go环境 解压 tar -zxf go1.8.linux-amd64.tar.gz -C /home/devops/ 添加环境变量 vim ~/.bash_profileexport GOPATH ...

  4. 黑群晖docker清理缓存_黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透

    黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透 2020-04-15 11:32:08 25点赞 241收藏 27评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇 ...

  5. 19 分布式缓存集群的伸缩性设计

    不同于应用服务器集群的伸缩性设计,分布 式缓存集群的伸缩性不能使用简单的负载均衡手段来实现. 和所有服务器都部署相同应用的应用服务器集群不同,分布式缓存服务器集群中不同服务器中缓存的数据各不相同,缓存 ...

  6. 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)

    高性能分布式缓存Redis 高性能分布式缓存Redis 1. 缓存发展史&缓存分类 1.1 大型网站中缓存的使用 1.2 常见缓存的分类 1.3 分布式缓存选型方案对比 2. Redis概述& ...

  7. 缓存为王:老码农眼中的分布式缓存

    本文来自作者 老曹 在 GitChat 上分享 「缓存为王:老码农眼中的分布式缓存」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 世界是相似的,在商业的世界中,有一句经典语录叫 &quo ...

  8. 如何在 ASP.Net Core 使用 分布式缓存

    ASP.Net Core 提供了多种类型的缓存,除了内存缓存和响应缓存之外,还提供了对 分布式缓存 的支持.在之前的一篇文章中,我讨论了 ASP.Net Core 的内存缓存.在本文中,我们将讨论如何 ...

  9. 服务端分布式缓存与本地缓存

    缓存技术是保障系统性能的基础技术.核心技术. 缓存发挥的作用 ① 最大程度上避免对数据库的并发查询,从而降低因为数据库资源不足导致的系统故障. ② 提升系统的响应速度,保证用户体验 总之缓存使系统稳定 ...

最新文章

  1. JavaScript快速上手入门
  2. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)
  3. php获取ip写到文本,php 文本转HTML与获取IP函数
  4. ZKWeb网站框架的动态编译的实现原理
  5. android 处理鼠标滚轮事件 【转】
  6. 【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列
  7. 深入浅出MFC学习笔记 消息
  8. mysql中起飞到达城市查询_让mysql慢慢起飞 - 初识慢日志
  9. 取得数组最大值与最小值
  10. 用JavaScript校验日期的合法性
  11. arsc编辑器手机版_APK编辑器中文版,任意修改你手机中的APP名称、logo!
  12. Android NFC 标签读写读取快速开发教程 ( 整理来自 https://blog.csdn.net/wolfking0608/article/details/72675180 )
  13. 2.5D 组态案例合集 | 智慧园区、数据中心、SMT 生产线、汽车制造
  14. 《数字孪生》(Yanlz+VR元宇宙+Unity+SteamVR+云技术+5G+AI+虚拟现实+数字映射+仿真+物理模型+传感器更新+运动历史+多学科+多物理量+多尺度+多概率+立钻哥哥++==)
  15. 运用三角不等式加速Kmeans聚类算法
  16. 笔记本电脑上网出现问题的解决方法
  17. 空间直角坐标系、大地坐标系、平面坐标系、高斯平面直角坐标系
  18. AdB android 投屏 usb,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...
  19. 【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
  20. Adobe Photoshop CS5 标准版新增功能

热门文章

  1. 在 Java 中如何优雅地判空
  2. 程序员的核心竞争力究竟是什么?
  3. 2018 年值得关注的 Web 设计趋势
  4. linux服务器密码策略,windows与linux服务器平台密码策略管理
  5. 2015c语言成绩查询,2015年3月全国计算机二级C语言选择第1套
  6. mxnet insightface特征提取
  7. 生成tfreocrds
  8. applicationContext.xml中设置读取jdbc.properties文件
  9. freeimage边缘检测
  10. matlab axes标题,Matlab 坐标轴(axes),数据提示(data cursor),标题(title)等的默认字体问题...