共计 3342 个字符,预计需要花费 9 分钟才能阅读完成。
搭建 3 主 3 从的 redis cluster: 基于 redis 分布式锁。
1.redis 包上传
将 redis-4.0.1.tar.gz 包上传到一台机器下来,/usr/local 目录下,解压缩,重命名为 redis
scp ./redis-4.0.1.tar.gz ./ruby-2.3.4.tar.gz root@192.168.1.8:/usr/local/
tar -zxvf redis-4.0.1.tar.gz // 解压 redis
mv redis-4.0.1 redis // 将解压后的 redis 文件命名为 redis
2. 装置 redis 依赖
yum install -y tcl gcc zlib-devel openssl-devel
以上装置了 tcl、gcc、zlib-devel、openssl-devel
3. 编译 redis
进入 redis 录内,执行 make MALLOC=libc 命令
make MALLOC=libc
4. 把 redis 的一些命令脚本拷贝到 PATH 变量所在的目录
cp -a src/redis-server src/redis-cli src/redis-sentinel src/redis-trib.rb src/redis-check-aof src/redis-check-rdb src/redis-benchmark /usr/local/bin/
那个 /usr/local/bin,就是 PATH 变量的目录,这样就能够间接执行 redis 的一些命令了
5、创立 redis 集群的目录
cd /opt
mkdir redis-cluster
mkdir redis-cluster/nodes-{7001,7002,7003} // 在 redis-cluster 上面创立:nodes-7001、nodes-7002、nodes-7003 的 3 个目录
6、批改配置文件
编辑 redis.conf 配置文件(以 7001 来举个例子,将 7002 和 7003 都编辑一下配置文件)
cd redis-cluster/nodes-7001
vi redis.conf
批改配置文件内容如下:
bind 127.0.0.1 192.168.9.216 //(留神:bind 的意思不是绑定内部服务器的 IP,而是绑定本机能够承受拜访的 IP)
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 // 集群节点之间超时工夫是 15 秒
save 900 1 //
save 300 10
save 60 10000
dbfilename dump.rdb
appendfilename "appendonly.aof"
appendfsync everysec
下面 7001 配置做完之后,将 7001 的下面配置拷贝到 7002、7003 目录下;而后批改对应配置的个性化配置门路即可。port、pidfile、logfile、dir、cluster-config-file。
7. 另一台机器设置
在另外一台机器上,反复下面的步骤,然而弄成 7001、7002、7003
8、顺次启动各个 redis 实例
两台机器上都顺次执行上面的命令就能够了:
cd /usr/local/redis/src
./redis-server /opt/redis-cluster/nodes-7001/redis.conf // 以配置文件模式启动 redis 服务.
./redis-server /opt/redis-cluster/nodes-7002/redis.conf
./redis-server /opt/redis-cluster/nodes-7003/redis.conf
这个时候看 nodes-7001 外面,会主动生成一些文件,包含 nodes-7001.conf(主动生成的集群配置文件),appendonly.aof,redis_7001.log,redis_7001.pid
查看启动过程
ps -ef | grep redis
9. 装置 ruby
咱们的这个 centos 7 操作系统默认没带 ruby
将 ruby-2.3.4.tar.gz 上传到 /usr/local 下,解压缩,重命名为 ruby
cd ruby
./configure
make && make install
ruby -v
依照下面的步骤,两台机器都装一下 ruby
10. 装置 ruby-redis.gem
(如果之前没装过上面的依赖,那么:首先装置:yum install -y zlib-devel openssl-devel)
咱们装置 ruby-redis.gem 是去对应 redis 上来装置。
在 /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
其次装置:ruby 的相干货色
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
11. 创立 redis cluster 集群
进入 redis/src 上面:执行如下命令。
./redis-trib.rb create --replicas 1 192.168.1.8:7001 192.168.1.8:7002 192.168.1.8:7003 192.168.1.9:7001 192.168.1.9:7002 192.168.1.9:7003
跟上所有的 redis 实例,一共是 6 个
redis cluster 主动会将 6 个 redis 实例做成 3 主 3 从的
此时显示始终在期待,其实是因为 redis.conf 中的 bind 出了问题,不能 bind 127.0.0.1
在两台机器上,都执行:ps -aux | grep redis,看到 3 个 redis 过程
kill -9 杀死所有的 redis 过程
对 /opt/redis-cluster 目录下的 nodes- 几个文件夹内的文件,都删除,保留一个 redis.conf*
而后批改 6 个 redis 实例的 redis.conf,bind 外面都去掉 127.0.0.1
重启启动 6 个 redis 实例
再次执行 redis-trib.rb create –replicas 1 命令
12. 测试 redis cluster
在 /usr/local/redis/src 目录下:
redis-cli -c -h 192.168.1.8 -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
参考
http://www.redis.cn/commands/…
https://blog.csdn.net/hanguof…