no script

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!

搭建完整的企业级Redis高可用集群(内容详细完备,开发收藏)

前置条件

CentOS7:10.180.101.138 (端口:33331,33334)

CentOS7:10.180.101.139 (端口:33332,33335)

CentOS7:10.180.101.137 (端口:33333,33336)

主备关系:

​ 主 10.180.101.138:33331 => 备 10.180.101.138:33334 / 10.180.101.139:33335 / 10.180.101.137:33336

​ 主 10.180.101.139:33332 => 备 10.180.101.138:33334 / 10.180.101.139:33335 / 10.180.101.137:33336

​ 主 10.180.101.137:33333 => 备 10.180.101.138:33334 / 10.180.101.139:33335 / 10.180.101.137:33336

Redis安装 (10.180.101.138/139/137)

1. gcc版本升级
#yum -y install epel-release
#yum -y install centos-release-scl
#yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
#source /etc/profile
#gcc -v
2. 安装redis (生产环境)
#wget http://download.redis.io/releases/redis-6.0.12.tar.gz
#tar -zxvf redis-6.0.12.tar.gz
#cd redis-6.0.12
#make
#make install PREFIX=/usr/local/redis-6.0.12
3. 配置文件
#mkdir -p /data/redis/redis33331/{data,etc,log} && mkdir -p /data/redis/redis33334/{data,etc,log} (10.180.101.138上执行)
#mkdir -p /data/redis/redis33332/{data,etc,log} && mkdir -p /data/redis/redis33335/{data,etc,log}  (10.180.101.139上执行)
#mkdir -p /data/redis/redis33333/{data,etc,log} && mkdir -p /data/redis/redis33336/{data,etc,log}  (10.180.101.137上执行)
10.180.101.138上的配置如下(139和137类似)
#cp redis-6.0.12/redis.conf  /data/redis/redis33331/etc
#vim /data/redis/redis33331/etc/redis.conf  修改:
bind 10.180.101.138    
protected-mode yes          #yes:内网访问,no:外网访问
port 33331
daemonize yes       #守护线程模式(后台模式)
pidfile /var/run/redis_33331.pid
logfile "/data/redis/redis33331/log/33331.log"
dbfilename dump-33331.rdb
dir /data/redis/redis33331/data/       #数据库写入目录
appendfilename "appendonly-33331.aof"
cluster-enabled yes   #开启集群
cluster-config-file nodes-33331.conf
cluster-node-timeout 15000     #节点请求超时时间,默认值15000
requirepass 123456   #设置密码
#cp redis-6.0.12/redis.conf  /data/redis/redis33334/etc
#vim /data/redis/redis33334/etc/redis.conf  文件按照如上做参数修改(所有33331修改为33334)
4. 启动实例
#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33331/etc/redis.conf  (10.180.101.138上执行)
#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33334/etc/redis.conf  (10.180.101.138上执行)
#vim /etc/rc.d/rc.local 添加:
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33331/etc/redis.conf 
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33334/etc/redis.conf 

#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33332/etc/redis.conf  (10.180.101.139上执行)
#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33335/etc/redis.conf  (10.180.101.139上执行)
#vim /etc/rc.d/rc.local 添加:
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33332/etc/redis.conf 
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33335/etc/redis.conf 

#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33333/etc/redis.conf  (10.180.101.137上执行)
#/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33336/etc/redis.conf  (10.180.101.137上执行)
#vim /etc/rc.d/rc.local 添加:
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33333/etc/redis.conf 
/usr/local/redis-6.0.12/bin/redis-server /data/redis/redis33336/etc/redis.conf 
5. 创建集群
#/usr/local/redis-6.0.12/bin/redis-cli --cluster create \
10.180.101.138:33331 \
10.180.101.139:33332 \
10.180.101.137:33333 \
10.180.101.137:33336 \
10.180.101.138:33334 \
10.180.101.139:33335  --cluster-replicas 1 -a 123456
    Adding replica 10.180.101.139:33335 to 10.180.101.138:33331
    Adding replica 10.180.101.137:33336 to 10.180.101.139:33332
    Adding replica 10.180.101.138:33334 to 10.180.101.137:33333
    M: ff2703ce0a6291719f4a1fcf75968610dc3b0aab 10.180.101.138:33331
       slots:[0-5460] (5461 slots) master
    M: 6e6e97d9f3b9e24930958e5be9dd10acfd544e21 10.180.101.139:33332
       slots:[5461-10922] (5462 slots) master
    M: bbc2b46b00207b13040d2cba7ad2048fa8a08adf 10.180.101.137:33333
       slots:[10923-16383] (5461 slots) master
    S: 8a3eabd87349d62434fa312a75f98b1d55006c6f 10.180.101.137:33336
       replicates 6e6e97d9f3b9e24930958e5be9dd10acfd544e21
    S: 55c4dbd5b937f2e8b722fcb99ece629a7f91122c 10.180.101.138:33334
       replicates bbc2b46b00207b13040d2cba7ad2048fa8a08adf
    S: c751d57a1725431c44b0d6dc95ccc0605e467112 10.180.101.139:33335
       replicates ff2703ce0a6291719f4a1fcf75968610dc3b0aab

随机分配主从关系:

10.180.101.139:33335(从) 分配给 10.180.101.138:33331 (主)

10.180.101.137:33336(从) 分配给 10.180.101.139:33332(主)

10.180.101.138:33334 (从)分配给 10.180.101.137:33333(主)

注: –cluster-replicas后面的参数是每个主节点对应的从节点的数量,-a 输入访问密码

期间会询问你是否使用上述配置,输入yes即可。如果出现一直卡在“Waiting for the cluster to join”,需要把与服务器上集群总线端口打开(客户端连接的端口 + 10000),例如客户端端口7000,则总线端口17000。

6. 测试
#/usr/local/redis-6.0.12/bin/redis-cli -c -h 10.180.101.138 -p 33331 -a 123456    ( -c 代表使用cluster模式)
10.180.101.138:33331> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:1067
    cluster_stats_messages_pong_sent:1139
    cluster_stats_messages_sent:2206
    cluster_stats_messages_ping_received:1134
    cluster_stats_messages_pong_received:1067
    cluster_stats_messages_meet_received:5
    cluster_stats_messages_received:2206
10.180.101.138:33331> set foo bar
-> Redirected to slot [12182] located at 10.180.101.137:33333
OK
10.180.101.137:33333> get foo
"bar"
10.180.101.137:33333> del foo
(integer) 1
10.180.101.137:33333> get foo
(nil)
0
chujiao_4736e**6798
十里平湖十里平湖霜满天,寸寸青丝愁华年。
  • 赞同
  • 威望

相关问题

    Copyright © 2025