在阿里云服务器上搭建外网可访问的redis集群

一、阿里云服务器安全组开放端口

控制台 -> 云服务器ECS -> 实例

在这里插asdadsfsdfasdfsfsadf描述

因为阿里云服务器自带一层防火墙,所以需要开放7001-7006、17001-17006端口(这个端口是自定义的,只要不跟其他端口冲突)

在这里插入图片描述

二、拉取最新版本的redis

[root@lx ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
Digest: sha256:a0494b60a0bc6de161d26dc2d2f9d2f1c5435e86a9e5d48862a161131affa6bd
Status: Image is up to date for redis:latest
docker.io/library/redis:latest

三、配置redis.conf

  1. 创建 redis 集群专属文件夹并进入该文件夹,后续所有命令均在这个文件夹下进行

    [root@lx ~]# cd
    [root@lx ~]# mkdir redis-cluster
    [root@lx ~]# cd redis-cluster/
    [root@lx redis-cluster]# 
    
  2. 创建 redis-cluster.conf 文件,作为生成 redis.conf 的模板文件

    [root@lx redis-cluster]# touch redis-cluster.conf
    [root@lx redis-cluster]# ll
    total 0
    -rw-r--r-- 1 root root 0 Nov  9 10:32 redis-cluster.conf
    
  3. vim 打开 redis-cluster.conf 文件,编写模板内容

    # 服务器上的所有地址都能够访问 redis 服务
    bind 0.0.0.0
    # 该节点的 redis 服务端口
    port ${PORT}
    # 开启 redis 集群模式
    cluster-enabled yes
    # 关闭 protected-mode 模式,让外网可以直接访问
    protected-mode no
    # 集群配置名
    cluster-config-file nodes.conf
    # 超时时间
    cluster-node-timeout 5000
    # 实际给各节点网卡分配的IP(一定要是阿里云服务器的公网IP)
    cluster-announce-ip 47.xx.xx.xx
    # 节点映射端口
    cluster-announce-port ${PORT}
    # 节点总线端口
    cluster-announce-bus-port 1${PORT}
    

    注意cluster-announce-ip 后面一定要是阿里云服务器的公网IP,把 47.xx.xx.xx 换成你的公网IP

在这里插入图片描述

[root@lx redis-cluster]# 
[root@lx redis-cluster]# cat redis-cluster.conf 
# 服务器上的所有地址都能够访问 redis 服务
bind 0.0.0.0
# 该节点的 redis 服务端口
port ${PORT}
# 开启 redis 集群模式
cluster-enabled yes
# 关闭 protected-mode 模式,让外网可以直接访问
protected-mode no
# 集群配置名
cluster-config-file nodes.conf
# 超时时间
cluster-node-timeout 5000
# 实际给各节点网卡分配的IP(一定要是阿里云服务器的公网IP)
cluster-announce-ip 47.xx.xx.xx
# 节点映射端口
cluster-announce-port ${PORT}
# 节点总线端口
cluster-announce-bus-port 1${PORT}
# 开启持久化
appendonly yes
  1. 通过 redis-cluster.conf 模板文件生成6个 redis 对应的 redis.conf 配置文件

    for port in `seq 7001 7006`; do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data; done;
    
    [root@lx redis-cluster]# for port in `seq 7001 7006`; do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data; done;
    [root@lx redis-cluster]# ll
    total 28
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7001
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7002
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7003
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7004
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7005
    drwxr-xr-x 4 root root 4096 Nov  9 10:56 7006
    -rw-r--r-- 1 root root  592 Nov  9 10:51 redis-cluster.conf
    [root@lx redis-cluster]# tree
    .
    ├── 7001
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    ├── 7002
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    ├── 7003
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    ├── 7004
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    ├── 7005
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    ├── 7006
    │   ├── conf
    │   │   └── redis.conf
    │   └── data
    └── redis-cluster.conf
    
    18 directories, 7 files
    

在这里插入图片描述

四、创建redis网络

[root@lx redis-cluster]# docker network create redis-cluster
f29d1e4d18f2d1faddf44338435a5bfa80c6de2a54aafcd09d3290a675b43101
[root@lx redis-cluster]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
9107ad261f12        bridge              bridge              local
956fbaea1607        host                host                local
adc2616df29c        none                null                local
f29d1e4d18f2        redis-cluster       bridge              local

五、启动redis

  1. 查看 redis 镜像,获取 redis 镜像 id

    [root@lx redis-cluster]# docker images
    REPOSITORY                                                      TAG                 IMAGE ID            CREATED             SIZE
    redis                                                           latest              62f1d3402b78        12 days ago         104MB
    
  2. 启动所有 redis

    for port in `seq 7001 7006`; do docker run -d -p ${port}:${port} -p 1${port}:1${port} --restart=always --name=redis-${port} --network=redis-cluster -v $PWD/${port}/conf/redis.conf:/etc/redis/redis.conf -v $PWD/${port}/data:/data [redis镜像ID] redis-server /etc/redis/redis.conf; done;
    

    [redis镜像ID]换成对应的 redis 镜像id,如上面的 62f1d3402b78

    在这里插入图片描述

    启动所有 redis 这段代码,详细说明一下

    -d: 后台启动

    -p ${port}:${port} :映射 redis 端口

    -p 1${port}:1${port} :映射 redis 总线端口

    --restart=always :重启

    --name=redis-${port} :指定容器名称

    --network=redis-cluster :使用自定义的 docker 网络

    -v $PWD/${port}/conf/redis.conf:/etc/redis/redis.conf :将 redis.conf 挂载到 容器的 redis.conf

    -v $PWD/${port}/data:/data :将 data 挂载到 容器的 data

    62f1d3402b78 :redis 镜像id

    redis-server /etc/redis/redis.conf :启动 redis 服务

六、进入任意一个redis容器

[root@lx redis-cluster]# docker exec -it redis-7001 /bin/sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9snQbnN-1604919076558)(C:\Users\lengxu32110\AppData\Roaming\Typora\typora-user-images\image-20201109110932022.png)]

七、开启集群

redis-cli --cluster create 47.xx.xx.xx:7001 47.xx.xx.xx:7002 47.xx.xx.xx:7003 47.xx.xx.xx:7004 47.xx.xx.xx:7005 47.xx.xx.xx:7006 --cluster-replicas 1

在这里插入图片描述

八、用 Redis Desktop Manager 测试

在这里插入图片描述

结束

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值