redis4.0.x集群创建及验证
redis集群 配置参数
redis集群配置参数
在Redis集群中,需要配置以下参数:
1. cluster-enabled:设置为yes来启用集群模式。
2. cluster-config-file:指定集群配置文件的路径。
3. cluster-node-timeout:指定集群节点之间的超时时间。
4. cluster-announce-ip:指定集群节点的IP地址。
5. cluster-announce-port:指定集群节点的端口号。
6. cluster-announce-bus-port:指定集群节点之间通信的端口号。
7. cluster-require-full-coverage:设置为yes来要求所有槽位都要有节点才能正常工作。
8. cluster-migration-barrier:设置为yes来阻止在槽迁移期间的对数据的写入操作。
这些参数可以在Redis的配置文件redis.conf中进行设置。
在配置文件中找到对应的参数进行修改并重启Redis服务即可生效。
Redis高可用集群搭建教程
Redis高可用集群搭建教程Redis是广受欢迎的内存数据库,其高效性和可扩展性备受推崇。
然而,像所有分布式系统一样,Redis同样存在单点故障问题,这使得其可用性变得脆弱。
为了解决这个问题,我们可以使用Redis高可用集群来提高Redis系统的可用性。
本文将介绍如何搭建一个Redis高可用集群。
Redis高可用集群概述Redis高可用集群最初是由Antirez等Redis核心开发人员在Ruby on Rails平台上开发的。
Redis高可用集群是一个易于扩展的,高性能的,支持自动主从切换,自动容错的Redis集群,其提供了数据备份和恢复的方案。
高可用集群通过将Redis的数据分布在多个节点上来提高可用性。
每个节点都是一个独立的Redis实例,可以分别读取和写入数据。
当一个节点失效时,集群仍然可以继续工作。
Redis高可用集群实现原理Redis高可用集群采用的是分布式系统中常用的主从复制模式。
集群中每个节点都可以成为一个主节点和一个从节点,主节点负责写入和读取所有数据,而从节点只负责读取。
在Redis高可用集群中,主节点将数据分片分发到从节点上。
每个从节点都保存一个与主节点的复制副本。
这样,当主节点失效时,从节点可以自动接管其角色,成为新的主节点。
Redis高可用集群搭建步骤步骤1:安装Redis首先,我们需要安装Redis并在系统中启动Redis服务。
我们可以从官方网站上下载Redis二进制发行版。
一旦下载安装包,我们就可以解压缩该文件并在系统上安装Redis。
启动Redis服务后,我们可以通过以下命令查询Redis是否在运行:$ redis-cli ping步骤2:配置Redis节点在Redis集群中,节点使用配置文件来定义自己的数据备份和复制关系。
Redis配置文件通常位于/etc/redis/下。
我们需要在所有节点上创建一个配置文件,并对其进行配置。
在配置文件中,我们需要指定以下参数:- bind:我们可以使用bind参数指定Redis节点监听的IP地址或主机名- port:指定Redis节点监听的端口号- cluster-enabled yes:启用Redis集群功能- cluster-config-file nodes-6379.conf:指定节点配置文件的名称。
【搭建rediscluster集群,JedisCluster带密码访问解决当中各种坑!】
【搭建rediscluster集群,JedisCluster带密码访问解决当中各种坑!】⼀.搭建redis单机本⽂搭建redis3.0版本,3.0主要增加了redis cluster集群功能。
2.解压源码:tar -zxvf redis-3.0.0.tar.gz3.编译源码:cd /usr/local/redis-3.0.0make4.安装到指定⽬录: cd /usr/local/redis-3.0.0make PREFIX=/usr/local/redis install5.进⼊源码⽬录,将redis.conf拷贝到安装路径:cd /usr/local/redismkdir confcp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin6.修改redis.conf配置⽂件,以后端模式启动:daemonize yes7.启动redis:cd /usr/local/redis ./bin/redis-server ./redis.conf //在何处启动的server,⼀些配置⽂件就默认在该处⽣成(如果配置的相对路径)8.redis.conf配置⽂件主要配置:port 7001 //监听的端⼝# bind 127.0.0.1 //绑定ip,只允许该ip访问,不填默认为*,表⽰允许所有ip访问requirepass "你的密码" //开启密码loglevel debug //⽇志级别,开发模式尽量选⽤debuglogfile "redis.log" //⽇志⽂件路径,此处使⽤相对路径,将⽣成到/usr/local/redis下maxmemory 100000000 //允许最⼤内存占⽤100mappendonly yes //启⽤aofauto-aof-rewrite-percentage 80 //部署在同⼀机器的多个redis实例,建议把auto-aof-rewrite错开(可分别写80-100不等),防⽌瞬间fork,所有redis进程做rewrite,占⽤⼤量内存9.jedis连接redis单机:1<dependency>2<groupId>redis.clients</groupId>3<artifactId>jedis</artifactId>4<version>2.7.0</version>5</dependency>连接池整合spring:<!-- redis连接池(单例) --><bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close"><constructor-arg name="poolConfig" ref="jedisPoolConfig"/><constructor-arg name="host" value="${redis.host}"/><constructor-arg name="port" value="${redis.port}"/><constructor-arg name="timeout" value="${redis.timeout}"/><constructor-arg name="password" value="${redis.pass}"/></bean><!-- 连接池配置 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最⼤连接数 --><property name="maxTotal" value="150"/><!-- 最⼤空闲连接数 --><property name="maxIdle" value="30"/><!-- 最⼩空闲连接数 --><property name="minIdle" value="10"/><!-- 获取连接时的最⼤等待毫秒数,⼩于零:阻塞不确定的时间,默认-1 --><property name="maxWaitMillis" value="3000"/><!-- 每次释放连接的最⼤数⽬ --><property name="numTestsPerEvictionRun" value="100"/><!-- 释放连接的扫描间隔(毫秒) --><property name="timeBetweenEvictionRunsMillis" value="3000"/><!-- 连接最⼩空闲时间 --><property name="minEvictableIdleTimeMillis" value="1800000"/><!-- 连接空闲多久后释放, 当空闲时间>该值且空闲连接>最⼤空闲连接数时直接释放 --><property name="softMinEvictableIdleTimeMillis" value="10000"/><!-- 在获取连接的时候检查有效性, 默认false --><property name="testOnBorrow" value="true"/><!-- 在空闲时检查有效性, 默认false --><property name="testWhileIdle" value="true"/><!-- 在归还给pool时,是否提前进⾏validate操作 --><property name="testOnReturn" value="true"/><!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --><property name="blockWhenExhausted" value="false"/></bean>1 @RunWith(SpringJUnit4ClassRunner.class) // 指定测试⽤例的运⾏器这⾥是指定了Junit42 @ContextConfiguration("classpath:spring/application*.xml")3public class RedisTest {4 @Autowired5private JedisPool pool;6 @Test7public void testJedisPool() {8 Jedis jedis = null;9 String name = null;10try {11 jedis = pool.getResource();12 jedis.set("testName", "RCL");13 name = jedis.get("testName");14 } catch (Exception ex) {15 ex.printStackTrace();16 } finally {17if (jedis != null) {18// 返回给池19 jedis.close();20 }21 Assert.assertEquals("RCL", name);22 }23 }10.如果连接不上,可查看是否防⽕墙没有将redis端⼝开放:/etc/sysconfig/iptables添加:-A INPUT -p tcp -m state --state NEW -m tcp --dport 7001 -j ACCEPT //7001即redis端⼝重启防⽕墙⼆、搭建redis集群1.安装ruby环境集群管理⼯具redis-trib.rb依赖ruby环境(1)安装ruby:yum install ruby yum install rubygems(2)安装ruby和redis的接⼝程序:拷贝redis-3.0.0.gem⾄/usr/local。
Redis集群Redis-cluster搭建及故障、性能测试
Redis集群Redis-cluster搭建及故障、性能测试⼀、Redis集群部署三台物理机:172.20.0.17、172.20.0.18、172.20.0.19⼆、安装Redis下载安装redis压缩包解压压缩包,进⼊redis-5.0.2⽂件夹,运⾏命令./make install安装redismv redis-5.0.2 /usr/local/redis/三、修改配置⽂件node1--17服务器:1、创建redis_cluster/700X的⽬录mkdir -p /usr/local/redis/redis_cluster/7001mkdir -p /usr/local/redis/redis_cluster/70022、修改Redis.conf的端⼝cp redis.conf /usr/local/redis/redis_cluster/7001修改端⼝为7001cp redis.conf /usr/local/redis/redis_cluster/7002修改端⼝为70023、同时将修改后的Redis.conf复制到另外两个节点(18、19)4、将redis-server复制到节点⽬录下,⽅便操作cp /usr/local/bin/redis-server /usr/local/redis/redis-5.0.2/redis_cluster/7001/5、开启redis-cluster配置,配置做以下改造#配置yes开启redis-clustercluster-enabled yes#配置节点之间超时时间cluster-node-timeout 15000#这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端⼝命名cluster-config-file nodes-17-7001.conf四、启动各节点17、18、19Rediscd /usr/local/redis/redis-5.0.2/redis_cluster/7001./redis-server redis.confcd /usr/local/redis/redis-5.0.2/redis_cluster/7002./redis-server redis.conf五、创建集群命令cd /usr/local/bin./redis-cli --cluster create 172.20.0.17:7001 172.20.0.18:7001 172.20.0.19:7001 172.20.0.17:7002 172.20.0.18:7002 172.20.0.19:7002 --cluster-replicas 1(replicas1 表⽰我们希望为集群中的每个主节点创建⼀个从节点。
redis搭建集群(伪集群)
redis搭建集群(伪集群)集群搭建步骤1、创建6个⽂件夹2、复制redis.conf⽂件,并修改redis.conf 配置⽂件3、创建集群4、连接客户端5、查看状态创建 6个⽂件夹来存放redis.conf,因为redis集群最⼩需要的是,三组三从,每个⽂件夹代表⼀台服务器,6007跟6008可忽略先复制⼀个到6001⽂件夹中修改6001的redis.conf配置⽂件port 6001 #绑定端⼝daemonize yes #开启守护进程pidfile /var/run/redis_6001.pid #进程⽂件名cluster-enabled yes #是否是集群cluster-config-file nodes-6001.conf #集群配置⽂件cluster-node-timeout 15000 #集群连接超时时间appendonly yes #数据持久化类型修改⼀个redis.conf 成功之后,分别把修改后的 redis.conf 复制到各个⽂件夹中使⽤修改剩下的redis.conf ⽂件#使⽤全局替换 6001 替换 6002 进⼊ redis.conf ⽂件中按esc 然后:号输⼊ 1,$s/6001/6002/g:1,$s/6001/6002/g#然后就 :wq 保存退出现在全部启动成功了,开始搭建集群了(伪集群)分别都启动6001,6002,6003,6004,6005,6006redis-server /usr/apk/redis-cluster/6001/redis.conf#如果你没有redis-server命令#1、可以⽤从redis-5.0.7(你的版本)/src⽬录下启动#2、或者你把 redis-5.0.7/src/redis-server ⽂件放到 /usr/bin/ 这样你就使⽤redis-server命令了# 把剩下的redis都启动起来启动成功查看筛选查看进程ps -aux|grep redisredis-cli --cluster create 192.168.136.128:6001 192.168.136.128:6002 192.168.136.128:6003 192.168.136.128:6004 192.168.136.128:6005 192.168.136.128:6006 --cluster-replicas 1 # 这⾥需要注意的是前三个都是主节点# 如果你有设置了密码这⾥就得要 -a pigsroot(你的密码)# 这⾥让他们⼀主⼀从# 回车之后就会提⽰这你要是否搭建集群回复 yes连接集群,测试存值,连接的是6002redis-cli -c -h 6002# 如果你设置了密码后⾯还要加上 -a pigsroot(你的密码)现在查看集群的状态cluster nodes# 6007我关闭了,可以忽略不影响使⽤。
Redis-4.0.11集群配置
Redis-4.0.11集群配置版本:redis-3.0.5 redis-3.2.0 redis-3.2.9 redis-4.0.11⽬录1. 前⾔2. 部署计划依据官⽹介绍,部署6个redis节点,为3主3从。
3台物理机每台都创建2个redis节点:服务端⼝IP地址配置⽂件名6379192.168.0.251redis-6379.conf6379192.168.0.252redis-6379.conf6379192.168.0.253redis-6379.conf6380192.168.0.251redis-6380.conf6380192.168.0.252redis-6380.conf6380192.168.0.253redis-6380.conf疑问:3台物理机,会不会主和从节点分布在同⼀个物理机上?3. ⽬录结构本⽂将redis安装在/data/redis(每台机器完全相同,同⼀台机器上的多个节点对应相同的⽬录和⽂件,并建议将bin⽬录加⼊到环境变量PATH中,以简化后续的使⽤):/data/redis|-- bin| |-- redis-benchmark| |-- redis-check-aof| |-- redis-check-dump| |-- redis-cli| |-- redis-sentinel -> redis-server| `-- redis-server|-- conf| |-- redis-6379.conf| |-- redis-6380.conf| `-- redis.conf`-- log3 directories, 9 files4. 编译安装打开redis的Makefile⽂件,可以看到如下内容:PREFIX?=/usr/localINSTALL_BIN=$(PREFIX)/binINSTALL=installMakefile中的“?=”表⽰,如果该变量之前没有定义过,则赋值为/usr/local,否则什么也不做。
Redis搭建(五):Cluster集群搭建
Redis搭建(五):Cluster集群搭建⼀、⽅案1. 介绍redis3.0及以上版本实现,集群中⾄少应该有奇数个节点,所以⾄少有三个节点,官⽅推荐三主三从的配置⽅式使⽤哈希槽的概念,Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。
集群的每个节点负责⼀部分hash槽。
使⽤主从复制模型,每个节点都会有N-1个slave。
如果master不可⽤,会选举slave为新的master继续服务;如果同个节点的master和slave都失效,整个集群将不可⽤。
2. 集群的不⾜:Redis集群并不⽀持处理多个key的操作,因为这需要在不同的节点间移动数据,从⽽达不到像Redis那样的性能,在⾼负载的情况下可能会导致不可预料的错误。
举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执⾏交集操作。
涉及多个key的redis事务不能使⽤。
⼆、集群的搭建1. 准备配置⽂件创建cluster⽬录,并创建6个配置⽂件2. 修改配置⽂件port 7000 //端⼝7000,7002,7003..daemonize yes //redis后台运⾏pidfile ./redis_7000.pid //pidfile⽂件对应7000,7001,7002cluster-enabled yes //开启集群把注释#去掉cluster-config-file nodes_7000.conf //集群的配置配置⽂件⾸次启动⾃动⽣成 7000,7001,7002cluster-node-timeout 15000 //请求超时默认15秒,可⾃⾏设置appendonly yes //aof⽇志开启有需要就开启,它会每次写操作都记录⼀条⽇志//若设置密码,master和slave需同时配置下⾯两个参数:masterauth "12345678" //连接master的密码requirepass "12345678" //⾃⼰的密码3. 启动、测试所有redis实例创建启动⽂件:vi start-all.sh赋予权限:chmod u+x start-all.sh启动:./start-all.sh4. 安装redis-trib所需的 ruby脚本ruby redis-trib.rb //测试是否安装成功,若已经安装过,可跳过此步安装cp /usr/andy/redis/redis-3.2.0/src/redis-trib.rb .yum install rubyyum install rubygemsgem install redis-3.2.2.gem //需下载5. 使⽤redis-trib.rb创建集群执⾏下⾯命令创建集群(需为真实ip,不然外⽹⽆法访问):./redis-trib.rb create --replicas 1 192.168.0.217:7000 192.168.0.217:7001 192.168.0.217:7002 192.168.0.217:7003 192.168.0.217:7004 192.168.0.217:7005可以看到:7003是7000主节点的从节点,管理槽0-54607004是7001主节点的从节点,管理槽5461-109927005是7002主节点的从节点,管理槽10992-16383三、测试1、测试存取值登录从节点,查看2、主从切换结束主节点7000进程,发现7003成了master,⽽7000节点的状态为fail恢复7000节点,发现变成了7003的slave四、集群常⽤命令1. 集群客户端命令(redis-cli -c -p port)集群cluster info :打印集群的信息cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
redis集群搭建及配置
redis主从服务器搭建修改记录目录redis主从服务器搭建 (1)一.redis主从服务器搭建 (2)第一步:下载redis (2)第二步:解压redis tar包 (2)第三步:进入reidis目录 (2)第四步:make (2)第五步:make install (3)第六步:修改redis.conf 操作 (3)第七步:redis从服务器配置 (4)第八步:修改从服务redis.conf (4)二.redis测试 (4)第一步:编写redis客户端启动shell (4)第二步:启动客户端 (5)第三步:操作 (5)第四步:set name test (5)第五步:get name (5)第六步:从服务器端启动客户端 (5)第七步:从服务器端(10.105.76.100) get name (5)三.sentinel配置及启动 (5)第一步:修改sentinel.conf (6)第二步启动sentinel (6)第三步:启动sentinel (6)一.redis主从服务器搭建第一步:下载redis在redis官网下载redis2.8.17版本第二步:解压redis tar包将下载的redis-2.8.17.tar.gz放在10.105.76.99(主服务器)上/usr/local下然后解压tar包命令:tar -zxvf redis-2.8.17.tar.gz第三步:进入reidis目录进入redis-2.8.17目录命令: cd redis-2.8.17第四步:makemake 或者make MALLOC=libc 如果使用make时报错(zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory)此时可使用make MALLOC=libc出现下图说明make完成第五步:make install第六步:修改redis.conf 操作进入redis安装目录cd /usr/local/redis-2.8.17,vi redis.conf将daemonize no改为yes ,意思是在后台运行logfile改为log的存放路径requirepass 前面的#去掉后面改为itmiredis此处为密码前六步已经完成了redis主端的安装及配置,如果需要可以写一个启动redis的shell脚本,touch start.sh,vi start.sh 里面的内容为src/redis-server redis.conf第七步:redis从服务器配置将安装好的redis拷贝到从服务器(10.105.76.100) 命令scp -r /usr/local/redis-2.8.17root@10.105.76.100:/usr/local第八步:修改从服务redis.conf拷贝完成后进入从服务器(10.105.76.100) ,cd /usr/local/redis-2.8.17,修改redis.confslaveof ip(10.105.76.99) 端口(6379) 此处为主服务的ip和端口因为主服务上设置了密码所以需要修改masterauth ,并将requirepass注释掉此时redis主从应配置完成通过start.sh分别启动redis(10.105.76.99)和(10.10.576.100) 通过ps -ef|grep redis查看进程,出现如下图说明redis启动完成二.redis测试第一步:编写redis客户端启动shell可以写一个shell脚本启动redis客户端cd /usr/local/redis-2.8.17/,touch startcli.sh,vi startcli.sh startcli.sh内容为src/redis-cli,并将此文件拷贝到从服务器10.105.76.100第二步:启动客户端在主服务器端(10.105.76.99) 命令:sh startcli.sh第三步:操作输入密码auth itmiredis第四步:set name test第五步:get name第六步:从服务器端启动客户端从服务器端启动客户端(10.105.76.100),sh startcli.sh第七步:从服务器端(10.105.76.100) get name此时说明主从服务已经搭建完成。
Windows下Redis集群搭建
Windows下搭建Redis集群Redis 集群简介Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。
Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。
Redis 把所有的 Key 分成了16384 个 slot,每个 Redis 实例负责其中一部分 slot 。
集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
集群搭建要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时,强烈建议使用六个节点:其中三个为主节点,而其余三个则是各个主节点的从节点。
主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis回复工作后,会成为从节点1). 创建Redis集群目录在redis安装的根目录下通过命令行创建6个以端口命名的文件夹mkdir 7000 7001 7002 7003 7004 7005将安装的redis文件夹中的redis.windows.conf以及redis-server,分别拷贝到新建的六个文件夹中2). 更改配置将六个文件夹下的redis.windows.conf文件中以下属性进行修改:port 7001(对应文件夹的端口号)cluster-enabled yes(开启实例的集群模式)去掉注释cluster-config-file nodes.conf(保存节点配置文件,默认值为nodes.conf )去掉注释cluster-node-timeout 5000(是集群中各节点相互通讯时,允许"失联"的最大毫秒数,上面的配置为5秒,如果超过5秒某个节点没向其它节点汇报成功,认为该节点挂了。
Redis集群使用指南
Redis集群使用指南一、Redis集群简介Redis(Remote Dictionary Server)是一个开源的基于内存的键值对存储系统,经常用来作为缓存、消息队列和数据库。
在实际使用过程中,Redis可能会出现性能瓶颈和单点故障。
为了解决这些问题,Redis提供了集群模式。
Redis集群是对多个Redis节点进行逻辑分区和复制,从而实现高可用、高性能和可伸缩性。
Redis集群能够自动进行故障转移和重新分配,可以提供更好的可靠性和吞吐量。
二、Redis集群的工作原理Redis集群采用哈希槽(Hash Slot)的方式来实现数据的分片和复制。
一个Redis集群可以包含多个Redis节点,每个节点管理一部分哈希槽。
当客户端需要对某个键进行操作时,Redis首先计算该键对应的哈希值,然后将其分配到某个哈希槽中。
Redis集群根据哈希槽的分配情况,将该键的操作转发给相应的Redis节点进行处理。
如果某个节点出现故障,Redis集群会自动将该节点管理的哈希槽重新分配给其他节点。
Redis集群采用主从复制的方式来实现数据的持久化和高可用。
每个主节点可以有多个从节点,主节点负责处理读写请求,同时将数据复制到从节点。
如果主节点出现故障,其中的一个从节点会被自动选举为新的主节点,继续处理客户端请求。
三、搭建Redis集群的步骤1、安装Redis节点在Linux系统上安装Redis比较简单,可以使用以下命令:sudo apt-get updatesudo apt-get install redis-server安装完毕后,可以通过以下命令启动Redis服务:sudo service redis-server start2、配置Redis节点每个Redis节点都需要进行一些配置,以便加入到Redis集群中。
可以通过以下命令进入Redis配置文件:sudo vim /etc/redis/redis.conf需要修改的配置项有以下几个:cluster-enabled yes:启用Redis集群模式。
实现redis集群的方法
实现redis集群的方法Redis是一种高性能、可扩展的内存数据库,它广泛应用于数据缓存、实时统计、消息队列等领域。
为了充分利用Redis的强大功能,我们可以将其构建成一个集群,以实现更好的性能和可靠性。
下面是实现Redis集群的一些方法:1. 使用Redis本身提供的集群功能Redis本身提供了集群功能,我们可以通过将Redis节点部署到不同的物理主机上,实现负载均衡和故障转移等功能。
具体实现方法可以参考Redis官方文档中的“Redis集群”章节,包括如何使用Redis集群软件、配置Redis集群参数等方面的内容。
2. 使用第三方的Redis集群软件除了Redis本身提供的集群功能外,还有很多第三方的Redis集群软件可供选择。
例如,Redis-cli是一款开源的可视化Redis节点管理工具,它支持自动故障转移和负载均衡等功能,可以方便地管理Redis集群。
另外,Redis-Nexus是一款基于Netflix算法的Redis集群软件,它支持高效的节点选举和负载均衡算法,可以快速构建出一个高性能的Redis集群。
3. 配置Redis集群参数在实现Redis集群时,还需要配置一些参数,以保证集群的性能和可靠性。
例如,我们可以配置Redis集群的内存大小、节点数量、负载均衡算法等参数,以实现更好的性能和可靠性。
具体参数配置方法可以参考Redis官方文档中的“Redis 集群配置”章节。
4. 使用分布式数据库技术实现Redis集群除了传统的单机Redis实现方式外,我们还可以使用分布式数据库技术,如Hadoop、Spark等,来实现Redis集群。
这种方法可以充分利用分布式数据库的强大功能,实现更好的性能和可靠性。
具体实现方法可以参考相关技术文档,如Hadoop的Redis插件、Spark的Redis支持等。
总之,实现Redis集群的方法有很多种,我们可以根据实际情况选择合适的方法,以实现更好的性能和可靠性。
redis集群搭建步骤
redis集群搭建步骤Redis集群搭建步骤如下:1.准备集群文件夹,创建集群文件夹,并在该文件夹中分别创建7000-7005文件夹。
2.配置文件,将redis根目录中的redis.conf文件复制到cluster/7000/ 文件夹中,并修改本地绑定IP地址、关闭保护模式、修改端口号、启动后台启动、关闭AOF模式、开启集群配置、开启集群配置文件。
同样,对7001-7005文件夹进行相同的配置。
3.批量分配、修改配置文件,对7000~7005这六个文件夹,分别进行配置文件的修改。
4.编写脚本编辑启动/关闭命令,创建启动脚本—vim start.sh,创建关闭脚本—vim shutdown.sh,启动redis节点并查看状态。
5.在启动Redis实例之前需要修改配置文件的配置信息,打开Redis.conf文件,打开cluster-enable。
除此之外还要修改节点配置文件的存放名称,在默认的情况下都是node-6379.conf。
修改该文件名称node-6380....,这些对应的文件可以自动创建。
6.在创建集群的过程中至少需要3个主数据库才能正常运行。
7.首先创建6个Redis实例,修改配置文件中cluster-enable选项以及port选项。
redis-server redis.conf启动数据库实例。
8.使用Redis客端链接任意一个节点,INFO CLUSTER判断集群是否正常启用,如果在返回信息之中cluster_enabled为1表示集群正常启用。
以上步骤仅供参考,具体操作可能因实际情况而有所不同。
如果遇到问题,建议咨询专业技术人员获取帮助。
redis集群配置参数及优化
Redis集群配置参数及优化Redis的主要参数配置在redis.conf文件中。
1.conf内存值2.bindip默认情况下,如果没有指定“bind”配置指令,Redis将侦听服务器上可用的所有网络接口的连接。
默认情况:bind127.0.0.1实际配置:bind本机ip3.protected-modeyes启用默认保护模式。
只有当您确定您希望其他主机的客户端连接到Redis 时,您才应该禁用它,即使没有配置身份验证,也没有使用“bind”指令显式列出特定的接口集。
4.tcp-keepalive300如果非零,请使用SO_KEEPALIVE向没有通信的客户发送TCP协议。
这很有用,有两个原因:a)检测死同伴b)从中间的网络设备的角度进行连接在Linux上,指定的值(以秒为单位)是用于发送ack的周期。
注意,要关闭连接,需要双倍的时间。
这个选项的合理值是300秒,这是新的Redis默认值,从Redis3.2.1开始。
5.timeout0在客户机空闲N秒后关闭连接(0到禁用)6.port6379在指定端口上接受连接,默认值是63797.daemonizeyesredis后台运行8.pidfile/var/run/redis_6379.pid如果指定了一个pid文件,Redis会在启动时指定,并在退出时删除它。
当服务器运行非守护进程时,如果配置中没有指定pid文件,则不会创建pid文件。
当服务器被守护时,即使没有指定,也会使用pid文件,默认为“/var/run/redis.pid”。
创建一个pid文件是最好的工作:如果Redis不能创建它,那么服务器就会正常启动和运行。
9.loglevelnotice指定服务器冗余级别包括:a)debug:大量信息,用于开发/测试b)verbose:许多很少有用的信息,但不像debug级别那样混乱c)notice:适度详细,可能在生产中需要d)warning:只有非常重要/关键的消息被记录10.logfile""指定日志文件名。
Redis集群搭建
Redis集群搭建⼀、搭建集群Redis Cluster集群要求必须有3个master才构成⼀个集群,所以我这⾥采⽤3主3从的⽅式,实际⽣产中的⾼可⽤⾄少3主6从(1)使⽤docker-compose启动6个redis容器,使⽤ host network,不然jedis内部重定向ip地址不正确。
version: '3.7'services:redis7001:image: 'redis:6.2.4'container_name: redis7001network_mode: "host"command:["redis-server","/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7001/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7001/data:/dataports:- "7001:7001"- "17001:17001"environment:- TZ=Asia/Shanghairedis7002:image: 'redis:6.2.4'container_name: redis7002network_mode: "host"command:["redis-server", "/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7002/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7002/data:/dataports:- "7002:7002"- "17002:17002"environment:- TZ=Asia/Shanghairedis7003:image: 'redis:6.2.4'container_name: redis7003network_mode: "host"command:["redis-server", "/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7003/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7003/data:/dataports:- "7003:7003"- "17003:17003"environment:- TZ=Asia/Shanghairedis7004:image: 'redis:6.2.4'container_name: redis7004network_mode: "host"command:["redis-server", "/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7004/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7004/data:/dataports:- "7004:7004"- "17004:17004"environment:- TZ=Asia/Shanghairedis7005:image: 'redis:6.2.4'container_name: redis7005network_mode: "host"command:["redis-server", "/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7005/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7005/data:/dataports:- "7005:7005"- "17005:17005"environment:- TZ=Asia/Shanghairedis7006:image: 'redis:6.2.4'container_name: redis7006network_mode: "host"command:["redis-server", "/etc/redis/redis.conf"]volumes:- /opt/docker/redis/7006/redis.conf:/etc/redis/redis.conf- /opt/docker/redis/7006/data:/dataports:- "7006:7006"- "17006:17006"environment:- TZ=Asia/Shanghai[root@shang redis]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe3018a083b37 redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 4 seconds 0.0.0.0:7003->7003/tcp, :::7003->7003/tcp, 6379/tcp, 0.0.0 .0:17003->17003/tcp, :::17003->17003/tcp redis7003911dc36fe35a redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 4 seconds 0.0.0.0:7005->7005/tcp, :::7005->7005/tcp, 6379/tcp, 0.0.0.0:17005->17005/tcp, :::17005->17005/tcp redis7005efabccd7769c redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 6 seconds 0.0.0.0:7004->7004/tcp, :::7004->7004/tcp, 6379/tcp, 0.0.0.0:17004->17004/tcp, :::17004->17004/tcp redis7004db48c12796cb redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 4 seconds 0.0.0.0:7002->7002/tcp, :::7002->7002/tcp, 6379/tcp, 0.0.0.0:17002->17002/tcp, :::17002->17002/tcp redis7002c717621d2c7b redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 4 seconds 0.0.0.0:7006->7006/tcp, :::7006->7006/tcp, 6379/tcp, 0.0.0.0:17006->17006/tcp, :::17006->17006/tcp redis700610fd3e24f10f redis:6.2.4 "docker-entrypoint.s…" 13 seconds ago Up 4 seconds 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp, 6379/tcp, 0.0.0.0 :17001->17001/tcp, :::17001->17001/tcp redis7001(2)查看redis集群 [cluster]表⽰为集群,但此时它们之间并没有建⽴联系,也没有分配slot。
docker实现redis集群搭建的方法步骤
docker实现redis集群搭建的⽅法步骤⽬录⼀、创建redis docker基础镜像⼆、制作redis节点镜像三、运⾏redis集群引⽤:摘要:接触docker以来,似乎养成了⼀种习惯,安装什么应⽤软件都想往docker⽅向做,今天就想来尝试下使⽤docker搭建redis集群。
⾸先,我们需要理论知识:Redis Cluster是Redis的分布式解决⽅案,它解决了redis单机中⼼化的问题,分布式数据库——⾸要解决把整个数据集按照分区规则映射到多个节点的问题。
这边就需要知道分区规则——哈希分区规则。
Redis Cluster 采⽤哈希分区规则中的虚拟槽分区。
所有的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383。
每⼀个节点负责维护⼀部分槽以及槽所映射的键值数据。
⼀、创建redis docker基础镜像下载redis安装包,使⽤版本为:4.0.1[root@etcd1 tmp]# mkdir docker_redis_cluster[root@etcd1 tmp]# cd docker_redis_cluster/[root@etcd2 docker_redis_cluster]# wget http://download.redis.io/releases/redis-4.0.1.tar.gz解压编译redis[root@etcd1 docker_redis_cluster]# tar zxvf redis-4.0.1.tar.gz[root@etcd1 docker_redis_cluster]# cd redis-4.0.1/[*******************.1]#make修改redis配置[*******************.1]#vi/tmp/docker_redis_cluster/redis-4.0.1/redis.conf修改bind ip地址# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the# internet, binding to all the interfaces is dangerous and will expose the# instance to everybody on the internet. So by default we uncomment the# following bind directive, that will force Redis to listen only into# the IPv4 lookback interface address (this means Redis will be able to# accept connections only from clients running into the same computer it# is running).## IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES# JUST COMMENT THE FOLLOWING LINE.# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#bind 127.0.0.1bind 0.0.0.0将守护进程yes改成no# By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize no将密码项注释去掉,添加新密码# Warning: since Redis is pretty fast an outside user can try up to# 150k passwords per second against a good box. This means that you should# use a very strong password otherwise it will be very easy to break.## requirepass foobared修改为# Warning: since Redis is pretty fast an outside user can try up to# 150k passwords per second against a good box. This means that you should# use a very strong password otherwise it will be very easy to break.#requirepass 123456因为配置了密码,所以,配置中另外⼀处主从连接也需要配置密码# If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the slave to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the slave request.## masterauth <master-password>修改为# If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the slave to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the slave request.## masterauth <master-password>masterauth 123456设置⽇志路径# Specify the log file name. Also the empty string can be used to force# Redis to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/nulllogfile "/var/log/redis/redis-server.log"配置集群相关信息,去掉配置项前⾯的注释# Normal Redis instances can't be part of a Redis Cluster; only nodes that are# started as cluster nodes can. In order to start a Redis instance as a# cluster node enable the cluster support uncommenting the following:#cluster-enabled yes# Every cluster node has a cluster configuration file. This file is not# intended to be edited by hand. It is created and updated by Redis nodes.# Every Redis Cluster node requires a different cluster configuration file.# Make sure that instances running in the same system do not have# overlapping cluster configuration file names.#cluster-config-file nodes-6379.conf# Cluster node timeout is the amount of milliseconds a node must be unreachable# for it to be considered in failure state.# Most other internal time limits are multiple of the node timeout.#cluster-node-timeout 15000镜像制作[root@etcd3 docker_redis_cluster]# cd /tmp/docker_redis_cluster[root@etcd3 docker_redis_cluster]# vi Dockerfile# Redis# Version 4.0.1FROM Centos:7<br>ENV REDIS_HOME /usr/local<br>ADD redis-4.0.1.tar.gz / # 本地的redis源码包复制到镜像的根路径下,ADD命令会在复制过后⾃动解包。
springboot中使用redis集群操作步骤
springboot中使用redis集群操作步骤在Spring Boot中使用Redis集群,主要涉及以下几个步骤:1. 添加相关依赖:在`pom.xml`文件中添加Redis客户端依赖。
Spring Boot的官方推荐依赖是`spring-boot-starter-data-redis`,它包含了Spring Data Redis的依赖。
2. 配置Redis集群连接信息:在`application.properties`(或`application.yml`)文件中配置Redis集群的连接信息。
可以使用以下属性进行配置:```````spring.redis.cluster.nodes`用于指定Redis集群中各个节点的连接地址和端口。
`spring.redis.cluster.max-redirects`用于指定在进行节点重定向操作时,最大的重定向次数。
这些配置项可以根据实际情况进行修改。
3. 创建RedisTemplate实例:在Spring Boot的配置类中创建`RedisTemplate`的实例。
可以使用`LettuceConnectionFactory`作为Redis连接工厂,并将其注入到`RedisTemplate`中。
示例代码如下:```javapublic class RedisConfigprivate String clusterNodes;private Integer maxRedirects;public RedisConnectionFactory redisConnectionFactorRedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(Arrays.asList(clusterNodes.split(",")) );clusterConfiguration.setMaxRedirects(maxRedirects);return new LettuceConnectionFactory(clusterConfiguration);}public RedisTemplate<String, Object> redisTemplatRedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(;redisTemplate.setConnectionFactory(redisConnectionFactory();return redisTemplate;}```4. 使用RedisTemplate进行操作:在代码中使用`RedisTemplate`的实例进行Redis操作。
分布式redis集群搭建步骤
分布式redis集群搭建步骤搭建分布式Redis集群的步骤如下:1. 安装Redis:在每台服务器上安装Redis,并确保版本一致。
2. 配置Redis:编辑每台服务器上的Redis配置文件,主要包括设置监听IP和端口、设置密码认证、设置集群模式等。
3. 创建集群:选择一个节点作为集群的主节点,执行命令`redis-cli --cluster create <node1>:<port1> <node2>:<port2> ... --cluster-replicas <replicas>`来创建集群。
其中,`<node1>:<port1>`表示第一个节点的IP和端口号,`<replicas>`表示每个主节点对应的从节点数量。
4. 添加节点:在集群中添加新的节点时,首先需要将新节点加入到集群中。
执行命令`redis-cli --cluster add-node<new_node>:<port> <existing_node>:<port>`将新节点添加到已存在的节点上。
5. 配置从节点:通过执行命令`redis-cli --cluster replicate<master_node_id> <slave_node_id>`来将从节点指定给主节点,以实现主从复制。
6. 容错处理:如果某个节点发生故障或宕机,需要进行容错处理。
执行命令`redis-cli --cluster forget <failed_node>:<port>`将故障节点从集群中移除,并重新分配槽位。
注意事项:- 每个节点都需要设置不同的端口号,并且集群中的每个节点都可以互相通信。
- 每个节点上都需要配置相同的集群模式、密码认证、持久化等。
- 为了防止单点故障,可以设置多个从节点进行备份。
redis集群搭建过程(非常详细,适合新手)
redis集群搭建过程(⾮常详细,适合新⼿)⽬录redis集群搭建⼀、Redis Cluster(Redis集群)简介⼆、集群搭建需要的环境三、集群搭建具体步骤如下(注意要关闭防⽕墙)四、结语redis集群搭建在开始redis集群搭建之前,我们先简单回顾⼀下redis单机版的搭建过程下载redis压缩包,然后解压压缩⽂件;进⼊到解压缩后的redis⽂件⽬录(此时可以看到Makefile⽂件),编译redis源⽂件;把编译好的redis源⽂件安装到/usr/local/redis⽬录下,如果/local⽬录下没有redis⽬录,会⾃动新建redis⽬录;进⼊/usr/local/redis/bin⽬录,直接./redis-server启动redis(此时为前端启动redis);将redis启动⽅式改为后端启动,具体做法:把解压缩的redis⽂件下的redis.conf⽂件复制到/usr/local/redis/bin⽬录下,然后修改该redis.conf⽂件->daemonize:no 改为daemonize:yse;在/bin⽬录下通过./redis-server redis.conf启动redis(此时为后台启动)。
综上redis单机版安装启动完成。
具体详细带图步骤请参考 ->请原谅我的啰嗦,ok,接着咱们回到本次话题----redis集群搭建!⼀、Redis Cluster(Redis集群)简介redis是⼀个开源的key value存储系统,受到了⼴⼤互联⽹公司的青睐。
redis3.0版本之前只⽀持单例模式,在3.0版本及以后才⽀持集群,我这⾥⽤的是redis3.0.0版本;redis集群采⽤P2P模式,是完全去中⼼化的,不存在中⼼节点或者代理节点;redis集群是没有统⼀的⼊⼝的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是⼀个redis实例;为了实现集群的⾼可⽤,即判断节点是否健康(能否正常使⽤),redis-cluster有这么⼀个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。
redis集群搭建 (2)
Redis集群搭建一、环境搭建需要的环境1.redis cluster安装1、下载和解包cd /home /{user}/app1)首先确保系统安装zlib,否则gem install会报(no such file to load -- zlib) #download:./configuremakemake install2)安装ruby:versioncd /path/ruby./configure -prefix=/usr/local/rubymakemake installsudo cp ruby /usr/local/bin3)安装rubygem:version # rubygems-cd /path/gemsudo rubysudo cp bin/gem /usr/local/bin4)安装gem-redis:version install redis --version#由于源的原因,可能下载失败,就手动下载下来安装#download地址gems/redis/versions/gem install -l /data/soft/每台机器都需要上面的环境,所以需要提前准备好环境。
上面的步骤完事了,接下来运行一下下面是一些参数Usage: redis-trib <command> <options> <arguments ...>reshard host:port #重置节点--to <arg>--yes--slots <arg>--from <arg>check host:portcall host:port command arg arg .. argset-timeout host:port millisecondsadd-node new_host:new_port existing_host:existing_port #增加节点--master-id <arg>--slavedel-node host:port node_id #删除节点fix host:portimport host:port--from <arg>help (show this help)create host1:port1 ... hostN:portN 创建集群并添加节点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
redis4.0.x集群搭建一.集群搭建前提环境-ruby因为redis集群环境基于ruby,所以需要先安装ruby运行环境。
采用rvm来安装或者升级ruby,因为有些服务器已经有了ruby,比如我买的阿里云好几台都是ruby2.0,你在安装redis集群时,执行gem install redis 安装接口命令就会报错:redis需要Ruby版本> = 2.2.2告诉你最起码需要2.2.2的版本,因为现在redis4.0.x比较多,2.0版本低了,redis3.0貌似不会有这个问题。
---------------------------------------------------1.安装RVM:(以下每一行都是一条命令)gpg2 --keyserver hkp:// --recv-keys D39DC0E3curl -L get.rvm.io | bash -s stable网速低的话装起来稍微慢点,装完后执行find进行查找,找到标红的rvm。
find / -name rvm -print/ usr / local / rvm/ usr / local / rvm / src / rvm/usr/local/rvm/src/rvm/bin/rvm/usr/local/rvm/src/rvm/lib/rvm/usr/local/rvm / src / rvm / scripts / rvm/ usr / local / rvm / bin / rvm/ usr / local / rvm / lib / rvm/ usr / local / rvm / scripts / rvm然后执行source命令:source /usr/local/rvm/scripts/rvm2.查看RVM库中已知的ruby版本rvm list known[ruby-] 1.8.6 [-p420][ruby-] 1.8.7 [-head]#在头上发布的安全性[ruby-] 1.9.1 [-p431][ruby-] 1.9.2 [-p330 ][ruby-] 1.9.3 [-p551][ruby-] 2.0.0 [-p648][ruby-] 2.1 [.10][ruby-] 2.2 [.6][ruby-] 2.3 [.3][ruby-] 2.4 [.0]3.安装一个版本rvm install 2.3.34.安装完成后,使用这个版本并设置默认版本。
rvm use 2.3.3 --default5.卸载目前的2.0版本(没有就不用管)rvm remove 2.0.06.查看是不是安装的版本ruby--version或ruby -v7.然后安装redis接口gem install redis获取:redis-4.0.0.gem(100%).........成功安装redis-4.0.0 redis-4.0.0什么什么的....二.搭建redis集群redis集群有投票形式的容错机制,所以要超过半数投票来确定某个节点是否挂掉了,辣么最少就需要3个节点(2个节点投什么票对吧?),而一般一个主节点需要有从节点,达到高可用的目的,辣么redis最少就需要6个节点来集群。
假设有6台服务器搭建redis集群,但资源欠缺,就在一台服务器上创建6个redis 实例来搭建一套伪集群,真实环境操作反而比伪集群更简单,所以会搭建伪集群就没有问题。
假设搭建的6台端口分别为:7001,7002,7003,7004,7005,7006。
以我的阿里云服务器为例:1.将之前跑的redis单例停掉redis-cli 命令进入,然后shutdown save 关闭。
ps -ef|grep redis 验证是否已关闭。
2.创建redis-cluster目录作为集群目录找到之前安装redis的目录,我的是/usr/local,创建redis-cluster目录,将之前装过的redis 复制一份到redis-cluster目录中去并重命名为redis01。
cd /usr/localmkdir redis-clustercp redis redis-cluster/redis013.编辑配置文件并复制出其它5个节点进入redis01,编辑redis.confvim redis01/redis.conf修改以下一些参数:# 端口号,redis01的改为7001.port 7001# 绑定IP,这是个大坑很容易误解,这里不是指绑定能访问redis服务器的外部服务器IP,而是指绑定本机可以接受访问的IP。
我的阿里云ifconfig查看的IP就是172.16.252.212.用阿里云的公网IP绑定后启动都不行,原因目前未知。
配置成0.0.0.0也是可以的,而且可以用jedis通过外网访问,前提是后面出现的问题都解决了,再回头改成0.0.0.0试试。
bind 172.16.252.212# 密码也是个大坑,不设置还好,设置了对后面创建集群有很大影响,有的人不设置,但我认为真实环境为了安全考虑应该要设置的。
requirepass 123456# 是否开启后台运行,是。
daemonize yes# 存放redis数据的目录,比如快照、conf文件、aof日志等等,这个data目录如果没有自己创建,路径对应上就行。
dir /usr/local/redis-cluster/redis01/data# 后台进程运行需要指定一个pid,虽然有默认的,但集群我们自己指定一个,自己命名。
pidfile /var/run/redis_7001.pid# 日志文件路径logfile /usr/local/redis-cluster/redis01/redis.log# 开启集群cluster-enabled yes# 集群的配置,配置文件首次启动自动生成,会放在上面指定的data目录里,自行验证。
cluster-config-file nodes_7001.conf# 请求超时,默认15秒,可自行设置,我设置为10秒。
cluster-node-timeout 10100# aof日志开启,有需要就开启,它会每次写操作都记录一条日志,稍微耗性能一点,但实用性比快照要好。
appendonly yes上述配置完成后记得保存,然后复制5份到同目录,分别为redis02、redis03、redis04、redis05、redis06。
cp -r redis01 redis02cp -r redis01 redis03cp -r redis01 redis04cp -r redis01 redis05cp -r redis01 redis06最后,分别修改redis02、redis03、redis04、redis05、redis06中的redis.conf 文件,参照第3点中的配置,把port、dir、pidfile、logfile、cluster-config-file 的名称路径什么的都改成和节点对应的。
4.编写shell启动和关闭脚本1)由于有6个节点,一个个启动比较麻烦,我们编写一个shell直接全部启动。
---------------------------------------------------------vim start-all.sh 创建出脚本并命名为start-all.shshell启动脚本如下:cd redis01redis-server ./redis.confcd ..cd redis02redis-server ./redis.confcd ..cd redis03redis-server ./redis.confcd ..cd redis04redis-server ./redis.confcd ..cd redis05redis-server ./redis.confcd ..cd redis06redis-server ./redis.conf---------------------------------------------------------这里有一点注意:如果是redis3.0.x版本的写法有所不同,主要是redis.conf的位置和4.0.x有区别,目录结构3.0.x和4.0.x有些不同。
编写完shell脚本后保存退出,然后赋予权限,因为目前还不是可执行文件。
变成绿色的就表示赋予权限成功,变成了可执行文件。
赋予权限:chmod +x start-all.sh执行启动脚本:./start-all.sh验证是否启动:ps aux|grep redis如图,6个节点都启动了,并且是cluster模式,表示集群模式。
PS: 这里说明两个个问题1.redis.conf有个bind配置,用自己的虚拟机来模拟的话配置成本机IP是没有问题的,但用阿里云服务器就会有问题,因为阿里云服务器分为公网IP和内网IP,bind公网IP会出现起不起来redis的现象,查看日志会报“can not assign requested address”这样的提示,表示不能分配请求地址,原因我不清楚,可能是阿里云的网络有什么限制。
但换成内网IP后就可以起起来了,内网IP就是本机IP,用ifconfig可以查看。
2.bind配成0.0.0.0不一定能跑起来,但文档里出现的问题都解决了的话,配置成0.0.0.0是没问题的,用jedis是可以访问,就是在本机用jedis通过外网访问redis服务器。
这个可以在搭建好了之后放在最后测试。
2)同理,由于6个节点,一个个关闭也比较麻烦,我们编写一个shell直接全部关闭。
vim shutdown-all.sh 创建关闭脚本,并命名为shutdown-all.sh-----------------------------------------------------------------------------------shell脚本如下:cd redis01redis-cli -p 7001 -a '123456' shutdowncd ..cd redis02redis-cli -p 7002 -a '123456' shutdowncd ..cd redis03redis-cli -p 7003 -a '123456' shutdowncd ..cd redis04redis-cli -p 7004 -a '123456' shutdowncd ..cd redis05redis-cli -p 7005 -a '123456' shutdowncd ..cd redis06redis-cli -p 7006 -a '123456' shutdowncd ..创建完成后保存并退出,然后赋予权限,让其变为可执行文件。