ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis5.x 集群部署实战

2019-07-24 20:56:59  阅读:275  来源: 互联网

标签:实战 opt Redis5 redis 16002 16001 集群 slots 172.20


实验环境

主机名

IP地址

Redis端口划分

备注

node171

172.20.20.171

16001,16002


node172

172.20.20.172

16001,16002


node173

172.20.20.173

16001,16002


软件版本

操作系统:CentOS X64 7.3

Redis版本:5.0.5

公共基础配置

3台均操作,这里无特别说明,均是root操作

1. 关闭防火墙

systemctl stop firewalld.service

setenforce  0

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

2. 配置主机名

 cat >> /etc/hosts << EOF

172.20.20.171 node171

172.20.20.172 node172

172.20.20.173 node173

EOF

3. 新建目录

mkdir -p /opt/redis;mkdir -p /opt/redis/{bin,conf,logs}

mkdir -p /data/redis/data

安装Redis

3台均操作

PS:若是购买云ECS进行自建,可以做成一台,打包成基础或可以使用Salt或Ansible进行批量部署

yum install -y gcc gcc-c++

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

cd /root

tar xf redis-5.0.5.tar.gz

cd redis-5.0.5

make MALLOC=libc

make PREFIX=/opt/redis/ install

cp /root/redis-5.0.5/redis.conf  /opt/redis/conf/redis-16001.conf

cd /opt/redis/conf/

touch nodes-16001.conf

touch nodes-16002.conf

sed -i 's#bind 127.0.0.1#bind 0.0.0.0#g' redis-16001.conf

sed -i "s#port 6379#port 16001#g" redis-16001.conf

sed -i "s#daemonize no#daemonize yes#g" redis-16001.conf

sed -i 's#pidfile /var/run/redis_6379.pid#pidfile /opt/redis/logs/redis_16001.pid#g' redis-16001.conf

sed -i 's#logfile ""#logfile "/opt/redis/logs/redis_16001.log"#g' redis-16001.conf

sed -i 's#dbfilename dump.rdb#dbfilename redis_16001.rdb#g' redis-16001.conf

sed -i 's#dir ./#dir /data/redis/data/#g' redis-16001.conf

sed -i "s#appendonly no#appendonly yes#g" redis-16001.conf

sed -i 's#appendfilename "appendonly.aof"#appendfilename "redis_16001.aof"#g'  redis-16001.conf

sed -i 's#\# cluster-enabled yes# cluster-enabled yes#g' redis-16001.conf

sed -i 's#\# cluster-config-file nodes-6379.conf#cluster-config-file /opt/redis/conf/nodes-16001.conf#g' redis-16001.conf

 

cp redis-16001.conf  redis-16002.conf

sed -i 's#16001#16002#g' redis-16002.conf

启动Redis

3台均操作

 /opt/redis/bin/redis-server  /opt/redis/conf/redis-16001.conf

 /opt/redis/bin/redis-server  /opt/redis/conf/redis-16002.conf

启动Redis集群

在三台任意一台上执行

/opt/redis/bin/redis-cli  --cluster create 172.20.20.171:16001 172.20.20.171:16002 172.20.20.172:16001 172.20.20.172:16002 172.20.20.173:16001 172.20.20.173:16002  --cluster-replicas 1

>>> Performing hash slots allocation on 6 nodes...

Master[0] -> Slots 0 - 5460

Master[1] -> Slots 5461 - 10922

Master[2] -> Slots 10923 - 16383

Adding replica 172.20.20.172:16002 to 172.20.20.171:16001

Adding replica 172.20.20.173:16002 to 172.20.20.172:16001

Adding replica 172.20.20.171:16002 to 172.20.20.173:16001

M: a9ab7a12884d505efcf066fcc3aae74c2b3f101d 172.20.20.171:16001

   slots:[0-5460] (5461 slots) master

S: 81d1b25ae1ea85421bd4abb2be094c258026c505 172.20.20.171:16002

   replicates 04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2

M: 761348a0107f5b009cabc22c214e39578d0aa707 172.20.20.172:16001

   slots:[5461-10922] (5462 slots) master

