Redis 集群搭建
2017-06-19 23:05
225 查看
安装redis
1 下载Redis
2 编译
3 redis启动
搭建集群
1 搭建Redis依赖的Ruby环境
11 安装Ruby
12 安装ruby与redis的接口程序
2 集群配置
21 创建集群目录
22 启动每个节点redis服务
然后解压
make 编译这一步可以指定目录,也就是安装的指定目录
把上一步的make 写成 make PREFIX=/usr/local/redis install (在这里我指定的目录为 /usr/local/redis)
安装完毕之后 redis文件夹下面会生成一个bin目录
推荐使用在配置文件中配置守护进程,让redis-server在后台运行。
修改redis.conf配置文件(128行),daemonize no 改为 daemonize yes 以后端模式启动。
执行如下命令启动redis:
至此 redis的安装完成了
这里在同一台服务器用不同的端口表示不同的redis服务器,如下:
主节点:127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
从节点:127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7001
将redis安装目录bin下的文件拷贝到每个700x目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
修改每个700x目录下的redis.conf配置文件:
查看进程
在搭建过程中,感觉每次手动去启动6个redis-server,太累了/(ㄒoㄒ)/~~,就写了一个Shell。
如下(redis_cluster.sh):
直接 ./redis_cluster.sh start 启动所有redis-server 节点。
之前,只是将redis-server的节点全部启动,还有没有加入到redis集群中。
执行创建集群命令
在/usr/local/redis-cluster/执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
说明:
redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点
replicas指定为1表示每个主节点有一个从节点
注意:
如果执行时报如下错误:
解决方法:删除生成的配置文件node-xxxx.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb
创建集群输出如下
查询集群信息
集群创建成功登陆任意redis结点查询集群中的节点情况
到此, 集群搭建完毕~
在保存数据时,可能会出现一下错误:
(error) MOVED 6918 127.0.0.1:7001
意思是:连接到127.0.0.1:7001的redis-server上,进行操作。
详细原因请参考另一篇文章
redis集群报错,(error) MOVED 15495 127.0.0.1:7003
http://blog.csdn.net/qq_21460229/article/details/73477068
1 下载Redis
2 编译
3 redis启动
搭建集群
1 搭建Redis依赖的Ruby环境
11 安装Ruby
12 安装ruby与redis的接口程序
2 集群配置
21 创建集群目录
22 启动每个节点redis服务
1. 安装redis
在这里安装的是redis源码包,所以需要gcc环境支持,没有gcc环境的需要安装gcc# Ubuntu sudo apt-get install gcc gcc-c++ # CentOS sudo yum install gcc gcc-c++
1.1 下载Redis
将从redis官网上下载的redis安装包上传至 /usr/local (或其他目录)然后解压
tar -zxvf redis-3.2.5.tar.gz
1.2 编译
进入解压后的目录进行编译cd /usr/local/redis-3.2.5 # 编译 make
make 编译这一步可以指定目录,也就是安装的指定目录
把上一步的make 写成 make PREFIX=/usr/local/redis install (在这里我指定的目录为 /usr/local/redis)
安装完毕之后 redis文件夹下面会生成一个bin目录
1.3 redis启动
直接运行bin/redis-server,将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。推荐使用在配置文件中配置守护进程,让redis-server在后台运行。
修改redis.conf配置文件(128行),daemonize no 改为 daemonize yes 以后端模式启动。
执行如下命令启动redis:
cd /usr/local/redis ./bin/redis-server ./redis.conf
至此 redis的安装完成了
2. 搭建集群
2.1 搭建Redis依赖的Ruby环境
redis集群管理工具redis-trib.rb依赖ruby环境,所以需要安装ruby环境。2.1.1 安装Ruby
# Ubuntu sudo apt-get install ruby sudo apt-get install rubygems # CentOS or RedHat sudo yum install ruby sudo yum install rubygems
2.1.2 安装ruby与redis的接口程序
sudo gem install redis
2.2 集群配置
集群结点规划这里在同一台服务器用不同的端口表示不同的redis服务器,如下:
主节点:127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
从节点:127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7001
2.2.1 创建集群目录
在/usr/local下创建redis-cluster目录,其下创建7000,7001…,7005目录,如下:将redis安装目录bin下的文件拷贝到每个700x目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
修改每个700x目录下的redis.conf配置文件:
port xxxx # (84行)设置redis cluster node端口号 daemonize yes # (128行)设置为后台运行 pidfile /var/run/redis_7000.pid # (150行)设置进程号文件 redis_6379.pid 改成与端口号一样, 如: redis_7000.pid, 避免开启集群时,多个redis-server服务的pid文件冲突 cluster-enabled yes # (692行)激活集群 cluster-config-file nodes-7000.conf # (700行)配置集群配置文件,与pidfile一样,防止集群中此文件冲突,改为node-加端口号。
2.2.2 启动每个节点redis服务
分别进入7001、7002、…7006目录,执行:./redis-server ./redis.conf
查看进程
ps aux | grep redis-server
在搭建过程中,感觉每次手动去启动6个redis-server,太累了/(ㄒoㄒ)/~~,就写了一个Shell。
如下(redis_cluster.sh):
#!/bin/bash # 指定集群所在的目录 ports=(7000 7001 7002 7003 7004 7005) # 操作参数,默认命令中的第一个参数 cmd=$1 # 主方法 # 根据cmd变量,进行不同的操作 # 如: 开启所有redis-server节点, # 关闭所有redis-server节点, # 重启所有redis-server节点 function main(){ case $cmd in start) start ;; restart) restart ;; stop) stop ;; *) echo 'Please Input Operation Status: { start | restart | stop }' read cmd main ;; esac } # 启动所有节点 function start(){ for i in "${ports[@]}" do echo "Redis Cluster [node : $i] Starting..." $i/redis-server $i/redis.conf done } # 停止所有节点 function stop(){ echo "Redis Cluster Shutdowning..." for i in `ps aux | grep redis-server | grep -v grep | awk '{print $2}'` do kill $i done } # 重启所有节点 function restart(){ stop start } main
直接 ./redis_cluster.sh start 启动所有redis-server 节点。
之前,只是将redis-server的节点全部启动,还有没有加入到redis集群中。
执行创建集群命令
在/usr/local/redis-cluster/执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
说明:
redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点
replicas指定为1表示每个主节点有一个从节点
注意:
如果执行时报如下错误:
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决方法:删除生成的配置文件node-xxxx.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb
创建集群输出如下
>>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 Adding replica 127.0.0.1:7003 to 127.0.0.1:7000 Adding replica 127.0.0.1:7004 to 127.0.0.1:7001 Adding replica 127.0.0.1:7005 to 127.0.0.1:7002 M: be51f27c4567c2f9232f2f323813f8df6803a349 127.0.0.1:7000 slots:0-5460 (5461 slots) master M: 73c1d8b31f43da7eeb2dccdcd481aaa27a254569 127.0.0.1:7001 slots:5461-10922 (5462 slots) master M: 43115acbf57aab099d260cd1972b9c8d6c0df7dc 127.0.0.1:7002 slots:10923-16383 (5461 slots) master S: dc5e18ea874415549ce281fba5c19e84ebbd1089 127.0.0.1:7003 replicates be51f27c4567c2f9232f2f323813f8df6803a349 S: 90d065a53c11bb7636cc5dbea084985fec6134be 127.0.0.1:7004 replicates 73c1d8b31f43da7eeb2dccdcd481aaa27a254569 S: 13145ca2c5b0877aa4cf7ee9da07690ed2bb4b93 127.0.0.1:7005 replicates 43115acbf57aab099d260cd1972b9c8d6c0df7dc 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 127.0.0.1:7000) M: be51f27c4567c2f9232f2f323813f8df6803a349 127.0.0.1:7000 slots:0-5460 (5461 slots) master M: 73c1d8b31f43da7eeb2dccdcd481aaa27a254569 127.0.0.1:7001 slots:5461-10922 (5462 slots) master M: 43115acbf57aab099d260cd1972b9c8d6c0df7dc 127.0.0.1:7002 slots:10923-16383 (5461 slots) master M: dc5e18ea874415549ce281fba5c19e84ebbd1089 127.0.0.1:7003 slots: (0 slots) master replicates be51f27c4567c2f9232f2f323813f8df6803a349 M: 90d065a53c11bb7636cc5dbea084985fec6134be 127.0.0.1:7004 slots: (0 slots) master replicates 73c1d8b31f43da7eeb2dccdcd481aaa27a254569 M: 13145ca2c5b0877aa4cf7ee9da07690ed2bb4b93 127.0.0.1:7005 slots: (0 slots) master replicates 43115acbf57aab099d260cd1972b9c8d6c0df7dc [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
查询集群信息
集群创建成功登陆任意redis结点查询集群中的节点情况
到此, 集群搭建完毕~
在保存数据时,可能会出现一下错误:
(error) MOVED 6918 127.0.0.1:7001
意思是:连接到127.0.0.1:7001的redis-server上,进行操作。
详细原因请参考另一篇文章
redis集群报错,(error) MOVED 15495 127.0.0.1:7003
http://blog.csdn.net/qq_21460229/article/details/73477068
相关文章推荐
- redis集群搭建
- Redis3.x集群的搭建
- Redis集群环境的搭建(从单机模拟到真正的集群搭建)
- Windows中搭建Redis集群
- Springboot Redis分布式集群(2)- 搭建工程引入redis
- redis 分片集群(cluster)搭建
- windows上redis集群搭建附github下载地址
- Redis的单机和集群搭建
- Redis入门之集群(手动搭建)
- Linux Redis集群搭建与简单使用
- redis集群的搭建问题总结
- 我的Redis集群搭建之路
- docker搭建redis3.2官方集群
- Redis集群主从复制(一主两从)搭建配置教程【Windows环境】
- Redis中sentinel集群的搭建和Jedis测试 图文教程[一]
- Windows搭建Redis集群
- Redis 集群搭建完之后
- reids集群学习(一)搭建redis集群环境
- Redis3.0.1集群环境搭建
- 使用ruby自带工具进行redis集群搭建