一、安装redis
可以到官网进行下载,这里我下载的是redis6.2.6版本,下载完成后解压安装:
wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar xvf redis-6.2.6.tar.gz cd redis-6.2.6/src make && make install
安装编译完成后,修改redis.conf
vi redis.conf #搜索 daemonize no 这⾥把no 修改为yes,这样可以让redis后台运⾏ [root@ecs-3950 redis-6.2.6]# redis-server redis.conf [root@ecs-3950 redis-6.2.6]# redis-cli 127.0.0.1:6379>
二、redis集群部署
集群环境
系统版本:Centos7.8
Redis版本:6.2.6
Redis集群模式:Cluster模式
三台云服务器地址:10.0.0.71、10.0.0.4、10.0.0.152
Redis使用端口号:每台服务器两个实例,分别用5001,5002
cluster集群的特点
sentinel模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中。cluster模式的出现就是为了解决单机Redis容量有限的问题,将Redis的数据根据一定的规则分配到多台机器。
cluster可以说是sentinel和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话,就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容。
使用集群,只需要将redis配置文件中的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行,新增节点非常方便。
集群部署
服务器:10.0.0.71 做如下配置:
创建集群文件夹,把redis的数据文件复制到集群文件夹001中
[root@ecs-2ede-0001 ~]# mkdir -p cluster/{001,002} [root@ecs-2ede-0001 ~]# cp -r redis-6.2.6/ cluster/001 [root@ecs-2ede-0001 cluster]# cd 001 [root@ecs-2ede-0001 001]# ls 00-RELEASENOTES CONDUCT COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src TLS.mdBUGS CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests utils
修改redis.conf配置文件内主要如下参数:
[root@ecs-2ede-0001 001]# vim redis.conf daemonize yes #后台启动 port 5001 #每台服务器中两个redis实例的端口,主为5001,从为5002 cluster-enabled yes #配置yes开启redis-cluster pidfile /var/run/redis_5001.pid #pidfile文件对应5001,5002 bind 10.0.0.71 #登陆服务器的ip白名单,这里设为服务器的内网ip
在把redis的数据文件复制到集群文件夹002中
[root@ecs-2ede-0001 ~]# cp -r redis-6.2.6/ cluster/002 [root@ecs-2ede-0001 cluster]# cd 002 [root@ecs-2ede-0001 001]# ls 00-RELEASENOTES CONDUCT COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src TLS.mdBUGS CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests utils
同理如001修改redis.conf配置中如下参数:
[root@ecs-2ede-0001 001]# vim redis.conf daemonize yes #后台启动 port 5002 #每台服务器中两个redis实例的端口,主为5001,从为5002 cluster-enabled yes #配置yes开启redis-cluster pidfile /var/run/redis_5002.pid #pidfile文件对应5001,5002 bind 10.0.0.71 #登陆服务器的ip白名单,这里设为服务器的内网ip
同理在另外两台服务器同样创建cluster文件夹和子文件夹001、002,将服务器10.0.0.71下cluster文件夹拷贝到另外两台服务器:
scp -r cluster/ root@10.0.0.4:/root scp -r cluster/ root@10.0.0.152:/root
启动redis(这里只贴了其中一台云服务器的启动,其他两台同理)
[root@ecs-2ede-0001 ~]# cd cluster/001 [root@ecs-2ede-0001 001]# redis-server redis.conf [root@ecs-2ede-0001 001]# cd .. [root@ecs-2ede-0001 cluster]# cd 002 [root@ecs-2ede-0001 002]# redis-server redis.conf [root@ecs-2ede-0001 002]# netstat -tunlp|grep redis #查看服务是否正常启动
创建redis集群
[root@ecs-2ede-0001 ~]# redis-cli --cluster create 10.0.0.71:5001 10.0.0.71:5002 10.0.0.4:5001 10.0.0.4:5002 10.0.0.152:5001 10.0.0.152:5002 --cluster-replicas 1
中途需要输入yes到下一步,出现下图则集群创建成功
连接集群并查看集群信息:
[root@ecs-2ede-0001 cluster]# redis-cli -c -h 10.0.0.71 -p 5001 10.0.0.71:5001> cluster info
查看集群节点:
10.0.0.71:5001> cluster nodes
测试存取值,客户端连接集群redis-cli需要带上 -c,才能在节点间跳转
10.0.0.71:5001> Keys * (empty array) 10.0.0.71:5001> set name test1 -> Redirected to slot [5798] located at 10.0.0.4:5001 OK 10.0.0.4:5001> get name "test1"
根据redis-cluster的key值分配,name应该分配到节点10.0.0.4:5001[5461-10922]上,上面显示redis cluster自动从10.0.0.71:5001跳转到了10.0.0.4:5001节点。
至此集群已经完成