这里用三台服务器搭建一个完全分布式redis集群,用来做爬虫请求url的共享队列.每台服务器创建两个节点(一个master 一个slave),当mater挂了的时候slave会顶上去,这样就构成了一个三主三从的集群。
三台服务器:host1 host2 host3
6379端口为主节点,6380为辅助节点
1.下载
下载地址:http://download.redis.io/releases/
可选想要的版本进行下载,一般用http://download.redis.io/releases/redis-stable.tar.gz
cd /root
wget http://download.redis.io/releases/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
mv redis-stable redis-6379
2编译redis
cd redis-6379
make
make install
3修改配置
vi redis.conf
#redis后台运行
daemonize yes
#允许访问的机器
bind 0.0.0.0
#端口
port 6379
#日志输入配置
loglevel notice
logfile"redis-6379.log"
#集群配置
#开启集群
cluster-enabled yes
#集群的配置,首次启动时会自动生成
cluster-config-filenode-6379.log
#请求超时时间当前设置为5秒
cluster-node-timeout 5000
#aof日志开启 ,每次写操作都会记录一条日志
appendonly yes
4启动 测试
src/redis-server redis.conf
ps -ef | grep redis
看到6379正在运行
5.搭建集群
安装 ruby
yum -y install ruby
yum -y install rubygems
安装 ruby 的redis 驱动
gem install redis
将redis-6379复制一份为redis-6380,再修改配置文件
#redis后台运行
daemonize yes
#允许访问的机器
bind 0.0.0.0
#端口
port 6380
#日志输入配置
loglevel notice
logfile"redis-6380.log"
#集群配置
#开启集群
cluster-enabled yes
#集群的配置,首次启动时会自动生成
cluster-config-filenode-6380.log
#请求超时时间当前设置为5秒
cluster-node-timeout 5000
#aof日志开启 , 每次写操作都会记录一条日志
appendonly yes
命令创建集群:
src/redis-trib.rb create –replicas 1 host1:6379 106.host2:6379 host3:6379host1:6380 106.host2:6380 host3:6380
( 1表示主从关系1:1的比例,前三个是主节点)
查看集群情况:
src/redis-cli
cluster info
6集群测试
集群测试
进去集群环境:
[root@localhost cluster]# redis-cli -c -h 127.0.0.1 -p 6379
127.0.0.1:7000>set sex male
Ok
127.0.0.1:7000>get sex
“male”
切换任意节点:
[root@iZuf6c4xlucvh6ze6eng2hZ redis-6379]# src/redis-cli -c -h 127.0.0.1 -p 6379
[root@localhost cluster]# redis-cli -c -h 127.0.0.1 -p 7004
127.0.0.1:7004> get sex
-> Redirected to slot [2584] located at 127.0.0.1:7000
"male"
7.清空集群数据
src/cli
flushall
需要每个节点都要执行一次
8redis可视化操作工具
Redis Desktop Manager
9报错备注
1》 ruby版本太低
手动安装ruby环境
$ wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz
$ tar -zxvf ruby-2.2.3.tar.gz
$ cd ruby-2.2.3.tar.gz
$ ./configure
$ make && make install
查看安装是否成功
$ ruby -v
如果报错执行
$ export PATH=/usr/local/bin:$PATH
再测试
$ ruby -v
解决:
删除 nodes-6379.conf redis-6379.log
根目录 Chmod -R 777 *
查看防火墙状态service iptables status
重新启动redis