技术我爱编程

Redis 之 集群搭建(连接带加密认证)

2018-01-23  本文已影响20人  loading__

目录

(一)Redis各节点安装

(二)安装Ruby环境

(三)安装RubyGems

(四)使用redis-trib.rb创建集群

(五)集群测试

(六)常见问题

序言

redis-3.2.9.tar.gz(*)    http://www.redis.cn/download.html

ruby-2.3.1.tar.gz(*)   http://www.ruby-lang.org/en/downloads/

rubygems-2.7.4.tgz(*)   https://rubygems.org/pages/download

openssl-1.0.2n.tar.gz     https://www.openssl.org/source/

redis-3.2.1.gem(*)   https://rubygems.org/gems/redis/

下载上述软件包并上传服务器,开始按如下步骤进入安装。

(一)Redis各节点安装

1.解压redis-3.2.9.tar.gz,编译安装;

     cd ~/common

     tar -zxvf redis-3.2.9.tar.gz

     mv redis-3.2.9 redis-cluster

     cd redis-cluster

     make

     make install --prefix=~/common/redis-cluster

2.修改Redis配置文件;

     依次复制出6个节点的配置文件,分别进行编辑配置,操作如下:

     mkdir conf

     cp redis.conf conf/6001.conf

     ...

     cp redis.conf conf/6006.conf

     cd conf

     vi 6001.conf

bind 127.0.0.1

port 6001    #指定端口,6001-6006

daemonize yes    #后台运行

pidfile /root/common/redis-cluster/pid/redis_6001.pid

logfile "/root/common/redis-cluster/logs/redis_6001.log"

#masterauth 123456

#requirepass 123456    #开启加密认证

cluster-enabled yes    #开启集群模式

cluster-node-timeout 15000

cluster-config-file nodes-6001.conf

注:节点加入集群前不可开启加密认证,否则会出现连接不上的现象。

正确做法:先注释该配置启动所有节点,待集群创建完毕后,修改配置重启各个节点即可,或参考本文结尾说明。

3.编写集群启动脚本;

cluster-run.sh

#!/bin/bash

./src/redis-server conf/6001.conf

./src/redis-server conf/6002.conf

./src/redis-server conf/6003.conf

./src/redis-server conf/6004.conf

./src/redis-server conf/6005.conf

./src/redis-server conf/6006.conf

(二)安装Ruby环境

     解压ruby-2.3.1.tar.gz,编译安装;

     cd ~/common

     tar -zxvf ruby-2.3.1.tar.gz

     mv ruby-2.3.1 ruby

     cd ruby

     ./configure --prefix=~/common/ruby

     make

     make install

(三)安装RubyGems

     gem install --local redis-3.2.1.gem

[root@localhost ~]# gem install --local redis-3.2.1.gem

Successfully installed redis-3.2.1

Parsing documentation for redis-3.2.1

Installing ri documentation for redis-3.2.1

Done installing documentation for redis after 0 seconds

1 gem installed

(四)使用redis-trib.rb创建集群

     ./redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006

(使用create命令 --replicas 1 参数表示为每个主节点创建一个从节点,其他参数是实例的地址集合。)

(五)集群测试

    略。

(六)常见问题

(一)关于zlib包的报错

[root@localhost zlib]# gem install redis-3.2.1.gem

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源码文件夹

安装ruby自身提供的zlib包

cd ext/zlib

ruby ./extconf.rb

make

make install

(二)关于openssl的报错

[root@localhost src]# gem install redis-3.2.1.gem

ERROR: While executing gem ... (Gem::Exception)

Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

解决方案:

1.安装openssl

tar -xzvf openssl-1.0.2n.tar.gz

mv openssl-1.0.2n/ /usr/local/src/

cd /usr/local/src/openssl-1.0.2n

./config -fPIC --prefix=/usr/local/openssl enable-shared

./config -t

make && make install

cd ext/openssl

ruby extconf.rb --with-openssl-dir=/usr/local/openssl

ln -s ~/common/ruby/include /

make

make install

(三)关于RubyGems的报错

[kd_dev@s2mkf4 src]$ ./redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006

/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)

    from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'

    from ./redis-trib.rb:25:in `'

解决方案:

安装RubyGems

  gem install --local redis-3.2.1.gem

(四)其它问题

[kd_dev@s2mkf4 src]$ ./redis-trib.rb create --replicas 1 192.168.156.111:7000 192.168.156.111:7001 192.168.156.112:7000 192.168.156.112:7001 192.168.156.113:7000 192.168.156.113:7001

>>> Creating cluster

[ERR] Node 192.168.156.112:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

【当前节点处于集群状态,需解除后再重新创建集群  命令:cluster reset】

[kd_dev@s2mkf4 src]$ ./redis-trib.rb create --replicas 1 192.168.156.111:7000 192.168.156.111:7001 192.168.156.112:7000 192.168.156.112:7001 192.168.156.113:7000 192.168.156.113:7001

>>> Creating cluster

[ERR] Sorry, can't connect to node 192.168.156.113:7000

【当前节点处于加密模式 “requirepass 123456”,需注掉配置后重启,方可加入到集群中,之后再做加密】

集群密码设置小结

方式一:修改所有redis集群中的redis.conf文件加入:

masterauth 123456

requirepass 123456

说明:这种方式需要重新启动各节点

方式二:进入各个实例进行设置:

./redis-cli -c -h 192.168.156.113 -p 7000

config set masterauth 123456

config set requirepass 123456

auth 123456

config rewrite

之后分别使用./redis-cli -c -h 192.168.156.113 -p 7001...命令给各节点设置上密码

注意:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式会把密码写入到redis.conf里面去,且不用重启

设置密码之后如果需要使用redis-trib.rb的各种命令

如:redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000

解决办法:

  修改gem的redis工具下的一个文件client.rb,对应内容如下:

:password => "123456", #指定redis登录密码

(一般默认路径/usr/lib/ruby/gems/1.8/gems/redis-3.2.1/lib/redis/client.rb,另可通过命令find / -name client.rb进行全盘搜索)

上一篇下一篇

猜你喜欢

热点阅读