美文网首页技术我爱编程
Redis 之 集群搭建(连接带加密认证)

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

作者: loading__ | 来源:发表于2018-01-23 17:50 被阅读20次

    目录

    (一)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进行全盘搜索)

    相关文章

      网友评论

        本文标题:Redis 之 集群搭建(连接带加密认证)

        本文链接:https://www.haomeiwen.com/subject/umgoqxtx.html