redis集群的安装部署
1.下载redis的稳定版本
wget https://download.redis.io/redis-stable.tar.gz
2..安装redis软件
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
make install
编译过程中提示报错,需要安装gcc
3.编译配置文件
7001服务
port 7001 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7001.pid #修改PID文件名
dir /opt/redis-cluster/7001/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7001.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
7002服务
port 7002 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7002.pid #修改PID文件名
dir /opt/redis-cluster/7002/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7002.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
7003服务
port 7003 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7003.pid #修改PID文件名
dir /opt/redis-cluster/7003/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7003.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
7004服务
port 7004 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7004.pid #修改PID文件名
dir /opt/redis-cluster/7004/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7004.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
7005服务
port 7005 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7005.pid #修改PID文件名
dir /opt/redis-cluster/7005/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7005.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
7006服务
port 7006 #修改端口
bind 10.3.10.20 #修改为对应主机IP地址
daemonize yes
pidfile /var/run/redis_7006.pid #修改PID文件名
dir /opt/redis-cluster/7006/data #定义存储文件夹
cluster-enabled yes
cluster-config-file nodes-7006.conf #修改集群文件名
cluster-node-timeout 5000
appendonly yes
4.启动服务
1.拷贝redis-server到服务目录
cd /opt/redis-clustercp /opt/redis-cluster/redis-stable/src/redis-server 7001cp /opt/redis-cluster/redis-stable/src/redis-server 7002cp /opt/redis-cluster/redis-stable/src/redis-server 7003cp /opt/redis-cluster/redis-stable/src/redis-server 7004cp /opt/redis-cluster/redis-stable/src/redis-server 7005cp /opt/redis-cluster/redis-stable/src/redis-server 70062.启动服务./redis-server redis-7001.conf
./redis-server redis-7002.conf
./redis-server redis-7003.conf
./redis-server redis-7004.conf
./redis-server redis-7005.conf
./redis-server redis-7006.conf
5.安装集群所需的软件
yum install ruby rubygems -ygem install redis 升级rubygems gemcurl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm requirements
source /usr/local/rvm/scripts/rvmrvm install 2.4.0
rvm use 2.4.0gem install redis 以上安装防范,安装的rubygems gem版本太低,可以考虑源码安装,如下:
下载软件包
wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.gz
解压缩
tar zxvf ruby-3.1.2.tar.gz
安装
cd ruby-3.1.2
./configure --prefix=/opt/rubymake && make install
ln -s /opt/ruby/bin/ruby /usr/bin/ruby
ln -s /opt/ruby/bin/gem /usr/bin/gem
查看版本
ruby -v
安装rubygem redis依赖:
wget http://rubygems.org/downloads/redis-4.1.0.gem
gem install -l redis-4.1.0.gem
上一步中已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下。那么这个ruby脚本工具在哪里呢?之前提到过,在redis源码解压文件的源代码里,即redis/src目录下的redis-trib.rb文件。
cd redis/src
cp redis-trib.rb /usr/local/redis-cluster
6.组建集群
cd /opt/redis-cluster/redis-stable/src
./redis-cli --cluster create 10.3.10.20:7001 10.3.10.20:7002 10.3.10.20:7003 10.3.10.20:7004 10.3.10.20:7005 10.3.10.20:7006 --cluster-replicas 1
集群输出如下
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 10.3.10.20:7005 to 10.3.10.20:7001
Adding replica 10.3.10.20:7006 to 10.3.10.20:7002
Adding replica 10.3.10.20:7004 to 10.3.10.20:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: cf656ddf619b566a48d15b7f076e6d773d646895 10.3.10.20:7001slots:[0-5460] (5461 slots) master
M: acb4146d7e15c2799cc1c9bb0d34d02e568bde13 10.3.10.20:7002slots:[5461-10922] (5462 slots) master
M: 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3 10.3.10.20:7003slots:[10923-16383] (5461 slots) master
S: 8345ec77e8795dcce9dde5c61bf10939150c290a 10.3.10.20:7004replicates acb4146d7e15c2799cc1c9bb0d34d02e568bde13
S: 66c43b50c6e8fc8101502d7466379899305df17f 10.3.10.20:7005replicates 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3
S: ab8f6e8c1ffcf48d6903b15fbe58e6ce4e2ad117 10.3.10.20:7006replicates cf656ddf619b566a48d15b7f076e6d773d646895
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 10.3.10.20:7001)
M: cf656ddf619b566a48d15b7f076e6d773d646895 10.3.10.20:7001slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 8345ec77e8795dcce9dde5c61bf10939150c290a 10.3.10.20:7004slots: (0 slots) slavereplicates acb4146d7e15c2799cc1c9bb0d34d02e568bde13
M: acb4146d7e15c2799cc1c9bb0d34d02e568bde13 10.3.10.20:7002slots:[5461-10922] (5462 slots) master1 additional replica(s)
M: 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3 10.3.10.20:7003slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: ab8f6e8c1ffcf48d6903b15fbe58e6ce4e2ad117 10.3.10.20:7006slots: (0 slots) slavereplicates cf656ddf619b566a48d15b7f076e6d773d646895
S: 66c43b50c6e8fc8101502d7466379899305df17f 10.3.10.20:7005slots: (0 slots) slavereplicates 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
7.组建集群报错
[ERR] Node 10.3.10.20:7001 DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface. If you want to connect from exters to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SUREt publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and thg the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a an authentication password for the default user. NOTE: You only need to do one of the above things in order for the servaccepting connections from the outside.
解决方式
在配置文件增加
masterauth "redis"
requirepass "redis"
重启redis进程
之后使用如下命令创建集群
./redis-cli --cluster create 10.3.10.20:7001 10.3.10.20:7002 10.3.10.20:7003 10.3.10.20:7004 10.3.10.20:7005 10.3.10.20:7006 --cluster-replicas 1 -a htjs
8.集群验证
./redis-cli -c -h 10.3.10.20 -p 7001 -a htjs
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.3.10.20:7001>
10.3.10.20:7001>
10.3.10.20:7001>
10.3.10.20:7001>
10.3.10.20:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:480
cluster_stats_messages_pong_sent:471
cluster_stats_messages_sent:951
cluster_stats_messages_ping_received:466
cluster_stats_messages_pong_received:480
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:951
total_cluster_links_buffer_limit_exceeded:0
10.3.10.20:7001> cluster nodes
8345ec77e8795dcce9dde5c61bf10939150c290a 10.3.10.20:7004@17004 slave acb4146d7e15c2799cc1c9bb0d34d02e568bde13 0 1658303013066 2 connected
acb4146d7e15c2799cc1c9bb0d34d02e568bde13 10.3.10.20:7002@17002 master - 0 1658303013568 2 connected 5461-10922
419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3 10.3.10.20:7003@17003 master - 0 1658303014572 3 connected 10923-16383
ab8f6e8c1ffcf48d6903b15fbe58e6ce4e2ad117 10.3.10.20:7006@17006 slave cf656ddf619b566a48d15b7f076e6d773d646895 0 1658303012564 1 connected
66c43b50c6e8fc8101502d7466379899305df17f 10.3.10.20:7005@17005 slave 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3 0 1658303014069 3 connected
cf656ddf619b566a48d15b7f076e6d773d646895 10.3.10.20:7001@17001 myself,master - 0 1658303014000 1 connected 0-5460
10.3.10.20:7001>
二.手工创建redis-cluster集群
(1)redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis5.05版本;
(2)redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;
(3)Redis 集群会将用户数据分散保存至各个节点中,突破单机 Redis 内存最大存储容量。集群引入了 哈希槽slot的概念,其搭建完成后会生16384个哈希槽slot,同时会根据节点的数量大致均等的将16384个哈希槽映射到不同的节点上。当用户存储key-value时,集群会先对key进行CRC16校验然后对16384取模来决定key-value放置哪个槽,从而实现自动分割数据到不同的节点上。故每个Redis集群理论上最多可以有16384个节点。
(4)Redis 集群支持主从复制和故障恢复。集群使用了主从复制模型,每个主节点master应至少有一个从节点slave。假设某个主节点故障,其所有子节点会广播一个数据包给集群里的其他主节点来请求选票,一旦某个从节点收到了大多数主节点的回应,那么它就赢得了选举,被推选为主节点,负责处理之前旧的主节点负责的哈希槽。
具体操作
1.启动redis服务
./redis-server redis-7001.conf
./redis-server redis-7002.conf
./redis-server redis-7003.conf
./redis-server redis-7004.conf
./redis-server redis-7005.conf
./redis-server redis-7006.conf
./redis-cli -h 10.3.10.20 -a htjs -p 700110.3.10.20:7001> cluster meet 10.3.10.20 700210.3.10.20:7001> cluster meet 10.3.10.20 700310.3.10.20:7001> cluster meet 10.3.10.20 700410.3.10.20:7001> cluster meet 10.3.10.20 700510.3.10.20:7001> cluster meet 10.3.10.20 7006
3.分配槽位
redis-cli -h 10.3.10.20 -p 7001 -a htjs cluster addslots {0...5461}
redis-cli -h 10.3.10.20 -p 7002 -a htjscluster addslots {5462...10922}
redis-cli -h 10.3.10.20 -p 7003 -a htjs cluster addslots {10923...16383}
Redis 集群成功上线之后,要给主节点指定从节点,这样实现集群的高可用。使用 cluster replicate {nodeId}命 命令手动给从节点配置主节点。其中命令执行必须在对应的 从节点上执行,nodeId是要复制主节点的节点ID。
./redis-cli -h 10.3.10.20 -a htjs -p 700410.3.10.20:7004>cluster replicate cf656ddf619b566a48d15b7f076e6d773d64689510.3.10.20:7005>cluster replicate acb4146d7e15c2799cc1c9bb0d34d02e568bde1310.3.10.20:7006>cluster replicate 419bfdab0a4cfcfa3ee78ef8bfaad59f968cbee3
redis集群的安装部署相关推荐
- Redis集群如何安装
Redis集群如何安装 集群 安装步骤 安装gcc 解压redis 包 make make install 目录解析 创建redis-cluster 修改节点配置 star-all脚本 shutdow ...
- Hadoop伪分布式集群的安装部署
Hadoop伪分布式集群的安装部署Hadoop伪分布式集群的安装部署 首先可以为Linux虚拟机搭建起来的最初状态做一个快照,方便后期搭建分布式集群时多台Linux虚拟机的准备. 一.如何为虚拟机做快 ...
- Apache HAWQ集群的安装部署
最近Pivotal公司发布了Apache HAWQ的企业版HDB 2.0,因功能强大,性能出色,很多人已经迫不及待想要安装来玩玩了.今天我们就来聊聊怎么部署强大的HAWQ 2.0吧. 企业版的HAWQ ...
- Redis集群命令行部署工具
使用之前准备工作: 1)配置好与端口无关的公共redis.conf文件,和工具放在同一目录下 2)配置好与端口相关的模板redis-PORT.conf文件,也和工具放在同一目录下(部署时PORT会被替 ...
- redis集群环境安装(参照redis中文官网,中间遇到了一些问题,so,记录一下)
创建步骤 01. 准备环境 # yum install gcc # yum install ruby # yum install ruby-devel.x86_64 # yum install rub ...
- 在现有K8S集群上安装部署JenkinsX
在2018年年初,Jenkins X首次发布,它由Apache Groovy语言的创建者Jame Strachan创建.Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins ...
- redis集群linux安装教程,linux下redis集群的原生安装方式部署
一.部署架构如下 每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从. 二.准备6个节点配置文件 在172.28.18.75上操作 cd /etc/redis ...
- 【Storm】Storm简介及Storm集群的安装部署
1.Storm概述 (1)Storm简介 Storm最早是由BackType公司开发的实时处理系统,底层由Clojure实现.Clojure也是一门基于JVM的高级面向函数式的编程语言.2011年Tw ...
- ceph集群简单安装部署(Ubuntu14环境)
本次测试.为了快速地安装,所以把目录而非整个硬盘用于 OSD 守护进程.后面的 后面的测试还将会有使用硬盘来作为OSD数据盘 测试机规划 节点名称 IP 地址 部署进程 系统盘 数据盘 ceph1 e ...
最新文章
- [翻译]一步步教你配置SQL SERVER合并复制(五)配置Publisher(上)
- java jdkxp32_java运行环境(jre-8u65-windows-i586) 官方安装版 32位
- JEPLUS平台首页规划简单介绍——JEPLUS软件快速开发平台
- HBuilder、HBuilderX连接夜神模拟器
- 少儿编程100讲轻松学python(六)-pycharm怎么汉化?
- easyui确认取消弹窗_Jquery EasyUI中弹出确认对话框
- HashMap 和 ConcurrentHashMap 的区别
- (转载)一片文章带你理解再生核希尔伯特空间(RKHS)以及各种空间
- 蓝牙冒充攻击(BIAS),无线安全不可忽视
- 雷允上药业百年老店回春
- 币种对应的转换因子(处理日元台币…
- 用PHOTOSHOP给图片打马赛克
- Docker的volumes踩坑
- chrome 谷歌浏览器模拟各种手机设置userAgent
- 图片大小自适应垂直居中的方法
- uml通信图画法_[UML]UML系列——协作图(通信图)collaboration diagram
- Python 电影评分分析
- 大数据可视化热门工具
- 【分享贴】硬件电路设计思路
- limma:RNA-Seq Data
热门文章
- HSDPA(WCDMA增强技术)(转)
- 华为3g网卡 linux,华为Huawei E1550 HSDPA 3G网卡在Ubuntu 10.04 LTS中的使用
- 彻底解决中文乱码,然后升级后英文改为中文
- 小米mix3 android os是什么,小米MIX 3
- MySQL下载和安装 win10 64位 MySQL8.0
- EVE-NG 添加win7 镜像
- 我的世界重置服务器文件指令,我的世界spigot后台文件指令解读
- Linux下实现文件实时同步(rsync命令+rsync作为服务+xinetd托管rsync)
- 数据结构排序算法 内部排序(冒泡、鸡尾酒、选择、简单插入、二分插入、快排、希尔、归并、堆排)C语言实现
- Linux —— tftp 使用