Redis 集群部署手册
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集群部署
r edi s⼀、创建单个r edi s 容器)、配置⽂件)、容器启动命令⼆、r edi s 配置集群模式)、创建配置⽂件)、启动容器)、进⼊容器,创建集群)、查看节点相关信息redis.conf 内容如下:requirepass 123456⼀、创建单个redis 容器1)、配置⽂件2)、容器启动命令⼆、redis 配置集群模式1)、创建配置⽂件docker run -p 6379:6379 --name redis -itd -v /web/Redis/redis.conf:/Redis/r edis.conf -v /web/Redis/data:/data:rw --privileged =true -d redis redis-server /Redis/redis.conf --appendonly yes123Shell2)、启动容器for port in $(seq 6379 6384); do mkdir -p /home/redis/node-${port}/conf touch /home/redis/node-${port}/conf/redis.conf cat << EOF > /home/redis/node-${port}/conf/redis.conf port ${port}requirepass 1234bind 0.0.0.0protected-mode no daemonize no appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000cluster-announce-ip 192.168.0.4cluster-announce-port ${port}cluster-announce-bus-port 1${port}EOF done 解释:port :节点端⼝;requirepass :设置密码,访问时需要验证protected-mode :保护模式,默认值 yes ,即开启。
Redis集群内网部署搭建
Redis集群部署一、关于redis cluster1、redis cluster的现状目前redis支持的cluster特性:1):节点自动发现2):slave->master 选举,集群容错3):Hot resharding:在线分片4):进群管理:cluster xxx5):基于配置(nodes-port.conf)的集群管理6):ASK 转向/MOVED 转向机制.2、redis cluster 架构2.1 redis-cluster架构图架构细节:(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value2.2 redis-cluster选举:容错(1)选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.(2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.二、安装redis cluster安装之前请讲所需的软件包(如下所示)拷贝到服务器的/root目录下:gcc-4.4.7-4.el6.x86_64文件夹(因使用的虚拟机没有GCC环境故要安装GCC环境,服务器的话则省略)zlib-1.2.8.tar.gz文件ruby-2.3.1.tar.gz文件rubygems-2.4.2文件夹redis-3.2.1.tar.gz文件1、安装redis-cluster依赖:redis-cluster的依赖库在使用时有兼容问题,在reshard时会遇到各种错误,请按指定版本安装。
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此时说明主从服务已经搭建完成。
redis操作手册
Redis操作手册1. 介绍Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。
它以高性能和简单的设计而闻名,是许多互联网应用的首选解决方案。
本文将详细介绍Redis的操作手册,包括基本命令、数据类型、持久化、集群等方面的内容。
2. 安装和配置2.1 安装Redis要安装Redis,可以通过编译源代码或使用包管理器安装。
下面是在Ubuntu上使用包管理器安装Redis的示例:$ sudo apt-get update$ sudo apt-get install redis-server2.2 配置RedisRedis的配置文件位于redis.conf,可以通过编辑该文件来配置Redis的各种参数。
常见的配置项包括端口号、密码、持久化选项等。
在配置文件中,以#开头的行代表注释,可以用于说明配置项的作用。
配置完成后,需要重启Redis才能使配置生效。
3. 基本命令Redis提供了各种基本的命令,用于管理和操作数据。
以下是一些常用的Redis命令:3.1 字符串操作•SET key value:设置指定键的值。
•GET key:获取指定键的值。
•DEL key:删除指定键及其对应的值。
3.2 列表操作•LPUSH key value:将值插入到列表的头部。
•RPUSH key value:将值插入到列表的尾部。
•LPOP key:移除并返回列表的头部元素。
•RPOP key:移除并返回列表的尾部元素。
3.3 哈希操作•HSET key field value:设置指定键的哈希字段的值。
•HGET key field:获取指定键的哈希字段的值。
•HDEL key field:删除指定键的哈希字段及其值。
3.4 集合操作•SADD key member:将指定成员添加到集合中。
•SMEMBERS key:返回指定集合的所有成员。
•SREM key member:从指定集合中移除指定成员。
redis 5.0.0集群安装部署
Redis5.0.0安装部署[V 1.0]2018年11月19日修订记录一、集群模式搭建(三主三从)1.1 环境准备新建三台centos服务器,设置IP:192.168.148.100、192.168.148.101、192.168.148.102,安装部署图如下:三台服务器增加配置vi /etc/hosts192.168.148.100 node100192.168.148.101 node101192.168.148.102 node102安装tclrpm -ivh tcl-8.5.13-8.el7.x86_64.rpm1.2服务安装cd /usr/localmkdir redis将redis-5.0.0.tar.gz上传到/usr/local/redistar -zxvf redis-5.0.0.tar.gzcd redis-5.0.0makemake install1.3 单机测试cd /usr/local/redis/redis-5.0.0/src./redis-server &redis-cli -h 127.0.0.1 -p 6379set flightid 123456get flightid1.4 集群配置cd /usr/local/redismkdir redis-cluster-5.0.0cd redis-cluster-5.0.0mkdir 7100mkdir 7301规则:7ABB,A为主节点号,BB从节点号。
BB为00时,ABB代表主节点,100:主节点1;BB不为00时,ABB代表从节点,101:主节点1的从01节点。
cd/usr/local/redis/redis-5.0.0cp redis.conf /usr/local/redis/redis-cluster-5.0.0/7100cp redis.conf /usr/local/redis/redis-cluster-5.0.0/7301cd /usr/local/redis/redis-cluster-5.0.0/7100修改配置文件vi redis.confdaemonize yes //设置后台启动port 7100 //端口设置为文件夹名称bind 192.168.148.100 //绑定当前机器的IPdir /usr/local/redis/redis-cluster-5.0.0/7100 //指定数据文件存放的位置,必须要指定不同的目录位置,不然会丢失数据cluster-enabled yes //启动集群模式cluster-config-file nodes-7100.conf //这里的数字最好和port对应cluster-node-timeout 15000 //集群超时时间appendonly yes //开启快照模式保存后将该文件copy到其他节点目录,将黄色背景相关配置进行对应修改。
redis单机集群搭建
Redis单机集群搭建1,创建redis实例统一存放的文件夹——在/usr/local路径下创建cluster文件夹,命令:mkdir cluster2,创建每个实例单独存放的文件夹——在cluster文件夹下创建6个文件夹,分别为7001,7002,7003,7004,7005,7006,命令:mkdir 7001 7002 7003 7004 7005 70063,将下载的redis-3.2.8.tar.gz上传到虚拟机的/usr/local/redis(前提先建一个redis)下,并解压,命令:tar –zxvf redis-3.2.8.tar.gz,得到redis-3.2.8包4,安装gcc,执行yum -y install gcc gcc-c++ libstdc++-devel和make CFLAGS="-march=x86-64"两次输入y继续安装,安装完成后然后进入redis-3.2.8包,执行make install PREFIX=/usr/local/redis2命令5,进入cd /usr/local/redis2c,复制bin文件夹到之前创建的6个包下面(/ usr/local/cluster/700*),如:cp -r bin /usr/local/cluster/7001复制redis-3.2.8下的redis.conf到/usr/local/cluster下面,并进入该目录6,修改redis.conf文件,修改内容如下1)屏蔽限制本地访问,在bind 127.0.0.1之前加#(同机器下,可能不需要改,未做测试)2)protected-mode后的yes改为no3)daemonize后的no改为yes4)去掉cluster-enabled yes前面的#(按Esc键退出i编辑模式,输入/,再输入cluster-enabled,回车,就可以快速找到)5)去掉#方法同4)6) port后的端口号改6次,每次都改成与之前创建的6个包名一致,如70 01,每改一次,将redis.conf文件,复制到对应的包下,如7001(端口只要不冲突可以随便改,这里为了方便管理改成和包名一致)7,分别启动6个redis实例,并查看8,进入cd /usr/local/redis/redis-3.2.8/src下,执行./redis-trib.rb cre ate --replicas 1127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 127.0.0.1:7006,报了一个错,如下需要安装:1)ruby的环境,执行命令:yum install ruby2)rubygems组件,执行命令:yum install rubygems3)redis和ruby的接口,执行命令:gem install redis如果报node 192.168.133.xx:7001 is not empty之类的错误说明集群未正确关闭或是存有日志文件则针对错误信息执行集群修复命令:./redis-trib.rb fix 192.168.133.128:70019,安装完成后再次执行,启动命令,并输入yes并回车10,启动成功11,做下测试,随便进入一个redis实例,如进入cd /usr/local/cluster/700 1下执行./bin/redis-cli -c -p 7001。
Redis-集群 - 三台服务器
Redis-集群安装详细步骤一、Redis集群部署文档(centos6系统)现有三台物理机10.18.154.2 10.18.154.3 10.18.154.4(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)10.18.154.2:700010.18.154.2:700110.18.154.3:700010.18.154.3:700110.18.154.4:700010.18.154.4:7001二、安装Redis(10.18.154.2、10.18.154.3、10.18.154.4)下载redis-3.2.1.tar.gz[root@localhost ~]# tar zxvf redis-3.2.1.tar.gz[root@localhost ~]# cd redis-3.2.1[root@localhost redis-3.2.1]# make[root@localhost redis-3.2.1]# make install[root@localhost ~]# mv redis-3.2.1 /usr/local/redis[root@localhost ~]# cd /usr/local/redis/[root@localhost ~]# mkdir /usr/local/cluster[root@localhost ~]# cp /usr/local/redis/redis.conf /usr/local/cluster/[root@localhost ~]# vi /usr/local/cluster/redis.conf##修改配置文件中的下面选项port 7000bind 10.18.154.2 127.0.0.1daemonize yes#如果你想让它在后台运行,你就把它改成yescluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes[root@localhost ~]# mkdir /usr/local/cluster/7000[root@localhost ~]# mkdir /usr/local/cluster/7001[root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7000[root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7001[root@localhost ~]# cp /usr/local/cluster/redis.conf /usr/local/cluster/7002[root@localhost 7000]# redis-server redis.conf ---启动redis服务##注意:拷贝完成之后要修改7001目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称##启动之后使用命令查看redis的启动情况ps -ef|grep redis三、执行redis的创建集群命令创建集群[root@localhost src]# cd /usr/local/redis/src/[root@localhost src]#./redis-trib.rb create --replicas 1 10.18.154.2:700010.18.154.2:7001 10.18.154.3:7000 10.18.154.3:7001 10.18.154.4:700010.18.154.4:7001执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境错误内容:/usr/bin/env: ruby: No such file or directory所以需要安装ruby的环境,这里推荐使用yum install ruby安装yum install ruby然后再执行创建集群命令,报错,提示缺少rubygems组件,使用yum安装错误内容:./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)from ./redis-trib.rb:24yum install rubygems再次执行创建集群命令,报错提示不能加载redis,是缺少redis、ruby接口,gem 安装错误内容:/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'gem install redis这里可能无法安装,因为无法连接gem服务器:[root@localhost ~]# gem install redis --version 3.0.0ERROR: Could not find a valid gem 'redis' (= 3.0.0) in any repository#需要手工下载并安装:wget https:///gems/redis-3.2.1.gemgem install -l ./redis-3.2.1.gem输入yes,然后配置完成。
redis3.0集群安装手册
Redis3.0集群安装手册鲁强一、概述要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005二、准备环境安装ruby集群环境需要ruby,所以需要安装下yum install rubyyum install ruby-rdocruby setup.rb安装完毕后启动依然报错需要安装redis库gem install redis问题解决下载最新redis版本3.06 并进行构建创建用户useradd redispasswd redis切换用户su – redis上传redis包到home目录tar -zxvf redis-3.0.6.tar.gzmv redis-3.0.6 redis3.0cd redis3.0make本环境为伪集群环境,所以在一台机器,多机情况相同mkdir /home/redis/ cluster-testcd /home/redis/ cluster-testmkdir 7000mkdir 7001mkdir 7002mkdir 7003mkdir 7004mkdir 7005三、修改配置将配置文件CP到各个集群节点目录下并修改端口号将redis-server cp到各个集群几点目录下详见配置文件范例conf.zi p四、启动环境运行startAll.sh文件即可启动集群Client 连接集群任意一个节点即可五、添加新主节点使用命令./redis-trib.rb add-node 10.4.89.16:7006 10.4.89.16:7000第一个为新节点IP端口第二个参数为任意节点IP添加后日志信息>>> Adding node 10.4.89.16:7006 to cluster 10.4.89.16:7000>>> Performing Cluster Check (using node 10.4.89.16:7000)M: 7e81d801c3ce503868c67dd6b47b82b8e04458ce 10.4.89.16:7000slots:0-5460 (5461 slots) master1 additional replica(s)M: c744b599c7cf31c05ed5a95f831461de8d5dfb95 10.4.89.16:7002slots:10923-16383 (5461 slots) master1 additional replica(s)M: d5297c5cee8a142123775224f39cce499fd7c435 10.4.89.16:7001slots:5461-10922 (5462 slots) master1 additional replica(s)S: d2c5ca33820cda4f8f1e98fbfcd72cf91bc7b676 10.4.89.16:7004slots: (0 slots) slavereplicates d5297c5cee8a142123775224f39cce499fd7c435S: b501af87c221ba53f7edd76bf1b5a77352d963be 10.4.89.16:7003slots: (0 slots) slavereplicates 7e81d801c3ce503868c67dd6b47b82b8e04458ceS: 77472bc34b72345b939b585157f4fc70fea81327 10.4.89.16:7005slots: (0 slots) slavereplicates c744b599c7cf31c05ed5a95f831461de8d5dfb95[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.>>> Send CLUSTER MEET to node 10.4.89.16:7006 to make it join the cluster.脚本先检查了集群状态,后添加了节点,添加后节点是空节点./redis-cli -c -p 7000 cluster nodes查看后发现2e9bdb7ea488a3d5ee5b92f32d65a176bf7b41bd 10.4.89.16:7006 master - 0 1453774165361 0 connected是一个master节点,但是没有分配任何哈希槽,所以此节点不参加任何集群选取策略下面我们为新节点分布数据槽./redis-trib.rb reshard 10.4.89.16:7006会询问向移动多少哈希槽到此节点>>> Performing Cluster Check (using node 10.4.89.16:7006)M: 2e9bdb7ea488a3d5ee5b92f32d65a176bf7b41bd 10.4.89.16:7006slots: (0 slots) master0 additional replica(s)S: b501af87c221ba53f7edd76bf1b5a77352d963be 10.4.89.16:7003slots: (0 slots) slavereplicates 7e81d801c3ce503868c67dd6b47b82b8e04458ceS: 77472bc34b72345b939b585157f4fc70fea81327 10.4.89.16:7005slots: (0 slots) slavereplicates c744b599c7cf31c05ed5a95f831461de8d5dfb95M: 7e81d801c3ce503868c67dd6b47b82b8e04458ce 10.4.89.16:7000slots:0-5460 (5461 slots) master1 additional replica(s)S: d2c5ca33820cda4f8f1e98fbfcd72cf91bc7b676 10.4.89.16:7004slots: (0 slots) slavereplicates d5297c5cee8a142123775224f39cce499fd7c435M: d5297c5cee8a142123775224f39cce499fd7c435 10.4.89.16:7001slots:5461-10922 (5462 slots) master1 additional replica(s)M: c744b599c7cf31c05ed5a95f831461de8d5dfb95 10.4.89.16:7002slots:10923-16383 (5461 slots) master1 additional replica(s)[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.How many slots do you want to move (from 1 to 16384)?此次我们移动3000What is the receiving node ID?接收这些哈希槽的IDSource node #1:想从哪个节点移动哈希槽,输入节点ID即可,如果输入all则各个节点分散获取./redis-cli -c -p 7000 cluster nodes查看现在状态发现已经有哈希槽了2e9bdb7ea488a3d5ee5b92f32d65a176bf7b41bd 10.4.89.16:7006 master - 0 1453774829906 7 connected 0-998 5461-6461 10923-11921六、添加从节点添加从节点和添加主节点的策略是一样的先启动需要添加的节点,然后开始添加新节点./redis-trib.rb add-node --slave 10.4.89.16:7007 10.4.89.16:7000第一个参数为新节点IP 第二个为任意节点[redis@api cluster-test]$ ./redis-trib.rb add-node --slave 10.4.89.16:7007 10.4.89.16:7000 >>> Adding node 10.4.89.16:7007 to cluster 10.4.89.16:7000>>> Performing Cluster Check (using node 10.4.89.16:7000)M: 7e81d801c3ce503868c67dd6b47b82b8e04458ce 10.4.89.16:7000slots:999-5460 (4462 slots) master1 additional replica(s)M: c744b599c7cf31c05ed5a95f831461de8d5dfb95 10.4.89.16:7002slots:11922-16383 (4462 slots) master1 additional replica(s)M: d5297c5cee8a142123775224f39cce499fd7c435 10.4.89.16:7001slots:6462-10922 (4461 slots) master1 additional replica(s)S: d2c5ca33820cda4f8f1e98fbfcd72cf91bc7b676 10.4.89.16:7004slots: (0 slots) slavereplicates d5297c5cee8a142123775224f39cce499fd7c435S: b501af87c221ba53f7edd76bf1b5a77352d963be 10.4.89.16:7003slots: (0 slots) slavereplicates 7e81d801c3ce503868c67dd6b47b82b8e04458ceS: 77472bc34b72345b939b585157f4fc70fea81327 10.4.89.16:7005slots: (0 slots) slavereplicates c744b599c7cf31c05ed5a95f831461de8d5dfb95M: 2e9bdb7ea488a3d5ee5b92f32d65a176bf7b41bd 10.4.89.16:7006slots:0-998,5461-6461,10923-11921 (2999 slots) master0 additional replica(s)[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.Automatically selected master 10.4.89.16:7006>>> Send CLUSTER MEET to node 10.4.89.16:7007 to make it join the cluster.Waiting for the cluster to join.>>> Configure node as replica of 10.4.89.16:7006.[OK] New node added correctly.其实此节点加给了7006看下集群信息./redis-cli -c -p 7000 cluster nodes发现确实加给了7007看下info信息./redis-cli -c -p 7000 cluster info一切正常七、移除节点通过redis-trib 提供的del-node 命令可以移除一个slave节点:./redis-trib del-node 127.0.0.1:7000 `<node-id>`在移除master节点之前必须确保它是空的否则你的集群有可能会不可用如果你要移除的master节点不是空的,你需要先用重新分片命令来把数据移到其他的节点。
redis集群部署
redis 3.07 的集群部署一:关于redis cluster1:redis cluster 的现状1) : 节点自动发现2) :slave->master 选举,集群容错3) :Hot resharding: 在线分片4) :进群管理:cluster xxx5) : 基于配置(nodes-port.conf) 的集群管理6) :ASK 转向/MOVED 转向机制.2:redis cluster 架构1) redis-cluster 架构图架构细节:(1) 所有的redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽.(2) 节点的fail 是通过集群中超过半数的节点检测失效时才生效.(3) 客户端与redis 节点直连,不需要中间proxy 层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可(4) redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护node<->slot<->value2) redis-cluster 选举: 容错(1) 领着选举过程是集群中所有master 参与,如果半数以上master 节点与master 节点通信超过(cluster-node-timeout), 认为当前master 节点挂掉.(2) : 什么时候整个集群不可用(cluster_state:fail), 当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down) 错误a: 如果集群任意master 挂掉,且当前master 没有slave. 集群进入fail 状态,也可以理解成进群的slot 映射[0-16383] 不完成时进入fail 状态.b:如果进群超过半数以上master 挂掉,无论是否有slave 集群进入fail 状态.二:redis cluster 的使用1: 安装redis cluster 所需软件软件:redis-3.0.7.tar.gzredis-3.2.2.gemruby-2.2.4.tar.gzrubygems-2.6.2.zip(1) 安装ruby-2.2.4.tar.gz1. tar -zxvf ruby-2.2.4.tar.gz2. cd ruby-2.2.43. ./configure --prefix=/tfms/ruby4. make && make install5. echo "export PATH=/tfms/ruby/bin:$PATH" >> ~/.bash_profile6. source ~/.bash_profile7. [root@redis ruby-2.2.4]# ruby -version8. ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux](2) 安装rubygems-2.6.2.zip1. unzip rubygems-2.6.2.zip2. cd rubygems-2.6.23. ruby setup.rb(3) 安装redis-3.2.2.gem1. gem install -l /tfms/redis-3.2.2.gem报错解决:ERROR: Loading command: install (LoadError)no such file to load –zlib安装系统带的zlib 包解决不了问题,进入ruby 的源码包记性安装。
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缓存的高可用性和容灾能力,合理的集群部署和容灾方案是必要的。
一、Redis集群部署方案1. 主从复制模式主从复制模式是Redis集群中最常见也是最简单的部署方案。
在这种模式下,通过一个或多个主节点与多个从节点相连,主节点负责处理写操作,从节点负责处理读操作。
主从复制模式的部署步骤如下:(1)配置主节点:在主节点的配置文件中,设置"slaveof no one",并配置适当的密码验证和数据持久化选项。
(2)配置从节点:在从节点的配置文件中,设置"slaveof 主节点IP 主节点端口",并配置适当的密码验证和数据持久化选项。
(3)启动Redis实例:分别启动主节点和从节点的Redis实例。
(4)验证复制状态:通过命令"info replication"来查看主从节点的连接状态和复制效果。
2. 哨兵模式在主从复制模式下,当主节点发生故障时,需要手动将某个从节点提升为新的主节点。
为了解决这一问题,Redis提供了哨兵模式,通过哨兵节点监控主从节点的状态,实现自动故障切换。
哨兵模式的部署步骤如下:(1)配置哨兵节点:在每个哨兵节点的配置文件中,设置"sentinel monitor name 主节点IP 主节点端口 quorum",其中name为主节点的名称,quorum是多数节点的意思。
(2)启动哨兵实例:分别启动哨兵实例。
(3)验证故障切换:通过故障模拟或手动关闭主节点的方式,验证哨兵节点是否能够自动切换主节点。
二、Redis容灾方案1. 数据持久化Redis提供了两种数据持久化的方式,即RDB快照和AOF日志。
RDB快照是将Redis内存中的数据以快照的方式保存到磁盘上,而AOF日志是将每个写操作追加到日志文件中。
docker实战之redis集群部署
docker实战之redis集群部署1、任务 实现三主三从的redis集群,当主redis挂掉的时候,副redis能顶上。
2、步骤(1)创建⼀个⽹卡 命令:docker network create redis --subnet 172.38.0.0/16 (2)通过shell脚本创建留个redis配置⽂件 脚本内容如下for port in $(seq 1 6); \do \mkdir -p /mydata/redis/node-${port}/conftouch /mydata/redis/node-${port}/conf/redis.confcat << EOF >/mydata/redis/node-${port}/conf/redis.confport 6379bind 0.0.0.0cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000cluster-announce-ip 172.38.0.1${port}cluster-announce-port 6379cluster-announce-bus-port 16379appendonly yesEOFdone含义:创建留个redis配置信息的⽂件夹,并写⼊redis集群的信息。
查看信息是否创建成功。
查看配置信息是否写⼊。
(3)启动六个redis容器服务 命令第⼀个:docker run -p 6371:6379 -p 16371:16379 --name redis-1 \-v /mydata/redis/node-1/data:/data \-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf 第⼆个:docker run -p 6372:6379 -p 16372:16379 --name redis-2 \-v /mydata/redis/node-2/data:/data \-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf 以此类推。
Redis集群部署手册
Redis集群部署手册Redis集群部署手册一.部署环境OS:Red Hat Enterprise Linux Server release 6.7Redis Version: 3.0.0IP-01: 10.32.60.138 Port:6380,6381IP-02:10.32.60.139 Port:6382,6383IP-03:10.32.60.140 Port:6383,6384主节点01:10.32.60.138:6380主节点02:10.32.60.139:6382主节点03:10.32.60.140:6384从节点01:10.32.60.138:6381从节点02:10.32.60.138:6383从节点03:10.32.60.138:6385二.安装路径redis主目录:/opt/software/redis-serverredis 配置文件目录:/etc/redis日志存放目录:/opt/software/redis三.Redis 安装配置1.安装#tar –xzvf redis-3.0.0.tar.gz 解压#cd /opt/software/redis3.0.0#make && make PREFIX=/opt/software/redis-server install 编译安装#cp redis.conf /etc/redis/redis-6380.conf 配置文件#cp redis.conf /etc/redis/redis-6381.conf 配置文件2.配置以10.32.60.138 6380 节点为例redis 配置文件放在 /etc/redis 目录下,根据端口来配置节点设置后台运行:改为daemonize yes修改默认端口:port 6380其他节点根据端口号修改使用默认的日志级别:loglevel notice修改日志路径:改为logfile /opt/software/redis/redis-6380.log 其他节点根据端口号修改日志文件名称注释rdb保存条件(这样在运行过程中将不触发rdb模式):改为#save 900 1#save 300 10#save 60 10000修改保存目录路径:dir /opt/software/redis修改最大客户端连接数: maxclients 10000修改最大内存限制:maxmemory 16gb设置启动AOF持久模式:改为appendonly yes修改默认AOF文件名:appendfilename "appendonly-6380.aof"(按节点端口号来修改名称)使用默认fsync形式:appendfsync everysec(默认文件中已配置)设置启用集群模式:改为cluster-enabled yes修改集群配置文件名:cluster-config-file nodes-6380.conf(按需要改写)设置集群节点超时时间:改为cluster-node-timeout 5000(单位为毫秒)其他服务器的节点根据端口号不通来修改以上配置选项启动redis 节点10.32.60.138/opt/software/redis-server/redis-server /etc/redis/redis-6380.conf /opt/software/redis-server/redis-server /etc/redis/redis-6381.conf 10.32.60.139/opt/software/redis-server/redis-server /etc/redis/redis-6382.conf /opt/software/redis-server/redis-server /etc/redis/redis-6383.conf 10.32.60.140/opt/software/redis-server/redis-server /etc/redis/redis-6384.conf /opt/software/redis-server/redis-server /etc/redis/redis-6385.conf四.创建集群1.节点建立通信登录10.32.60.138执行以下命令#redis-cli –p 6380#cluster meet 10.32.60.138 6381#cluster meet 10.32.60.139 6382#cluster meet 10.32.60.139 6383#cluster meet 10.32.60.140 6384#cluster meet 10.32.60.140 6385#cluster nodes 查看已经建立的节点2.将16384个槽点分配给主节点#redis-cli -h 10.32.60.138 -p 6380 cluster addslots {0..5461}#redis-cli -h 10.32.60.139 -p 6382 cluster addslots {5462..10922}#redis-cli -h 10.32.60.140 -p 6384 cluster addslots {10923..16383}3.配置主节点的从节点分别在每个从节点登录#redis-cli –p 6381#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)#redis-cli –p 6383#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)#redis-cli –p 6385#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)四.集群状态检查检查集群的状态,在任意节点登录#redis-cli –p 6380#cluster infocluster_state 状态为OK 则说明集群处于正常状态五.集群容灾说明三台服务器上共计部署6个节点,其中每台机器上各有一个主节点和从节点,一台机器宕机不影响节点的正常通信,如果两台机器同时宕机,则集群出于瘫痪状态,无法正常提供服务从节点Slave 故障节点。
Linux下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
Linux下Redis集群安装部署及使⽤详解(在线和离线两种安装+相关错误解决⽅案)⼀、应⽤场景介绍 本⽂主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联⽹的Linux环境和脱机的Linux环境下是如何安装的。
因为⼤多数时候,公司的⽣产环境是在内⽹环境下,⽆外⽹,服务器处于脱机状态(最近公司要上线项⽬,就是⽆外⽹环境的Linux,被离线安装坑惨了,⾛了很多弯路,说多了都是⾎泪史啊%>_<%)。
这也是笔者写本⽂的初衷,希望其他⼈少⾛弯路,下⾯就介绍如何在Linux安装部署Redis集群。
⼆、安装环境及⼯具 系统:Red Hat Enterprise Linux Server release 6.6 ⼯具:XShell5及Xftp5 安装包:GCC-7.1.0 Ruby-2.4.1 Rubygems-2.6.12 Redis-3.2.9(3.x版本才开始⽀持集群功能)三、安装步骤 要搭建⼀个最简单的Redis集群,我们⾄少需要6个节点:3个Master和3个Slave。
那为什么需要3个Master呢?其实就是⼀个“铁三⾓”的关系,当1个Master下线的时候,其他2个Master 和对应的Salve⽴马就能顶替上去,确保集群能够正常使⽤,如果你之前了解Mongodb/Hadoop/Strom这些的话,你就很容易⽬标⼀般分布式的最低要求基数个数节点,这样便于选举(少数服从多数的原则)。
本⽂当中,我们就偷下懒,在⼀台Linux虚拟机上搭建6个节点的Redis集群(实际真正⽣产环境,需要3台Linux服务器分布存放3个Master)1、安装GCC环境安装Redis需要依托GCC环境,先检查Linux是否已经安装了GCC,如果没有安装,则需要进⾏安装检查GCC是否安装,可以看看版本号$ gcc -v如果已经安装了GCC,则会显⽰以下信息如果没有任何信息,则我们可以通过命令yum install gcc-c++进⾏在线安装$ yum install gcc-c++如果没有⽹络的时候,我们就需要下载GCC的安装包进⾏⼿动安装了,具体⽅法还是⽐较复杂的,具体离线安装GCC的⽅法,请参考我的另外⼀篇⽂章《》2、安装Ruby和Rubygems如果有⽹的话,则通过yum命令进⾏安装,⾃动将关联的依赖包全部安装$ yum install ruby$ yum install rubygems如果是离线的状态,我们则可以选择下载Ruby和Rubygems,解压⼿动进⾏安装,具体的⽅法请参考我的另外两篇⽂件《》和《》,这⾥我们不做多讲解。
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 创建集群并添加节点。
Redis缓存的集群部署和高可用性配置方法
Redis缓存的集群部署和高可用性配置方法Redis是一款高性能、可靠的内存数据库,广泛应用于各个领域的缓存系统中。
为了保证Redis缓存的稳定性和高可用性,我们需要将Redis部署为集群,并进行相应的配置。
本文将介绍Redis缓存的集群部署和高可用性配置方法。
一、Redis集群部署方法1. 配置Redis集群的主从关系在Redis集群中,主从复制是实现高可用性的关键。
我们可以通过在配置文件redis.conf中设置slaveof参数,将一个Redis实例设置为另一个实例的从服务器。
这样,在主服务器发生故障时,从服务器将自动切换为主服务器,确保系统的连续性和稳定性。
2. 分配和配置集群节点在Redis集群中,我们需要将数据分布到不同的节点上,以实现负载均衡和故障恢复。
通常,我们可以将Redis集群分为多个节点,并将每个节点配置为独立的Redis实例。
为了确保数据的可靠性和高可用性,我们应在不同的主机上分配这些节点,并在每个节点上设置不同的端口号。
3. 创建和启动Redis集群在配置好Redis集群的主从关系和节点分配后,我们可以使用Redis 的自带工具redis-cli来创建和启动Redis集群。
首先,我们需要在每个节点上运行redis-server命令来启动Redis实例。
然后,我们使用redis-cli工具连接到其中一个节点,并使用cluster meet命令将其他节点添加到集群中。
最后,我们使用cluster replicate命令将主节点配置为从节点的主服务器。
通过这些步骤,我们可以成功创建和启动Redis集群。
二、Redis高可用性配置方法1. 使用哨兵模式实现高可用性除了将Redis部署为集群外,我们还可以使用哨兵模式来实现Redis 的高可用性。
Redis哨兵是一个独立的进程,它可以监控Redis集群中的主服务器和从服务器的状态,并在主服务器发生故障时自动进行故障转移。
2. 配置Redis哨兵要配置Redis哨兵,我们需要创建一个sentinel.conf的配置文件,并在其中指定监控的主从服务器的IP地址和端口号。
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我关闭了,可以忽略不影响使⽤。
rediscluster集群部署方案
rediscluster集群部署⽅案什么是 Redis 集群Redis 集群是⼀个分布式(distributed)、容错(fault-tolerant)的 Redis 实现,集群可以使⽤的功能是普通单机 Redis 所能使⽤的功能的⼀个⼦集(subset)。
Redis 集群中不存在中⼼(central)节点或者代理(proxy)节点,集群的其中⼀个主要设计⽬标是达到线性可扩展性(linear scalability)。
Redis 集群为了保证⼀致性(consistency)⽽牺牲了⼀部分容错性:系统会在保证对⽹络断线(net split)和节点失效(node failure)具有有限(limited)抵抗⼒的前提下,尽可能地保持数据的⼀致性。
请注意,本教程使⽤于Redis3.0(包括3.0)以上版本如果你计划部署集群,那么我们建议你从阅读这个⽂档开始。
Redis集群介绍Redis 集群是⼀个提供在多个Redis间节点间共享数据的程序集。
Redis集群并不⽀持处理多个keys的命令,因为这需要在不同的节点间移动数据,从⽽达不到像Redis那样的性能,在⾼负载的情况下可能会导致不可预料的错误.Redis 集群通过分区来提供⼀定程度的可⽤性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:⾃动分割数据到不同的节点上。
整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
Redis 集群的数据分⽚Redis 集群没有使⽤⼀致性hash, ⽽是引⼊了哈希槽的概念.Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责⼀部分hash槽,举个例⼦,⽐如当前集群有3个节点,那么:节点 A 包含 0 到 5500号哈希槽.节点 B 包含5501 到 11000 号哈希槽.节点 C 包含11001 到 16384号哈希槽.这种结构很容易添加或者删除节点. ⽐如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我像移除节点A,需要将A中得槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可. 由于从⼀个节点将哈希槽移动到另⼀个节点并不会停⽌服务,所以⽆论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可⽤的状态. Redis 集群的主从复制模型为了使在部分节点失败或者⼤部分节点⽆法通信的情况下集群仍然可⽤,所以集群使⽤了主从复制模型,每个节点都会有N-1个复制品.在我们例⼦中具有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽⽽不可⽤.然⽽如果在集群创建的时候(或者过⼀段时间)我们为每个节点添加⼀个从节点A1,B1,C1,那么整个集群便有三个master节点和三个slave节点组成,这样在节点B失败后,集群便会选举B1为新的主节点继续服务,整个集群便不会因为槽找不到⽽不可⽤了不过当B和B1 都失败后,集群是不可⽤的.Redis ⼀致性保证Redis 并不能保证数据的强⼀致性. 这意味这在实际中集群在特定的条件下可能会丢失写操作.第⼀个原因是因为集群是⽤了异步复制. 写操作过程:客户端向主节点B写⼊⼀条命令.主节点B向客户端回复命令状态.主节点将写操作复制给他得从节点 B1, B2 和 B3.主节点对命令的复制⼯作发⽣在返回命令回复之后,因为如果每次处理命令请求都需要等待复制操作完成的话,那么主节点处理命令请求的速度将极⼤地降低 —— 我们必须在性能和⼀致性之间做出权衡。
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,否则什么也不做。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Redis集群部署手册
一.部署环境
OS:Red Hat Enterprise Linux Server release 6.7
Redis Version: 3.0.0
IP-01: 10.32.60.138 Port:6380,6381
IP-02:10.32.60.139 Port:6382,6383
IP-03:10.32.60.140 Port:6383,6384
主节点01:10.32.60.138:6380
主节点02:10.32.60.139:6382
主节点03:10.32.60.140:6384
从节点01:10.32.60.138:6381
从节点02:10.32.60.138:6383
从节点03:10.32.60.138:6385
二.安装路径
redis主目录:/opt/software/redis-server
redis 配置文件目录:/etc/redis
日志存放目录:/opt/software/redis
三.Redis 安装配置
1.安装
#tar –xzvf redis-3.0.0.tar.gz 解压
#cd /opt/software/redis3.0.0
#make && make PREFIX=/opt/software/redis-server install 编译安装
#cp redis.conf /etc/redis/redis-6380.conf 配置文件
#cp redis.conf /etc/redis/redis-6381.conf 配置文件
2.配置
以10.32.60.138 6380 节点为例
redis 配置文件放在 /etc/redis 目录下,根据端口来配置节点
设置后台运行:改为daemonize yes
修改默认端口:port 6380其他节点根据端口号修改
使用默认的日志级别:loglevel notice
修改日志路径:改为logfile /opt/software/redis/redis-6380.log 其他节点根据端口号修改日志文件名称
注释rdb保存条件(这样在运行过程中将不触发rdb模式):改为
#save 900 1
#save 300 10
#save 60 10000
修改保存目录路径:dir /opt/software/redis
修改最大客户端连接数: maxclients 10000
修改最大内存限制:maxmemory 16gb
设置启动AOF持久模式:改为appendonly yes
修改默认AOF文件名:appendfilename "appendonly-6380.aof"(按节点端口号来修改名称)
使用默认fsync形式:appendfsync everysec(默认文件中已配置)
设置启用集群模式:改为cluster-enabled yes
修改集群配置文件名:cluster-config-file nodes-6380.conf(按需要改写)
设置集群节点超时时间:改为cluster-node-timeout 5000(单位为毫秒)
其他服务器的节点根据端口号不通来修改以上配置选项
启动redis 节点
10.32.60.138
/opt/software/redis-server/redis-server /etc/redis/redis-6380.conf /opt/software/redis-server/redis-server /etc/redis/redis-6381.conf 10.32.60.139
/opt/software/redis-server/redis-server /etc/redis/redis-6382.conf /opt/software/redis-server/redis-server /etc/redis/redis-6383.conf 10.32.60.140
/opt/software/redis-server/redis-server /etc/redis/redis-6384.conf /opt/software/redis-server/redis-server /etc/redis/redis-6385.conf
四.创建集群
1.节点建立通信
登录10.32.60.138执行以下命令
#redis-cli –p 6380
#cluster meet 10.32.60.138 6381
#cluster meet 10.32.60.139 6382
#cluster meet 10.32.60.139 6383
#cluster meet 10.32.60.140 6384
#cluster meet 10.32.60.140 6385
#cluster nodes 查看已经建立的节点
2.将16384个槽点分配给主节点
#redis-cli -h 10.32.60.138 -p 6380 cluster addslots {0..5461}
#redis-cli -h 10.32.60.139 -p 6382 cluster addslots {5462..10922}
#redis-cli -h 10.32.60.140 -p 6384 cluster addslots {10923..16383}
3.配置主节点的从节点
分别在每个从节点登录
#redis-cli –p 6381
#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)
#redis-cli –p 6383
#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)
#redis-cli –p 6385
#cluster replicate 主节点ID(查看主节点id命令 cluster nodes)四.集群状态检查
检查集群的状态,在任意节点登录
#redis-cli –p 6380
#cluster info
cluster_state 状态为OK 则说明集群处于正常状态
五.集群容灾说明
三台服务器上共计部署6个节点,其中每台机器上各有一个主节点和从节点,一台机器宕机不影响节点的正常通信,如果两台机器同时宕机,则集群出于瘫痪状态,无法正常提供服务
从节点Slave 故障
节点。