redis部署
编译安装
[root@server1 ~]# tar zxf redis-6.2.4.tar.gz
[root@server1 ~]# cd redis-6.2.4/
[root@server1 redis-6.2.4]# make
[root@server1 redis-6.2.4]# make install
[root@server1 redis-6.2.4]# cd utils/
[root@server1 utils]# vim install_server.sh
注释以下行
运行安装脚本
[root@server1 utils]# ./install_server.sh
[root@server1 utils]# netstat -antlp|grep :6379
[root@server1 utils]# vim /etc/redis/6379.conf
bind *
重启服务
[root@server1 utils]# /etc/init.d/redis_6379 restart
[root@server1 utils]# netstat -antlp|grep :6379
redis主从复制
创建redis实例,直接从server1上拷贝编译好的redis程序,两边都要安装rsync命令
[root@server1 ~]# cd /usr/local/bin/
[root@server1 bin]# yum install -y rsync
[root@server3 ~]# yum install -y rsync
拷贝程序
[root@server1 bin]# rsync -a redis-* server3:/usr/local/bin/
[root@server1 ~]# rsync -a redis-6.2.4 server3:
server3上完成redis部署
[root@server3 ~]# cd /usr/local/bin/
[root@server3 bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@server3 ~]# cd redis-6.2.4/
[root@server3 redis-6.2.4]# cd utils/
[root@server3 utils]# ./install_server.sh
[root@server3 utils]# vim /etc/redis/6379.conf
bind *
eplicaof 192.168.52.120 6379
[root@server3 ~]# /etc/init.d/redis_6379 restart
其它redis节点依次类推
测试
master写入数据
[root@server1 ~]# redis-cli
127.0.0.1:6379> info
127.0.0.1:6379> set name hjl
查看slave端是否同步
[root@server3 ~]# redis-cli
127.0.0.1:6379> get name
"hjl"
redis高可用
[root@server1 redis-6.2.4]# cp sentinel.conf /etc/redis/
[root@server1 redis-6.2.4]# cd /etc/redis/
[root@server1 redis]# vim sentinel.conf
sentinel monitor mymaster 192.168.52.120 6379 2
sentinel down-after-milliseconds mymaster 10000
拷贝配置文件
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/
启动服务
[root@server1 redis]# redis-sentinel /etc/redis/sentinel.conf
其它主机直接启动服务,无需更改配置文件
[root@server2 ~]# redis-sentinel /etc/redis/sentinel.conf
[root@server3 ~]# redis-sentinel /etc/redis/sentinel.conf
关闭redis master
[root@server1 ~]# redis-cli shutdown
redis集群会自动切换master
当原来的master再次启动后,会以slave身份加入集群
[root@server1 ~]# /etc/init.d/redis_6379 start
[root@server1 ~]# redis-cli info
redis集群
[root@server1 redis-6.2.4]# cd utils/
[root@server1 utils]# cd create-cluster/
[root@server1 create-cluster]# ./create-cluster start
[root@server1 create-cluster]# ./create-cluster create
查看命令帮助
[root@server1 create-cluster]# redis-cli --cluster help
获取集群状态
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
连接集群
[root@server1 create-cluster]# redis-cli -c -p 30001 info
[root@server1 create-cluster]# redis-cli -c -p 30004
关闭redis实例,集群自动切换
[root@server1 create-cluster]# redis-cli -c -p 30002 shutdown
[root@server1 create-cluster]# redis-cli -c -p 30004
127.0.0.1:30004> get name
启动redis实例
[root@server1 create-cluster]# ./create-cluster start
数据完好
[root@server1 create-cluster]# redis-cli -c -p 30001 get name
再启动两个redis实例
[root@server1 create-cluster]# vim create-cluster
[root@server1 create-cluster]# ./create-cluster start
添加集群节点
[root@server1 create-cluster]# redis-cli --cluster add-node 127.0.0.1:30007 127.0.0.1:30001
新添加的节点没有hash槽,角色时是master
添加slave节点
[root@server1 create-cluster]# redis-cli --cluster add-node 127.0.0.1:30008 127.0.0.1:30007 --cluster-slave --cluster-master-id 3be68858185f525c7651b53f64875d60e3b56777
迁移hash槽
[root@server1 create-cluster]# redis-cli --cluster reshard 127.0.0.1:30001
How many slots do you want to move (from 1 to 16384)? 3000
What is the receiving node ID? 2cfe812f247254aa593f07bcc5e15291b77ecef6
Source node #1: all