centos 搭建 redis 主从架构。

准备工作

我们需要在虚拟机中安装好两台centos系统,然后再去搭建一主一从的redis架构。

主从搭建

单机搭建

需要说明,本小节只关注单机redis的搭建,我们需要在两台虚拟机上分别搭建redis,并启动redis进程。

安装tcl

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd  /usr/local/tcl8.6.1/unix/
./configure  
make && make install

安装部署redis

安装好redis以后,我们需要将它作为守护进程启动,因为生产环境的需要。
  1. 执行下面的命令安装redis
    使用redis-3.2.8.tar.gz
    tar -zxvf redis-3.2.8.tar.gz
    cd redis-3.2.8
    make && make test && make install

    redis-3.2.8.tar.gz包我们可以先下载到本地电脑,然后使用类似WinSCP的软件把它传递给centos服务器即可。

  2. redis 的utils目录下,有个redis_init_script脚本,将其拷贝到linux的/etc/init.d目录中,并重命名为redis_6379
    6379是redis实例默认情况下监听的端口

  3. 修改redis_6379脚本的第6行的REDISPORT,设置为6379
    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    # redis配置文件路径设置
    CONF="/etc/redis/${REDISPORT}.conf"
  4. 分别创建两个目录(mkdir):
  • /etc/redis(存放redis的配置文件
    由启动脚本的CONF配置项决定的

  • /var/redis/6379(存放redis的持久化文件
  1. 修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
  2. 修改6379.conf的配置
    # 本地的开发调试的模式,只能127.0.0.1本地才能访问到6379的端口,一定要注释掉
    # bind 127.0.0.1、
    # 让redis以daemon进程运行(守护进程)
    daemonize yes
    # 设置redis的pid文件位置 
    pidfile /var/run/redis_6379.pid
    # redis实例监听的端口
    port 6379
    # 设置redis持久化文件的存储位置
    dir /var/redis/6379
  3. 启动redis,执行以下命令
    cd /etc/init.d
    chmod 777 redis_6379
    ./redis_6379 start

  4. 确认redis进程是否启动,ps -ef | grep redis
  5. 设置redis_6379脚本文件,让redis跟随系统启动自动启动
    # chkconfig:   2345 90 10
    # description:  Redis is a persistent key-value database
    chkconfig redis_6379 on
上述操作需要分别在两台服务器上都执行一下

配置从节点

配置slave节点的6379.conf文件
# 192.168.1.104 6379 是master的地址
slaveof 192.168.1.104 6379
# 开启了只读的redis slave node,会拒绝所有的写操作,这样可以强制搭建成读写分离的架构
slave-read-only yes

集群安全认证

master上启用安全认证,requirepass master连接口令,masterauth

这一步笔者没有尝试,读者可以试着设置一下。

遇到的问题

按照上面的操作,但跳过集群安全认证的步骤,slave并没有同步master中的数据。

原因分析

在master上使用telnet命令连接发现:

 -DENIED Redis is running in protected mode because protected mode is enabled...
展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java