redis的读写分离架构部署实践

概述

主从架构搭建:

  • 一主一从
  • 主节点负责写
  • 从节点负责读

部署安装步骤

1、启用复制,部署slave node

  • 下载tcl8.6.10
wget http://downloads.sourceforge.net/tcl/tcl8.6.10-src.tar.gz
tar -xzvf tcl8.6.10-src.tar.gz
cd  /usr/local/tcl8.6.10/unix/
./configure  
make && make install
  • 使用redis-4.0.11.tar.gz
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -zxvf redis-4.0.11.tar.gz
cd redis-4.0.11
make && make test && make install

redis作为daemon进程去运行的,每次系统启动,redis进程一起启动

拷贝启动脚本

  • redis utils目录下,有个redis_init_script脚本
cp utils/redis_init_script /etc/init.d/redis_6379
  • 将redis_init_script脚本拷贝到linux的/etc/init.d目录中,重命名为redis_6379,6379是我们希望这个redis实例监听的端口号。

修改端口

  • 修改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
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

配置系统启动时redis自动启动

centos在redis_6379脚本中,最上面,加入两行注释

# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database

命令行执行 :chkconfig redis_6379 on

创建配置目录和持久化目录

创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)

mkdir -p /etc/redis
mkdir -p /var/redis/6379
  • 修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
cp redis.conf /etc/redis/6379.conf
  • 修改redis.conf中的配置参数
daemonize   yes                         让redis以daemon进程运行
pidfile     /var/run/redis_6379.pid     设置redis的pid文件位置
port        6379                        设置redis的监听端口号
dir         /var/redis/6379             设置持久化文件的存储位置

slave节点配置

vi /etc/redis/6379.conf
slaveof 172.30.0.11 6379 //配置从节点对应的主节点地址和端口
slave-read-only yes  //强制读写分离,默认开启

开启了只读的redis slave node,会拒绝所有的写操作,这样可以强制搭建成读写分离的架构

开启远程模式

修redis.conf中的bind地址,默认bind 127.0.0.1 为本地的开发调试的模式

172.30.0.11 //主节点
172.30.0.4 //从节点

集群安全认证

master上启用安全认证:requirepass

requirepass pass1234

master连接口令:masterauth

masterauth pass1234

设置防火墙

在每个节点上都需要设置如下:

iptables -A INPUT -ptcp --dport  6379 -j ACCEPT

读写分离架构测试

先启动主节点的redis实例,再启动从节点的redis实例

cd /etc/init.d/
./redis_6379 start
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容