Redis集群环境搭建

环境搭建准备:

心血来潮,去申请了一个免费的腾讯云服务器来玩玩,顺便在上面做一些部署,顺便记录一下搭建的踩坑历程(有时候的命令真的能气死你。。。),好了闲话少叙,我们进入正题

1. 腾讯云我安装的系统是 centos8.0(本来是ubuntu加docker进行部署,太简单了就没做记录,可以给大家一个关于docker搭建redis集群的操作记录,简单快捷:基于Docker搭建Redis集群(主从集群) - niceyoo - 博客园)

Redis集群环境搭建_第1张图片

2. 将需要用到的集群端口开放   (三主三从的集群环境 )          Redis集群环境搭建_第2张图片

         也需要将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 目录存放集群的数据并新建每台机器的配置文件目录如下:

Redis集群环境搭建_第3张图片

 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文件,方便全部启动

Redis集群环境搭建_第4张图片

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集群环境搭建_第5张图片

 至此,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. 查看集群环境的节点信息

Redis集群环境搭建_第6张图片

         why? 打开对应的每一个节点,自己的都是内网地址(没去研究这个问题,哪天有闲心了再去看看为啥)。。。。。

        老老实实操作,先把集群都停了,一个个的停:

       /usr/local/redis6.0.16/src/rediscli c h 124.222.223.214 p 6379 shutdown

        如果不行,ps -ef|grep redis  然后kill掉这六个

       接下来把每个redis.conf 文件中内网的ip都改为公网的,再用上面第七步把每个实例启动就好,不要再执行第八步,集群搭建一次下次启动只需要把实例重启

再次启动项目,可以了,访问一下:

Redis集群环境搭建_第7张图片

Redis集群环境搭建_第8张图片

 

补充

        .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集群环境搭建及使用就到这儿了,如果还有其他问题,欢迎留言交流,我一般是想到哪儿写到那儿,当然前面的系列也会慢慢补充,有时间就会继续新增,记录,交流,共同进步

你可能感兴趣的:(环境搭建,redis,redis,数据库)