欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaEE进阶——Docker安装Redis(单机/集群)

程序员文章站 2022-05-20 21:07:21
...

准备工作

安装单机版Redis

  1. 拉取Redis镜像

    docker pull redis:3.2
  2. 启动Redis容器;

    docker run -d -p 6379:6379 --name 容器名 redis:3.2
  3. 防火墙开启6379端口(CentOS 7宿主机);

    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload
  4. 测试连接。

    JavaEE进阶——Docker安装Redis(单机/集群)

安装集群版Redis(一主两备)

  1. 了解Docker容器 –link 参数的意义

  2. 本地下载对应版本的redis压缩包(我是3.2的镜像),解压出 redis.conf 模板文件,拷贝三份 redis-master.confredis-slave1.confredis-slave2.conf 进行修改;

    
    # redis-master.conf 需要修改部分
    
    daemonize yes
    pidfile /var/run/redis.pid
    bind 0.0.0.0 # 原来是bind 127.0.0.1
    
    # redis-slave1.conf 需要修改部分
    
    daemonize yes
    pidfile /var/run/redis.pid
    slaveof master 6379 # 注释打开
    
    # redis-slave2.conf 需要修改部分
    
    daemonize yes
    pidfile /var/run/redis.pid
    slaveof master 6379 # 注释打开

    其中,slaveof master 6379 默认被注释,需要我们打开注释修改,master在这里充当 ip 的角色,后面利用 –link 参数来配置redis主机的别名为 master,用以让从机进行识别。

  3. 创建redis集群容器,一主两备,备份机通过 –link 连接主机;

    docker run -it -p 6380:6379 -v /usr/local/redis/redis-master.conf:/usr/local/etc/redis/redis.conf --name taotao-rediscluster-master redis:3.2 /bin/bash
    docker run -it -p 6381:6379 -v /usr/local/redis/redis-slave1.conf:/usr/local/etc/redis/redis.conf --name taotao-rediscluster-slave1 --link taotao-rediscluster-master:master redis:3.2 /bin/bash
    docker run -it -p 6382:6379 -v /usr/local/redis/redis-slave2.conf:/usr/local/etc/redis/redis.conf --name taotao-rediscluster-slave2 --link taotao-rediscluster-master:master redis:3.2 /bin/bash

    其中,/usr/local/redis 目录是我在宿主机存放三个配置文件的目录,启动好一个容器可以 Ctrl+PCtrl+Q 进行退出创建下一个容器。

  4. 启动redis服务。先启动 master ,然后启动 slaver 。在三个容器中都输入:

    redis-server /usr/local/etc/redis/redis.conf
  5. 测试集群搭建情况。

    redis-cli
    127.0.0.1:6379> info

    JavaEE进阶——Docker安装Redis(单机/集群)

  6. 防火墙开启6380、6381和6382端口。

    firewall-cmd --zone=public --add-port=6380/tcp --permanent
    firewall-cmd --zone=public --add-port=6381/tcp --permanent
    firewall-cmd --zone=public --add-port=6382/tcp --permanent
    firewall-cmd --reload