Redis Cluster搭建和开机自启设置

42 篇文章 0 订阅
5 篇文章 0 订阅

一、前言 

       redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式。

redis从3.0开始支持集群功能。redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redisj节点上执行命令。在redis看来,响应时间是最苛刻的条件,增加一层带来的开销是redis不能接受的。因此,redis实现了客户端对节点的直接访问,为了去中心化,节点之间通过gossip协议交换互相的状态,以及探测新加入的节点信息。redis集群支持动态加入节点,动态迁移slot,以及自动故障转移。

二、 环境准备

以下所有节点均相同操作

1、机器准备

172.8.10.105 siger-data1.test.com    7000、7001端口

172.8.10.106 siger-data2.test.com    7002、7003端口

172.8.10.107 siger-data2.test.com    7004、7005端口

2、关闭防火墙

sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

sudo systemctl status firewalld.service

3、修改系统内核参数

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf 

echo "net.core.somaxconn = 512" >> /etc/sysctl.conf

4、下载环境依赖

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl

5、解压安装包

mkdir /usr/local/redis

mv /opt/redis-6.0.6.tar.gz /usr/local/redis/

tar -zxvf redis-6.0.6.tar.gz

6、升级gcc

(默认的只支持redis 6.0.以下,安装6.0.6需要升级gcc)

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash

# 查看版本

gcc -v

三、搭建

1、编译并安装

172.8.10.105:

make PREFIX=/usr/local/redis install

2、创建配置目录

172.8.10.105:

mkdir -p /usr/local/redis/{data,etc,log}

3、分发其他节点

172.8.10.105:

scp -r /usr/local/redis/ root@172.8.10.106:/usr/local

scp -r /usr/local/redis/ root@172.8.10.107:/usr/local

4、修改配置文件

(注意区分ip和端口)

172.8.10.105:

vim /usr/local/redis/etc/7000.conf

vim /usr/local/redis/etc/7001.conf

172.8.10.106:

vim /usr/local/redis/etc/7002.conf

vim /usr/local/redis/etc/7003.conf

172.8.10.107:

vim /usr/local/redis/etc/7004.conf

vim /usr/local/redis/etc/7005.conf

以下是7000.conf,其他7001-7005照样修改

bind 172.8.10.105
protected-mode yes
port 7000
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/7000.pid
loglevel notice
logfile "/usr/local/redis/log/7000.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename 7000-dump.rdb
rdb-del-sync-files no
dir /usr/local/redis/data/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
appendonly no
appendfilename "7000-appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file 7000.conf
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

#安装tree

 sudo yum -y install tree

 

# 查看目录

tree /usr/local/redis/

172.8.10.105:

172.8.10.106:

172.8.10.107:

4、启动各节点

172.8.10.105:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7000.conf

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7001.conf

ps -aux | grep redis

172.8.10.106:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7002.conf

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7003.conf

172.8.10.107:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7004.conf

/usr/local/redis/bin/redis-server /usr/local/redis/etc/7005.conf

5、创建redis集群

#任意节点:

/usr/local/redis/bin/redis-cli --cluster create 172.8.10.105:7000 172.8.10.105:7001 172.8.10.106:7002 172.8.10.106:7003 172.8.10.107:7004 172.8.10.107:7005 --cluster-replicas 1

#集群启动成功

注:

–cluster-replicas 1:表示希望为集群中的每个主节点创建一个从节点(一主一从)。

–cluster-replicas 2:表示希望为集群中的每个主节点创建两个从节点(一主二从)。

6、验证集群

./redis-cli -c -p 7005 -h 172.8.10.107

四、开机自启

以下所有节点均相同操作

#设置脚本

vim /etc/init.d/redisc

(将redisc_node1、redisc_node2、redisc_node3的内容分别复制在不同的节点/etc/init.d/redisc上)

以下是redisc_node1,其他照样修改

#!/bin/sh
# chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
​
REDISPORT1=7000
REDISPORT2=7001
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/${REDISPORT1}.pid

CONF1="/usr/local/redis/etc/${REDISPORT1}.conf"
CONF2="/usr/local/redis/etc/${REDISPORT2}.conf"

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

#设置权限

chmod +x /etc/init.d/redisc

 

注册为系统服务

chkconfig --add redisc

 

以后可以使用命令来控制Redis的启动和关闭

启动:service redisc start

关闭:service redisc stop

 

配置为开机自启动

chkconfig redisc on

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值