redis部署实现主从同步,高可用,单机集群

1、安装,可以从官网或者github上边获取源码包

yum install gcc
tar zxf redis-5.0.3.tar.gz
cd redis-5.0.3/
make && make install
cd utils/
./install_server.sh

在这里插入图片描述

 安装完成之后自动开启:

在这里插入图片描述

管理方式

脚本方式管理:
    /etc/init.d/redis_6379 start|stop|restart|status
systemd方式管理:
    systemctl start|stop|restart|status redis_6379

2、主从复制

配置:

master:
    bind 0.0.0.0
systemctl restart redis_6379

slave:
    bind 0.0.0.0
    replicaof masterip 6379
systemctl restart redis_6379

测试:

master:
    redis-cli 
    set name westos    插入key
    get name    
        westos        查到结果


slave:
    redis-cli
    get name 
        westos    结果
    del name      slave只读,不可对数据操作

3、高可用(主从ok)

1)、配置redis-sentinel

master:
    cd redis-5.0.3
    cp sentinel.conf /etc/redis/
    cd /etc/redis/
    vim sentinel.conf 	##主要更改下面两个参数即可
        protected-mode no
        sentinel monitor mymaster masgerip 6379 2
slave:
    vim sentinel.conf 	
        protected-mode no
        sentinel monitor mymaster masterip 6379 2

 

2)、启动sentinel

注意:先启动redis数据库,再启动serntinel

 如图172.25.27.107是现在的master

3)、高可用测试

关掉server7的redis服务

关掉server7的redis服务:
方式1:
    127.0.0.1:6379> SHUTDOWN
    not connected> 
方式2:
    redis-cli -c -p shutdown

通过选举产生新的master为server6

关于sentinel更多情况看这里:http://www.redis.cn/topics/sentinel.html

4、创建redis单机集群

配置集群

[root@server4 ]# cd /usr/local/
[root@server4 local]# mkdir redis-cluster
[root@server4 local]# cd redis-cluster/
[root@server4 redis-cluster]# mkdir 700{1..6}

##在每个目录中编写配置文件
[root@server4 redis-cluster]# cd 7001/
[root@server4 7001]# vim redis.conf
	port 7001			//随便写,与目录名相同方便看,其他一样
	cluster-enabled yes
	cluster-config-file nodes.conf
	cluster-node-timeout 5000
	appendonly yes
	daemonize yes
[root@server4 7001]# redis-server redis.conf 

创建集群

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 \
--cluster-replicas 1

在这里插入图片描述

数据文件:

/usr/local/redis-cluster/7001/appendonly.aof

在这里插入图片描述

在这里插入图片描述

 查看数据

在这里插入图片描述

当master挂掉时,他的slave会自动接管,成为新的master

在这里插入图片描述

在这里插入图片描述

当master重启之后就会成为新的slave

在这里插入图片描述

 当同时挂掉半数以上的master时,集群就挂掉了

在这里插入图片描述

 在这里插入图片描述

 https://i-blog.csdnimg.cn/blog_migrate/d9849c42f85c5ef0ad43a9e09437af38.png

脚本方式创建集群:

cd /root/redis-5.0.3/utils/create-cluster

./create-cluster start		##开启
./create-cluster create		##创建
./create-cluster stop		##关闭
./create-cluster clean		##清空数据

脚本:

[root@server5 create-cluster]# cat create-cluster 
#!/bin/bash

# Settings
PORT=30000
TIMEOUT=2000
NODES=6
REPLICAS=1

# You may want to put the above config parameters into config.sh in order to
# override the defaults without modifying this script.

if [ -a config.sh ]
then
    source "config.sh"
fi

# Computed vars
ENDPORT=$((PORT+NODES))

if [ "$1" == "start" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        echo "Starting $PORT"
        ../../src/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes
    done
    exit 0
fi

if [ "$1" == "create" ]
then
    HOSTS=""
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        HOSTS="$HOSTS 127.0.0.1:$PORT"
    done
    ../../src/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
    exit 0
fi

if [ "$1" == "stop" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        echo "Stopping $PORT"
        ../../src/redis-cli -p $PORT shutdown nosave
    done
    exit 0
fi

if [ "$1" == "watch" ]
then
    PORT=$((PORT+1))
    while [ 1 ]; do
        clear
        date
        ../../src/redis-cli -p $PORT cluster nodes | head -30
        sleep 1
    done
    exit 0
fi

if [ "$1" == "tail" ]
then
    INSTANCE=$2
    PORT=$((PORT+INSTANCE))
    tail -f ${PORT}.log
    exit 0
fi

if [ "$1" == "call" ]
then
    while [ $((PORT < ENDPORT)) != "0" ]; do
        PORT=$((PORT+1))
        ../../src/redis-cli -p $PORT $2 $3 $4 $5 $6 $7 $8 $9
    done
    exit 0
fi

if [ "$1" == "clean" ]
then
    rm -rf *.log
    rm -rf appendonly*.aof
    rm -rf dump*.rdb
    rm -rf nodes*.conf
    exit 0
fi

if [ "$1" == "clean-logs" ]
then
    rm -rf *.log
    exit 0
fi

echo "Usage: $0 [start|create|stop|watch|tail|clean]"
echo "start       -- Launch Redis Cluster instances."
echo "create      -- Create a cluster using redis-cli --cluster create."
echo "stop        -- Stop Redis Cluster instances."
echo "watch       -- Show CLUSTER NODES output (first 30 lines) of first node."
echo "tail <id>   -- Run tail -f of instance at base port + ID."
echo "clean       -- Remove all instances data, logs, configs."
echo "clean-logs  -- Remove just instances logs."

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值