cluster
在node1和node2上搭建redis集群
(1)将redis-4.0.1.tar.gz包上传到一台机器上去,/usr/local目录下,解压缩:tar -zxvf redis-4.0.1.tar.gz ,重命名为redis : mv redis-4.0.1 redis
(2)安装redis需要的一些依赖:yum install -y tcl gcc zlib-devel openssl-devel
(3)进入redis录内:cd redis,执行make test
(4)进入redis录内,执行make MALLOC=libc,进行编译
(5)创建redis集群的目录
cd /opt
mkdir redis-cluster
mkdir redis-cluster/nodes-{7001,7002,7003}
(6)编辑redis.conf配置文件(以7001来举个例子,将7002和7003都编辑一下配置文件)
cd redis-cluster/nodes-7001
vi redis.conf
bind 127.0.0.1 192.168.192.151 => (127.0.0.1去掉,不能要,不然会导致redis集群创建失败)
port 7001
pidfile redis_7001.pid
loglevel notice
logfile "/opt/redis-cluster/nodes-7001/redis_7001.log"
dir /opt/redis-cluster/nodes-7001/
cluster-config-file nodes-7001.conf
daemonize yes
supervised no
appendonly yes
cluster-enabled yes
cluster-node-timeout 15000
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
appendfilename "appendonly.aof"
appendfsync everysec
(7)在另外一台机器上,重复上面的步骤,端口号也是7001、7002、7003
cp nodes-7001/redis.conf nodes-7002,复制然后修改
无聊的童真
(8)安装ruby
我们的这个centos 7操作系统默认没带ruby
ruby -v(默认是老版本ruby,卸载掉)
rpm -qa | grep ruby
yum erase ruby
将ruby-2.3.4.tar.gz上传到/usr/local下,解压缩,重命名为ruby
cd ruby
./configure
make && make install
ruby -v
按照上面的步骤,两台机器都装一下ruby
(9)安装ruby-redis.gem
(如果之前没装过,那么:yum install -y zlib-devel openssl-devel)
在/usr/local/redis下,gem install redis
如果报错:
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
cd /usr/local/ruby/ext/zlib
ruby extconf.rb
make && make install
再次gem install redis,如果再次报错:
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
cd /usr/local/ruby/ext/openssl
ruby extconf.rb
将上个步骤生成的MakeFile文件中的${top_srcdir}都替换为../..
make && make install
基本就是上面两个问题,都解决了之后,就可以正常的:gem install redis
(10)依次启动各个redis实例(以7001作为参考)
在两台机器上都依次执行下面的命令就可以了:
cd /usr/local/redis/src
./redis-server /opt/redis-cluster/nodes-7001/redis.conf
./redis-server /opt/redis-cluster/nodes-7002/redis.conf
./redis-server /opt/redis-cluster/nodes-7003/redis.conf
查看redis cluster状态
ps -ef | grep redis
因为我们现在的重点不是讲redis这个技术,其实我们是在讲基于redis的分布式锁,大家现在对redis不用太过于的纠结,我们就不去管这些东西了,
后面都会详细讲解redis技术的,我们再看
这个时候看nodes-7001里面,会自动生成一些文件,包括nodes-7001.conf(自动生成的集群配置文件),appendonly.aof,redis_7001.log,redis_7001.pid
(11)创建redis cluster集群
cd /usr/local/redis/src
./redis-trib.rb create --replicas 1 192.168.192.150:7001 192.168.192.150:7002 192.168.192.150:7003 192.168.192.151:7001 192.168.192.151:7002 192.168.192.151:7003
跟上所有的redis实例,一共是6个
redis cluster自动会将6个redis实例做成3主3从的
查看日志
cd /opt/redis-cluster/nodes-7001
cat nodes-7001/redis_7001.log
此时显示一直在等待,其实是因为redis.conf中的bind出了问题,不能bind 127.0.0.1
在两台机器上,都执行:ps -aux | grep redis,看到3个redis进程
kill -9 杀死所有的redis进程
对/opt/redis-cluster目录下的nodes-***几个文件夹内的文件,都删除,保留一个redis.conf
rm -rf redis_**
rm -rf app*
rm -rf node*
然后修改6个redis实例的redis.conf,bind里面都去掉127.0.0.1
重新启动6个redis实例
再次执行
cd /usr/local/redis/src
./redis-trib.rb create --replicas 1命令
(12)测试redis cluster
在/usr/local/redis/src目录下:
./redis-cli -c -h 192.168.192.150 -p 7001
127.0.0.1:7001> CLUSTER info
127.0.0.1:7001> CLUSTER nodes
127.0.0.1:7001> set foo bar
127.0.0.1:7003> get foo
(13)检查集群状态
./redis-trib.rb check 192.168.192.150:7001 => redis 4.0
./redis-cli --cluster check 192.168.192.150:7001 => redis 5.0