redis集群启动(redis 多主多从集群搭建) |
您所在的位置:网站首页 › docker部署rediscluster › redis集群启动(redis 多主多从集群搭建) |
本文目录redis 多主多从集群搭建宝塔搭建redis集群高性能高并发网站架构,教你搭建Redis5缓存集群windows下redis集群怎么开启使用 redis-cli 搭建 Redis 集群Redis-Cluster集群redis cluster集群部署Redis集群模式2-RedisCluster模式linux 的环境搭建(二)--redis单机环境、生产环境、集群环境的搭建linux redis集群怎么启动redis 多主多从集群搭建 多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展 redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点构成三主三从 redis 多节点启动 使用 ./redis-server xxxx.conf 指定不同的配置文件即可 宝塔搭建redis集群单台服务器创建集群,多台也是一样操作,使用集群端口6380,6381,6382,6383,6384,6385 1、宝塔安装redis,路径一般是 /www/server/redis ,使用命令 ln -s /www/server/redis/src/redis-server /usr/bin/redis-server 将redis-server加入环境变量; 2、创建集群文件目录,如 /home/redis/cluster,从redis安装路径复制redis.conf到/home/redis/cluster下,并修改名称为redis_6380.conf,重复操作添加redis_6381.conf,redis_6382.conf,redis_6383.conf,redis_6384.conf,redis_6385.conf 3、修改配置文件,打开redis_6380.conf文件并一下内容,另外几个文件的端口分别改成和文件端口的一致 port 6380 pidfile /www/server/redis/redis_6380.pid logfile “/home/redis/log/redis_6380.log“ dbfilename dump_6380.rdb cluster-enabled yes cluster-config-file nodes-6380.conf cluster-node-timeout 15000 4、开启端口,将上面的6个端口分别开启,包括宝塔的和服务器的端口 5、分别启动redis redis-server cluster/redis_6380.conf 6、创建集群 redis-cli --cluster create 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 127.0.0.1:6385 --cluster-replicas 1 如果不加–cluster-replicas 1则会创建6个主节点7、通过端口连接redis redis-cli -p 6384 使用命令 cluster info 查看集群信息8、设置测试连接6382端口redis获取test 获取成功 高性能高并发网站架构,教你搭建Redis5缓存集群一、Redis集群介绍 Redis真的是一个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有数据都放在内存中,所以读写速度性能非常好。Redis是基于内存进行操作的,性能较高,可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。 网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,需要快速响应,前端发送请求、后端和mysql数据库交互,进行sql查询操作,读写比较慢,这时候引入Redis ,把从mysql 的数据缓存到Redis 中,下次读取时候性能就会提高;当然,它也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失,Redis能从硬盘中恢复快照数据到内存中。 Redis 发布了稳定版本的 5.0 版本,放弃 Ruby的集群方式,改用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。Redis-Cluster集群采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前ma 修改后,执行如下命令关闭集群: /www/server/redis/utils/create-cluster/create-cluster stop 重新启动集群: /www/server/redis/utils/create-cluster/create-cluster start 8.帮助信息 执行redis-cli --cluster help,查看更多帮助信息 redis-cli --cluster help 吉海波 windows下redis集群怎么开启将./redis-stable/src/目录下面redis-server redis.conf两个文件复制到./7000/文件夹中,当前目录下使用命令:cp ./redis-stable/src/redis-server ./redis-stable/redis.conf ./7000,然后,修改redis.conf文件中内容,将下列值改为如下:port 7000 #设置端口cluster-enabled yes #打开集群支持cluster-config-file nodes.conf #节点配置文件名cluster-node-timeout 5000 #节点超时时间appendonly yes #设置redis数据操作方式daemonize yes #设置redis默认以后台程序方式运行 使用 redis-cli 搭建 Redis 集群参考: Redis 集群教程 redis.conf 文件中包含很多信息,如:端口号、持久化方式、持久化的文件等等。 使用写入了不同端口号的配置文件就可以启动多个 Redis 实例。 下面是一个最少选项的集群的配置文件: 文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf 。节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。 要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。 首先, 让我们进入一个新目录, 并创建六个以端口号为名字的子目录, 稍后我们在将每个目录中运行一个 Redis 实例: 命令如下: 在文件夹 7000 至 7005 中, 各创建一个 redis.conf 文件, 文件的内容可以使用上面的示例配置文件, 但记得将配置中的 port 和 cluster-conf-file 中的端口号数字 从 7000 改为与文件夹名字相同的号码。不同的集群节点要使用不同的 cluster-conf-file 。 配置文件的路径是可以自定义的。创建完毕后分别启动一个实例。 网上看到的教程,包括参考的官方文档里的文章,大多是使用以下方式创建集群。 这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。 之后跟着的其他参数则是这个集群实例的地址列表,3 个 master 3 个 slave redis-trib 会打印出一份预想中的配置给你看,如果你觉得没问题的话,就可以输入 yes,redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息: 这表示集群中的 16384 个槽都有至少一个主节点在处理,集群运作正常。 但是在 Redis 的 github 仓库 中看到,该文件已经不建议使用。
我在 手把手教你实现 Docker 部署 Redis 集群 的评论中看到, 现在 redis-cli --cluster 命令已经可以创建集群,分配槽,分配主从服务器了 ,于是使用以下命令了解到相关的命令。 可以看到,命令的组成形式和旧方式是一致的。 可以看到执行命令后,redis 客户端做了以下工作: 输入 yes 后,redis 客户端做了以下工作: 集群搭建完毕。 因为 Redis Cluster 默认要求所有的槽位被覆盖,可以通过修改 cluster-require-full-coverage yes 配置来改变该行为。 CLUSTERDOWN The cluster is down in redis 这里的回答中提到:我们可以使用 N 个Master 和 N+1 个 Slave,正常情况下多余的一个实例作为随机一个 Master 的 Slave,一旦有实例宕机,可以迅速顶替,以保证每个主节点总是有至少一个从节点保持数据同步。 ps:搜索命令行的输出时,才看到 深入理解Redis系列之集群环境搭建 这篇文章,有时候搜索的关键词不合适容易走弯路啊…… Redis-Cluster集群在哨兵模式中,仍然只有一个 master 节点。当并发写请求较大时,哨兵模式并不能缓解写压力。 在redis-cluster集群中,每一个主节点可以添加多个从节点,主节点和从节点遵循主从模式的特性。 当用户需要处理更多的读请求时,添加从节点可以扩展系统的读性能。 redis集群的主节点内置了类似Sentinel的节点故障检测和自动故障转移功能。当集群中的某个主节点下线时,集群中的其他在线主节点发现了以后,会对已下线的主节点进行故障转移。集群进行故障转移的方法和Sentient进行故障转移的方法基本一致,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群中不需要使用Sentinel。 redis-cluster集群将键存储空间分割为16384个槽位(slot),事实上集群最大节点数量是16384个【官方建议最大节点数量不超过1000个节点】。 所有主节点都负责16384个哈希槽中的一部分,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。 一个slot槽位可以存放多个数据,key的槽位计算公式:HASH_SLOT = CRC16(key) mod 16384 由于Redis集群无中心节点,请求会随机发给任意主节点。 主节点只会处理自己负责槽位的命令请求,其他槽位的命令请求,该主节点会返回客户端一个转向错误。 客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求。 系统:CentOS7 Redis: 5.0.9 Redis节点 注意: 配置文件主要修改: 执行结果 按照之前的配置修改并启动,使用以下命令将其加入集群: 添加完新节点后,需要对新添加的主节点进行hash槽重新分配,这样该主节点才能存储数据,redis共有16384个槽。 删除从节点192.168.164.13:7000,node_id:cb21c351b3d2378976bf7d215553d0e04d7fad43 执行结果 存在slot的主节点无法直接删除,所以我们需要先移动主节点192.168.164.13:7001的slot至其他三个主节点 查看集群节点信息 删除主节点 执行结果 查看集群信息 redis cluster集群部署一.服务器设置准备 1. 将6379端口在防火墙看开启 #vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT 注:必须加在 REJECT 前面。 2.修改Selinux参数 #vi /etc/selinux/config SELINUX=disabled 注:分别在其它几个节点上同样配置防火墙和 SELINUX。 二.安装Redis 1.安装系统组件 安装gcc、tcl yum install –y gcc-c++ yum install –y tcl 2.安装redis 2.1.解压 Redis 到/usr/local目录下 # tar -zxvf /root/software/redis-3.2.6.tar.gz -C /usr/local/ 2.2.在解压后的目录中进行 make 和 make test # cd /usr/local/redis-3.2.6 # make # make test 注:要检查 make 和 make test 的结果是否都正确,如果报错,针对性检查并安装系统缺少的组件。 2.3. 复制 redis-server 和 redis-cli 到/usr/local/bin 目录下: # cd src # cp redis-server /usr/local/bin/ # cp redis-cli /usr/local/bin/ 2.4验证 Redis 安装是否成功: # redis-server # redis-cli 注:安装其它 5 台服务器 三.配置集群模式 1.配置 redis.conf 1.1 配置 redis.conf # mkdir /etc/redis # cd /etc/redis # vi redis.conf port 6379 daemonize yes cluster-enabled yes cluster-config-file /etc/redis/nodes.conf cluster-node-timeout 5000 appendonly yes requirepass Ab123456 注 1:cluster-node-timeout 是集群中各节点相互通讯时,允许“失联”的最大毫秒数,本演示 中配置的为 5 秒,如果超过 5 秒某个节点没有向其它节点汇报成功,认为该节点挂了。 注 2:requirepass 是 Redis 访问密码,为了安全起见,该参数建议必须配置,从但客户端 Jedis 版本必须使用 2.8.x 以上的版本,否则需要通过扩展 JedisCluster 来实现对密码访问的 支持。此外几个 Redis 节点的密码应该设置为相同的。 注 3:分别在其它几个节点上创建与上面相同的 redis.conf 文件,内容也相同。 注 4:重启/重建 Redis 集群时,必须删除去/etc/redis/nodes.conf 文件。 1.2以次启动所有节点 # redis-server /etc/redis/redis.conf # redis-server /etc/redis/redis.conf # redis-server /etc/redis/redis.conf # redis-server /etc/redis/redis.conf # redis-server /etc/redis/redis.conf # redis-server /etc/redis/redis.conf 2.安装 Redis 集群所需的 Ruby 工具 2.1安装 Ruby 工具: Redis 集群需要借助其它工具将相关节点加入到 Cluster 中,而这个工具是由 Redis 提供 一个名为 redis-trib.rb 的 ruby 脚本,否则接下来创建 cluster 会失败。 # cd /usr/local/redis-3.2.6/src # yum install –y ruby # yum install -y rubygems # gem install redis --version 3.0.0 # gem list 2.2 设置 Ruby 连接 Redis 的密码: # vi /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb :password =》 “Ab123456“ 注:分别在其它几个节点上用同样的方式安装好 Ruby 工具 3 利用redis-trib.rb 创建 Redis集群 3. 1. 在 src 目录下运行以下脚本: # cd /usr/local/redis-3.2.6/src # ./redis-trib.rb create --replicas 1 10.50.130.101:6379 10.50.130.102:6379 10.50.130.103:6379 10.50.130.104:6379 10.50.130.105:6379 10.50.130.106:6379 注 1:只需在其中某个个节点执行以上脚本(本例在第一个节点执行)。 注 2:利用 redis-trib 创建 Cluster,只需要操作一次即可,假设系统关机、重启,把所有的 节点全部关闭之后,下次重启后,即自动进入 Cluster 模式,不用现次执行 redis-trib.rb cteate 命令。 3.2查看 Cluster 进程: # ps -ef|grep redis # ps -ef|grep redis # ps -ef|grep redis # ps -ef|grep redis # ps -ef|grep redis # ps -ef|grep redis 3.3 查看节点属性(Master/Slave) # cd /usr/local/redis-3.2.6/src # ./redis-trib.rb check 10.50.130.101:6379 # ./redis-trib.rb check 10.50.130.102:6379 # ./redis-trib.rb check 10.50.130.103:6379 # ./redis-trib.rb check 10.50.130.104:6379 # ./redis-trib.rb check 10.50.130.105:6379 # ./redis-trib.rb check 10.50.130.106:6379 3.4查看节点/集群信息 redis-cli 客户端登录到任一个节点,查看: 4.Jedis 测试 Redis 集群 Redis集群模式2-RedisCluster模式Redis哨兵集群模式,每个节点都保存全量同步数据,冗余的数据比较多。从Redis3.0开始官方推出了RedisCluster集群模式 ,采用分片集群模式,可以减少冗余数据,但也提高了集群成本,RedisCluster集群最大的优点: 动态扩容、缩容 。 以最简单的为例,分别搭建3组节点,每组1主2从,如上图示。因机器有限,3组节点分别搭在3个虚拟机中,3台虚拟机IP: 192.168.100.51、192.168.100.52、192.168.100.53 ,每组节点端口: 6381、6382、6383 配置文件基本和原来的一样,主要区别是要开启CLuster集群模式, 3台虚拟机,9个node节点分别启动 因为搭建在了 3台虚拟主机上,所以要先关闭防火墙 用命令将9台节点组成集群,在一台机器运行就行连接集群和单机基本一样,但需要注意2点: 连接以后用 cluster nodes 命令查看节点信息,测试写入杀死52上的主节点,等几秒钟,查看集群情况 然后重启,在查看集群情况,如下图: 集群减少一组主从节点,现在有3组,先把51:6381这一组去掉吧。 192.168.100.51:6381 的从节点分别是 192.168.100.52:6382 , 192.168.100.53:6382 ,直接删除这2个,注意操作时都用到node id 主节点 192.168.100.51:6381 的slots转移到其他1个或多个节点,看硬件配置分配,这里就直接都给 192.168.100.53:6381 吧。 删除之前,先查看一遍节点信息,确认槽位已经转移,再删除 集群扩容肯定是增加一组,即主从一块增加 启动好要增加的服务节点,新增主节点,命令中第2个地址是现在集群中任一个node节点的,注意不要搞错 从节点有2个,分别添加 linux 的环境搭建(二)--redis单机环境、生产环境、集群环境的搭建一、目录 1、工具 2、安装tcl 3、安装单机版redis 4、把redis设置为daemon进程,每次系统启动,redis进程一起启动 5、安装redis cluster 二、工具 2.1、tcl8.6.1-src.tar.gz 2.2、ruby-2.3.1.tar.gz 2.3、redis-4.1.1.gem 2.4、redis-3.2.8.tar.gz 2.5、openssl-1.0.2r.tar.gz 三、安装tcl(安装redis必须先要安装tcl) 3.1、把tcl8.6.1-src.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下四、安装单机版redis 4.1、把redis-3.2.8.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下 4.2、依次运行如下命令: tar -zxvf redis-3.2.8.tar.gz 解压文件 cd redis-3.2.8 make && make test && make install 五、把redis设置为daemon进程,每次系统启动,redis进程一起启动 5.1、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号 5.2、修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379) protected-mode no 取消保护模式,保护模式只能127.0.0.1访问 daemonize yes 让redis以daemon进程运行 pidfile /var/run/redis_6379.pid 设置redis的pid文件位置 bind 192.168.3.110 port 6379 设置redis的监听端口号 dir /var/redis/6379 设置持久化文件的存储位置 logfile /var/log/redis/6379.log 设置日志文件位置 5.6、启动redis,依次执行: cd /etc/init.d, chmod 777 redis_6379,赋读写执行的权限(chmod -R 777 * 是递归把该目录下的所有文件和其子文件全部赋权限) ./redis_6379 start 启动 5.7、确认redis进程是否启动,ps -ef | grep redis 5.8、让redis跟随系统启动自动启动 5.9、重启系统,不手动启动redis,直接连接redis,可以连接上,表示配置成功 此时一个单机版的redis的生产环境已经搭建好了,每次服务器重启,redis都会自动的启动 六、安装redis cluster (redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave) 6.1、前提,我在其它机器上启动了六个redis(安装步骤都如下) 2.2、创建三个目录: mkdir -p /etc/redis-cluster 存放集群配置信息,自动生成配置 mkdir -p /var/log/redis redis日志 mkdir -p /var/redis/7001 存放redis的rdb文件和aof文件 6.3、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_7001,7001是我们希望这个redis实例监听的端口号,并修改redis_7001配置文件中的REDISPORT=7001 6.4、修改/etc/redis/7001.conf中的部分配置为生产环境 6.5、完成了一个redis环境的配置,依次再配置其余五个,分别为7002、7003、7004、7005、7006,每个启动脚本内,都修改对应的端口号 6.6、启动6个redis实例 6.7、创建集群(需要安装ruby、rubygems) 上述命令在部分机器上是可以直接运行完成,成功安装的,但在部分机器上运行第三条命令时会提示ruby版本太低、openssl找不到的问题,下面依次解决这两个问题: 6.8、再次运行gem install redis命令,报出两个错误 6.9、再次运行gem install redis命令,报出一个错误 6.10、再次运行gem install redis命令,报出一个错误 6.11、再次运行gem install redis命令 # gem install redis Successfully installed redis-4.1.1 Parsing documentation for redis-4.1.1 Done installing documentation for redis after 1 seconds WARNING: Unable to pull data from ’ 多master:横向扩容支持更大数据量 linux redis集群怎么启动redis.conf 配置文件说明daemonize no --是否把redis-server启动在后台,默认是“否”。若改成yespidfile /var/run/redis.pid --当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定prot 6379 --指定Redis监听端口,默认端口为6379bind 10.252.1.14 ---绑定的主机地址timeout 0 ---当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能loglevel notice ---指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verboselogfile /mnt/redis/log/redis.log --日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/nulldatabases 16 设置数据库的数量,默认数据库为0,可以使用SELECT 《dbid》命令在连接上指定数据库idsave 900 1 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |