redis集群部署(自动与手动)

实验环境,三台主机均安装redis

第一台redis:192.168.8.5

第二台redis:192.168.8.8

第三台redis:192.168.8.9

先行准备数据目录和安装目录

mkdir -p /opt/redis_cluster/redis_{6380,6381}/{conf,logs,pid}

mkdir -p /data/redis_cluster/redis_{6380,6381}

将软件包拖入xshell中

将软件包解压到 /opt/redis_cluster/下

tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/

创建链接

ln -s /opt/redis_cluster/redis-5.0.7  /opt/redis_cluster/redis

进入安装目录

cd /opt/redis_cluster/redis

进行编译安装

make && make install

编写redis_6380.conf配置文件

vim /opt/redis_cluster/redis_6380/conf/redis_6380.conf

bind 192.168.8.5

port 6380

daemonize yes

pidfile "/opt/redis_cluster/redis_6380/pid/redis_6380.pid"

logfile "/opt/redis_cluster/redis_6380/logs/redis_6380.log"

dbfilename "redis_6380.rdb"

dir "/data/redis_cluster/redis_6380/"

cluster-enabled yes

cluster-config-file nodes_6380.conf

cluster-node-timeout 15000

进入此目录

cd /opt/redis_cluster/

ls

复制6380到6381的配置文件

cp redis_6380/conf/redis_6380.conf redis_6381/conf/redis_6381.conf

修改6381内的6380为6381

sed -i 's#6380#6381#g' redis_6381/conf/redis_6381.conf

启动6380和6381两项端口服务

redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf

redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf

netstat -anput | grep redis

查看端口

将主redis的数据目录/opt/redis_cluster/ 复制到两台从主机上

scp -rp /opt/redis_cluster/ root@192.168.8.8:/opt

scp -rp /opt/redis_cluster/ root@192.168.8.9:/opt

进入redis主机2安装redis

cd /opt/redis_cluster/redis

make install

find /opt/redis_cluster/redis_638* -type f -name "*.conf"|xargs sed -i "s#192.168.8.5#192.168.8.8#g"

mkdir -p /data/redis_cluster/redis_{6380,6381}

redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf

redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf

进入redis主机3安装redis

cd /opt/redis_cluster/redis

make install

find /opt/redis_cluster/redis_638* -type f -name "*.conf"|xargs sed -i "s#192.168.8.5#192.168.8.9#g"

mkdir -p /data/redis_cluster/redis_{6380,6381}

redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf

redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf

任意进入一台主机进行操作

redis-cli -h 192.168.8.5 -p 6380

CLUSTER MEET 192.168.8.5 6381

CLUSTER MEET 192.168.8.8 6380

CLUSTER MEET 192.168.8.9 6380

CLUSTER MEET 192.168.8.9 6381

CLUSTER MEET 192.168.8.8 6381

CLUSTER NODES

显示所有节点,现在均为master

exit退出在终端外进行查看

cd /data/redis_cluster/

ls

cd redis_6380

cat nodes_6380.conf

redis-cli -h 192.168.8.5 -p 6380 set k1 1 CLUSTER INFO

登录redis

redis-cli -h 192.168.8.5 -p 6380

给主服务器分节点,群集最多支持16384个节点使用

将三台主机三等分

redis-cli -h 192.168.8.5 -p 6380 cluster addslots {0..5460}

redis-cli -h 192.168.8.8 -p 6380 cluster addslots {5461..10922}

redis-cli -h 192.168.8.9 -p 6380 cluster addslots {10923..16383}

redis-cli -h 192.168.8.5 -p 6380

set k1 1

(error) MOVED 12706 192.168.8.9:6380

redis-cli -c -h 192.168.8.5 -p 6380

set k1 1

-> Redirected to slot [12706] located at 192.168.8.9:6380

OK

192.168.8.9:6380> keys *

1) "k1"

redis-cli -c -h 192.168.8.5 -p 6380 get k1

1) "k1"

redis-cli -c -h 192.168.8.5 -p 6380 cluster info

redis-cli -c -h 192.168.8.5 -p 6380 cluster nodes

接下来分配主从

redis-cli -h 192.168.8.5 -p 6381 CLUSTER REPLICATE ad59fe03475d0d6d4697db338e0cc0f7c800890f 第二台主机6380ID

redis-cli -h 192.168.8.8 -p 6381 CLUSTER REPLICATE

0a92ca3606e1066a98039484a6b1892cd0017bfc 第三台主机6380ID

redis-cli -h 192.168.8.9 -p 6381 CLUSTER REPLICATE a44de5c54c039ce3e3796e078441d7c308a9625f 第一台主机6380ID

redis-cli -h 192.168.8.5 -p 6380

redis-cli -h 192.168.8.5 -p 6380 get k1

cd

vim input_key.sh

#!/bin/bash

for i in $(seq 1 1000)

do

redis-cli -c -h 192.168.8.5 -p 6380 set k_${i} v_${i} && echo "set k_${i} is ok"

done

给予权限并执行

chmod +x input_key.sh

./input_key.sh

redis-cli -c -h 192.168.8.5 -p 6380

192.168.8.5:6380> get k_1

"v_1"

192.168.8.5:6380> get k_100

-> Redirected to slot [5541] located at 192.168.8.8:6380

"v_100"

192.168.8.8:6380> get k_1000

-> Redirected to slot [79] located at 192.168.8.5:6380

"v_1000"

keys *

切换主机2查看键值

redis-cli -h 192.168.8.8 -p 6380

192.168.8.8:6380> keys *

192.168.8.8:6380> get k_707

"v_707"

切换回主redis查看k_707

get k_707

-> Redirected to slot [6114] located at 192.168.8.8:6380

"v_707"

切换从主机redis2模拟故障关闭两项服务

查看状态

netstat -anput | grep redis

查看节点信息

redis-cli -c -h 192.168.8.5 -p 6380

192.168.8.5:6380> get k_707

-> Redirected to slot [6114] located at 192.168.8.5:6381

"v_707"

切换主机2启动服务

redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf

redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf

主机1查看节点,两项服务都为从

主机2变为从

开始进行恢复

redis-cli  -h 192.168.8.8 -p  6380 CLUSTER FAILOVER

查看节点

redis-cli -h 192.168.8.5 -p 6380 cluster nodes

自动化部署redis集群

还原手动创建所有内容

注:三台主机都要操作

杀死进程

pkill redis

删除/data/redis_cluster/redis_6380/下所有文件

rm -rf /data/redis_cluster/redis_6380/*

rm -rf /data/redis_cluster/redis_6381/*

查看端口发现不存在

netstat -anput | grep redis

三台主机重新启动redis

redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf

redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf

显示所有节点

redis-cli -c -h 192.168.8.5 -p 6380 cluster nodes

创建群集MEET,其中均为三台主机IP与节点服务

redis-cli --cluster create --cluster-replicas 1 192.168.8.5:6380 192.168.8.8:6380 192.168.8.9:6380 192.168.8.5:6381 192.168.8.8:6381 192.168.8.9:6381

检查群集完整性

redis-cli --cluster check 192.168.8.5:6380

工具扩容节点

Redis集群的扩容操作可分为以下几个步骤

1)准备新节点

2)加入集群

3)迁移槽和数据

创建节点目录

mkdir -p /opt/redis_cluster/redis_{6390,6391}/{conf,logs,pid}

mkdir -p /data/redis_cluster/redis_{6390,6391}

进入/opt/redis_cluster/

cd /opt/redis_cluster/

复制6380配置文件到6390与6391当作新配置文件

cp redis_6380/conf/redis_6380.conf redis_6390/conf/redis_6390.conf

cp redis_6380/conf/redis_6380.conf redis_6391/conf/redis_6391.conf

修改配置文件内容6380,6381为6390,6391

sed -i 's#6380#6390#g' redis_6390/conf/redis_6390.conf

sed -i 's#6380#6391#g' redis_6391/conf/redis_6391.conf

启动6390和6391

redis-server /opt/redis_cluster/redis_6390/conf/redis_6390.conf

redis-server /opt/redis_cluster/redis_6391/conf/redis_6391.conf

netstat -anput | grep redis

发现节点

redis-cli -c -h 192.168.8.5 -p 6380 cluster meet 192.168.8.5 6390

redis-cli -c -h 192.168.8.5 -p 6380 cluster meet 192.168.8.5 6391

查看节点状态

redis-cli -c -h 192.168.8.5 -p 6380 cluster nodes

分配slots

redis-cli --cluster reshard 192.168.8.5:6390

输入yes等待完成

分配槽位

redis-cli -c -h 192.168.8.5 -p 6380 cluster nodes

查看节点

配置6391 slave 6390:

redis-cli -h 192.168.8.5 -p 6391 cluster replicate a5349495c8b6208884b88f45eca9d4ae906ce392

a5349495c8b6208884b88f45eca9d4ae906ce392为6390id

工具收缩节点

1365  给redis1的6380

redis-cli --cluster reshard 192.168.8.5:6390

输入需要移动的节点数量

输入redis1的6380id

再输入redis1的6390id

done

输入yes等待结束

接下这两个重复以上操作

1366  给redis2的6380

节点数为1366

节点id为redis2节点6380id

源为redis1 6390id

1365  给redis3的6380

节点数为1365

节点id为redis3节点6380id

源为redis1 6390id

遗忘节点id分别为6390和6391的id

redis-cli -c -h 192.168.8.5 -p 6380  cluster forget a5349495c8b6208884b88f45eca9d4ae906ce392

redis-cli -c -h 192.168.8.5 -p 6380  cluster forget fd9e594990c56ade80df312ca910cb646f1535b7

查看节点状态

redis-cli -c -h 192.168.8.5 -p 6380 cluster nodes

由此可见节点不复存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值