心血来潮,去申请了一个免费的腾讯云服务器来玩玩,顺便在上面做一些部署,顺便记录一下搭建的踩坑历程(有时候的命令真的能气死你。。。),好了闲话少叙,我们进入正题
1. 腾讯云我安装的系统是 centos8.0(本来是ubuntu加docker进行部署,太简单了就没做记录,可以给大家一个关于docker搭建redis集群的操作记录,简单快捷:基于Docker搭建Redis集群(主从集群) - niceyoo - 博客园)
也需要将reids集群之间的通讯端口开放,对应上面的端口加一万 如:6379 16379
3. 如果开始是纯净新装的centos系统 安装wget 命令 : yum -y install wget
4. 安装gcc环境 :yum install gcc-c++
如果上面的步骤已经完成了,我们继续往下
1. 下载redis 个人习惯在/usr/local里面进行下载redis
wget http://download.redis.io/releases/redis-6.0.16.tar.gz
2. 解压 tar -zxvf redis-6.0.16.tar.gz
3. 安装 先进入解压后的文件 redis-6.0.16
执行 make 编译
然后执行 make install PREFIX=/usr/local/redis-6.0.16 进行安装
4. 为了方便管理,在/usr/local下新建了一个redis-cluster 目录存放集群的数据并新建每台机器的配置文件目录如下:
5. 创建完成后,复制 redis-6.0.16/redis.conf 到6379目录下打开文件进行配置
修改如下内容(找到这些内容,然后进行修改dir应该是在365行左右(是不是很贴心)):
port 6379 #端口
cluster-enabled yes #启用集群模式
cluster-config-file nodes-6379.conf #集群节点信息文件,这里6379和端口对应上
cluster-node-timeout 5000 #超时时间
appendonly yes # aof持久化
daemonize yes # 后台运行
protected-mode no # 非保护模式
pidfile /var/run/redis_6379.pid # 对应端口
dir /usr/local/redis‐cluster/6379 #路径建议手打,不排除乱码空格啥东西导致最后启动报错,本人被坑了好久(指定数据文件存放位置,必须要指定不同的目录位置,不然会 丢失数据)
# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
6. 对应的把其他几台机器一样配置改了一个直接复制就好,把6379的端口改成其他端口就行
7. 分别启动redis实例并检查情况
/usr/local/redis‐6.0.16/src/redis‐server /usr/local/redis‐cluster/6379/redis.conf
如果启动报错,进入src文件夹(没搞清楚为啥,其他博客好像都是上面的方式,我弄死不
得行,只能自己想办法)
./redis-server /usr/local/redis‐cluster/6379/redis.conf
ps ‐ef | grep redis 查看redis启动情况
ps : 找了下这个问题,应该是安装这边的问题,我们可以把文件复制到/usr/bin下面就可以在其他地方使用了
命令:
cp /usr/local/redis-6.0.16/src/redis-server /usr/bin/redis-server
cp /usr/local/redis-6.0.16/src/redis-cli /usr/bin/redis-cli
执行这两条(自己改下自己的路径)就可以在其他地方使用了:
redis-server /usr/local/redis‐cluster/6379/redis.conf 这个也可以写成sh文件,方便全部启动
8. 启动完成后启动集群
/usr/local/redis-6.0.16/src/redis-cli --cluster create 124.222.223.214:6379 124.222.223.214:6380 124.222.223.214:6381 124.222.223.214:6382 124.222.223.214:6383 124.222.223.214:6384 --cluster-replicas 1
如果没有任何反应,自己手打吧,还是有编码方式不一致识别不了的问题
中途会把集群信息分配打印出来,M主节点 S从节点(三主三从)没问题就输入yes,放个别人的截图将就看下,一个意思
至此,redis环境搭建算是完成了,接下来我们来使用,以及看下坑的地方
本文使用spring boot来进行操作,搭建要有兴趣可以去看我前面的博客,太简单了就不多说了。
spring boot 使用redis 依赖:
org.springframework.boot
spring-boot-starter-data-redis
org.apache.commons
commons-pool2
application.yml
redis:
database: 0
timeout: 3000
cluster:
nodes: 124.222.223.214:6379,124.222.223.214:6380,124.222.223.214:6381,124.222.223.214:6382,124.222.223.214:6383,124.222.223.214:6384
lettuce:
pool: # 连接池信息
max-idle: 50
min-idle: 10
max-active: 100
max-wait: 1000
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/redisDemo")
public class RedisDemoController {
@Autowired
private StringRedisTemplate redisTemplate;
@RequestMapping("/addKey")
public String addKey(String key,String value){
redisTemplate.opsForValue().set(key,value);
return "新增成功";
}
@RequestMapping("/get")
public String get(String key){
return redisTemplate.opsForValue().get(key);
}
}
这个代码很简单,至此启动开始尝试(坑来了)
启动报错,没办法创建redisDemo的Bean对象。。。。。。(如果你没有报错,当我没说过)
代码没啥问题,问题点是应连不上远程地址
1. 看看 redis配置文件记得注释掉 bind 127.0.0.1 或者配置为 bind 0.0.0.0
2. 端口有没有开放完,别漏了
3. 查看集群环境的节点信息
why? 打开对应的每一个节点,自己的都是内网地址(没去研究这个问题,哪天有闲心了再去看看为啥)。。。。。
老老实实操作,先把集群都停了,一个个的停:
/usr/local/redis‐6.0.16/src/redis‐cli ‐c ‐h 124.222.223.214 ‐p 6379 shutdown
如果不行,ps -ef|grep redis 然后kill掉这六个
接下来把每个redis.conf 文件中内网的ip都改为公网的,再用上面第七步把每个实例启动就好,不要再执行第八步,集群搭建一次下次启动只需要把实例重启
再次启动项目,可以了,访问一下:
.sh文件新建与内容,方便统一启动,关闭
vim startAll.sh
编辑内容为:
redis-server /usr/local/redis-cluster/6379/redis.conf
redis-server /usr/local/redis-cluster/6380/redis.conf
redis-server /usr/local/redis-cluster/6381/redis.conf
redis-server /usr/local/redis-cluster/6382/redis.conf
redis-server /usr/local/redis-cluster/6383/redis.conf
redis-server /usr/local/redis-cluster/6384/redis.conf
esc 然后:wq保存并退出 如果不会自行百度或者本地编辑上传
stopAll.sh内容:
redis-cli -p 6379 shutdown
redis-cli -p 6380 shutdown
redis-cli -p 6381 shutdown
redis-cli -p 6382 shutdown
redis-cli -p 6383 shutdown
redis-cli -p 6384 shutdown
运行: sh startAll.sh 搞定
好了,redis集群环境搭建及使用就到这儿了,如果还有其他问题,欢迎留言交流,我一般是想到哪儿写到那儿,当然前面的系列也会慢慢补充,有时间就会继续新增,记录,交流,共同进步