关于redis:虚拟机搭建3主3从redis集群

6次阅读

共计 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…

正文完
 0