• redis集群部署实战


    redis集群实战

    redis集群master节点必须在3个以上,所以官方建议启动6个节点,3个作为master,3个最为slave

    本示例会安装端口为7000到7005这6个redis节点

    一、安装

    官网https://redis.io/download中有如下脚本,跟着执行就行了。需要注意的是版本号,每次安装最好去这个网页看看最新的版本号

    $ wget http://download.redis.io/releases/redis-4.0.1.tar.gz

    $ tar xzf redis-4.0.1.tar.gz

    $ cd redis-4.0.1

    $ make

    安装好后测试一下是否成功

    执行src/redis-server &命令会启动redis服务端

    src/redis-cli

    redis> set foo bar

    OK

    redis> get foo

    "bar"

    按照上方代码执行,如果结果一致则安装成功。

    在继续集群部署前,先把刚刚启动的这个服务端停止,方法就是用kill命令

    二、集群

    官网地址https://redis.io/topics/cluster-tutorial,这里对集群的配置做了详细的说明。

    注意:在网页的最后部分,提供一种用于测试的快速集群脚本,但生产环境尽量不要这样做。

    实现步骤:

    1.为6个节点分别创建对应的目录

    mkdir cluster-node

    cd cluster-node

    mkdir 7000 7001 7002 7003 7004 7005

    2.在每个目录中创建redis.cnf配置文件,内容如下。注意,根据对应端口设置port(7000到7005)

    port 7000

    cluster-enabled yes

    cluster-config-file nodes.conf

    cluster-node-timeout 5000

    appendonly yes

    protected-mode no

    3.将6个redis节点都启动起来

    进入每个目录下,执行下面的命令

    ../redis-server ./redis.conf &

    注意redis-server前面的相对路径要指定到redis安装目录下的src路径中

    6个都启动后,使用ps -ef | grep redis命令应该可以看到有6条不同端口的redis记录

    4.安装gem工具

    redis集群有个脚本,但是要执行那个脚本就必须安装gem工具

    安装gem工具就要安装ruby

    1.先卸载本机的ruby因为可能版本太老

    yum remove ruby

    2.安装ruby

    yum install ruby

    3.安装RubyRem

    yum install rubygems

    4.安装redis的rem文件

    redis的官网提供gem install redis这样一条命令自动安装,但是实际使用的时候发现基本两部上下载服务器,可能被墙了,使用下面的方法。

    在网站https://rubygems.org上搜索redis,点击第一条记录进入,这是可以看到版本列表,我第一次用的最新版4.0.0,后来发现4.0.0需要ruby2.2以上,

    但是我上面用yum命令装的ruby貌似是1.8几的,所以使用了前一个稳定版本3.3.3

    wget https://rubygems.org/downloads/redis-3.3.3.gem

    gem install redis-3.3.3.gem

    5.创建集群

    进入src目录,执行下方命令

    ./redis-trib.rb create --replicas 1 172.26.46.115:7000 172.26.46.115:7001 172.26.46.115:7002 172.26.46.115:7003 172.26.46.115:7004 172.26.46.115:7005 &

    注意:官方文档中ip都写的是127.0.0.1,千万不要这样设置,否则java客户端连接的时候会报Could not get a resource from the pool错误

    6.验证集群是否生效

    官方给出几行命令用户验证

    ./redis-cli -c -p 7000

    redis 127.0.0.1:7000> set foo bar

    -> Redirected to slot [12182] located at 127.0.0.1:7002

    OK

    redis 127.0.0.1:7002> set hello world

    -> Redirected to slot [866] located at 127.0.0.1:7000

    OK

    redis 127.0.0.1:7000> get foo

    -> Redirected to slot [12182] located at 127.0.0.1:7002

    "bar"

    redis 127.0.0.1:7000> get hello

    -> Redirected to slot [866] located at 127.0.0.1:7000

    "world"

    注意:端口要跟上面一样才能验证出效果,如果发现端口不一样,用第一条命令打开指定的端口

    如果跟上方输出一直,说明集群已经生效

    除此之外,还可以通过./redis-trib.rb check 127.0.0.1:7000来验证

    三、注意事项

    1.配置文件中的bind

    bind的作用是服务端绑定的域名,默认配置中和官方的演示中配的都是127.0.0.1,但是如果这样配的话,那么以后就只能本机才能访问,所以不写这个或者注释掉

    2.配置文件中的protected-mode

    protected-mode默认是yes,启用的话就只有bind绑定的域名或者设置了密码的客户端能访问,所以我们这里设置成no

    3.如何重启单个节点

    ps查出pid后直接kill就行了,kill的时候集群会检测服务器状态所以会输出一些日志。

    4.如何重启或者重新配置集群

    没有简单的命令来完成这个操作,只能把6个节点的服务都kill掉,然后进入7000到7005目录,把里面除了redis.cnf外的其他文件都删掉,然后配置好每个节点后,

    把所有节点都启动起来,然后再执行一次

    ./redis-trib.rb create --replicas 1 172.26.46.115:7000 172.26.46.115:7001 172.26.46.115:7002 172.26.46.115:7003 172.26.46.115:7004 172.26.46.115:7005 &

    5.遇到问题怎么办

    尽量去到官方查文档,这里是最权威并且和当前安装的版本最匹配的,如果在网上搜索,一方面可能不全另一方面有可能根本就用不了

  • 相关阅读:
    Android学习之天气预报简单版
    Android学习之Json数据的获取与解析
    getPath()返回路径包含的“%20”(空格)的处理
    自学php 之数据库连接编程
    bnuoj 1071 拼图++
    hdu 2489 Minimal Ratio Tree
    hdu 4720 Naive and Silly Muggles
    hdu 4725 The Shortest Path in Nya Graph
    经典算法学习:排序之希尔排序(壳排序)
    经典算法学习:排序之插入排序
  • 原文地址:https://www.cnblogs.com/xiaoQ0725/p/8481995.html
Copyright © 2020-2023  润新知