Redis伪集群搭建
注:其中遇到很多坑,学习中做个总结记录,文档手写可能有误,仅做参考
一、Redis简介
1.Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
2.Redis 提供五种数据类型:string,hash,list,set及zset(sorted set)。
3.Redis根本是使用内存存储,持久化的关键是这三条指令:SAVE BGSAVE LASTSAVE
二、安装Redis(系统环境:Linux Centos7 )
1.安装gcc
[root@localhost ~]# yum install gcc
2.下载Redis安装包
[root@localhost ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz
3.安装Redis(自定义安装路径:/usr/share/redis)
[root@localhost ~]# tar -zxvf redis-3.2.12.tar.gz
[root@localhost ~]# cd redis-3.2.12
[root@localhost redis-3.2.12]# make
[root@localhost redis-3.2.12]# make install PREFIX=/usr/share/redis
4.安装ruby
[root@localhost ~]# curl -L get.rvm.io | bash -s stable
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# source ~/.bash_profile
[root@localhost ~]# rvm list known
[root@localhost ~]# rvm install 2.5.1
[root@localhost ~]# ruby -v
[root@localhost ~]# gem install redis
5.开始配置redis.conf
[root@localhost ~]# cd ~
[root@localhost ~]# cp redis-3.2.12/redis.conf /usr/share/redis/bin/
[root@localhost ~]# cd /usr/share/redis/bin/
[root@localhost bin]# vim redis.conf
配置文件修改内容如下:
(1)开启集群功能:cluster-enabled yes
(2)如需外网访问则:bind 127.0.0.1 ~~> bind 0.0.0.0
(3)开启静默启动:daemonize yes
6.拷贝redis安装程序实例并搭建伪集群
[root@localhost bin]# cd /usr/share
[root@localhost share]# mkdir redis-cluster
[root@localhost share]# cp redis redis-cluster/redis01 -r
[root@localhost share]# cp redis redis-cluster/redis02 -r
[root@localhost share]# cp redis redis-cluster/redis03 -r
[root@localhost share]# cp redis redis-cluster/redis04 -r
[root@localhost share]# cp redis redis-cluster/redis05 -r
[root@localhost share]# cp redis redis-cluster/redis06 -r
[root@localhost share]# cp redis redis-cluster/redis06 -r
[root@localhost share]# cd redis-cluster
[root@localhost redis-cluster]# vim redis_start_all.sh
修改每个实例bin下的redis.conf(侦听的端口号:7001~7006):侦听的端口号替换掉默认的6379
7. 编写脚本方便启动所有redis实例,内容如下:
cd /usr/share/redis-cluster/redis01/bin
./redis-server redis.conf
cd /usr/share/redis-cluster/redis02/bin
./redis-server redis.conf
cd /usr/share/redis-cluster/redis03/bin
./redis-server redis.conf
cd /usr/share/redis-cluster/redis04/bin
./redis-server redis.conf
cd /usr/share/redis-cluster/redis05/bin
./redis-server redis.conf
cd /usr/share/redis-cluster/redis06/bin
./redis-server redis.conf
8.启动redis实例
[root@localhost redis-cluster]# cp ~/redis-3.2.12/src/redis-trib.rb ./
[root@localhost redis-cluster]# ./redis_start_all.sh
[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
注意:使用redis-trib.rb create后提示输入要输入yes而不是y,否则后面使用将报错
9.测试使用
[root@localhost redis-cluster]# redis01/bin/redis-cli -p 7001 -c
[127.0.0.1:7001]->set key1 value1
注意:外网RedisDesktopManager或者telnet如果连接不到Redis需要检查
(1)redis.conf中的bind端口
(2)服务器防火墙,即使防火墙没开启,也要添加侦听端口到防火墙设置中
firewall-cmd --zone=public --add-port=7001/tcp --permanent
......
(3)若是阿里云ECS则还需检查安全组策略是否添加相应端口号
10.停止服务(可以写.sh文件批量停止集群服务)
[root@localhost redis-cluster]# redis01/bin/redis-cli shutdown