S: 6dec89e63a48a9a9f393011a698a0bda21b70f1e 172.20.20.172:16002

   replicates a9ab7a12884d505efcf066fcc3aae74c2b3f101d

M: 04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2 172.20.20.173:16001

   slots:[10923-16383] (5461 slots) master

S: 14e79155f78065e4518e00cd5bd057336b17e3a7 172.20.20.173:16002

   replicates 761348a0107f5b009cabc22c214e39578d0aa707

Can I set the above configuration? (type 'yes' to accept): yes  #输入yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join

.....

>>> Performing Cluster Check (using node 172.20.20.171:16001)

M: a9ab7a12884d505efcf066fcc3aae74c2b3f101d 172.20.20.171:16001

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

S: 81d1b25ae1ea85421bd4abb2be094c258026c505 172.20.20.171:16002

   slots: (0 slots) slave

   replicates 04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2

M: 761348a0107f5b009cabc22c214e39578d0aa707 172.20.20.172:16001

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

S: 14e79155f78065e4518e00cd5bd057336b17e3a7 172.20.20.173:16002

   slots: (0 slots) slave

   replicates 761348a0107f5b009cabc22c214e39578d0aa707

S: 6dec89e63a48a9a9f393011a698a0bda21b70f1e 172.20.20.172:16002

   slots: (0 slots) slave

   replicates a9ab7a12884d505efcf066fcc3aae74c2b3f101d

M: 04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2 172.20.20.173:16001

   slots:[10923-16383] (5461 slots) master

   1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

 

验证测试

[root@node172 conf]# /opt/redis/bin/redis-cli  -h 172.20.20.172 -p 16001

172.20.20.172:16001> cluster nodes

04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2 172.20.20.173:16001@26001 master - 0 1563967987854 5 connected 10923-16383

a9ab7a12884d505efcf066fcc3aae74c2b3f101d 172.20.20.171:16001@26001 master - 0 1563967985839 1 connected 0-5460

81d1b25ae1ea85421bd4abb2be094c258026c505 172.20.20.171:16002@26002 slave 04d9c29ef2569b1fc8abd9594d64fca33e4ad4f2 0 1563967983822 5 connected

6dec89e63a48a9a9f393011a698a0bda21b70f1e 172.20.20.172:16002@26002 slave a9ab7a12884d505efcf066fcc3aae74c2b3f101d 0 1563967988858 4 connected

14e79155f78065e4518e00cd5bd057336b17e3a7 172.20.20.173:16002@26002 slave 761348a0107f5b009cabc22c214e39578d0aa707 0 1563967986847 6 connected

761348a0107f5b009cabc22c214e39578d0aa707 172.20.20.172:16001@26001 myself,master - 0 1563967986000 3 connected 5461-10922

 

172.20.20.172:16001> set name "Mr.Zhang"

OK

172.20.20.172:16001> get name

"Mr.Zhang"

Redis集群启动脚本

3台均配置

cat >> /opt/redis/bin/start-all.sh << EOF

/opt/redis/bin/redis-server  /opt/redis/conf/redis-16001.conf

/opt/redis/bin/redis-server  /opt/redis/conf/redis-16002.conf

EOF

chmod +x /opt/redis/bin/start-all.sh

Redis集群停止脚本

任意一台即可

cat /opt/redis/bin/stop-all.sh

#!/bin/bash

 

# Settings

PORT=16000

TIMEOUT=2000

NODES=2

REPLICAS=1

HOSTS=(172.20.20.171 172.20.20.172 172.20.20.173)

 

# 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" == "stop" ]

then

    while [ $((PORT < ENDPORT)) != "0" ]; do

        PORT=$((PORT+1))

          for host in ${HOSTS[@]}

            do

             /opt/redis/bin/redis-cli -h $host -p $PORT shutdown nosave

            done

    done

    exit 0

fi

 

echo "Usage: $0 [stop]"

echo "stop        -- Stop Redis Cluster instances."

 


标签:实战,opt,Redis5,redis,16002,16001,集群,slots,172.20
来源: https://blog.51cto.com/3388803/2423251

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有