在阿里云,使用docker搭建外网可以访问的redis集群

限于机器限制,本文主要在阿里云搭建 3主3从的redis集群

重要注意事项:

在阿里云网络配置安全组先打开这12个端口的访问权限

7001-7006  17001-17006

第一步:拉取redis镜像,创建redis-conf模板

拉取redis最新镜像

docker pull redis

新文件redis-cluster2.tmpl 文件,

vim redis-cluster2.tmpl

 然后复制以下内容到redis-cluster2.tmpl 文件内

##设置外部网络连接redis服务,默认是yes,即开启。开启protected-mode保护模式,需配置bind ip或者设置访问密码,关闭protected-mode模式,此时外部网络可以直接访问
protected-mode no
##节点端口
port ${PORT}
##指定redis是否要用守护线程的方式启动,默认no
daemonize no
##持久化模式
appendonly yes
##cluster集群模式
cluster-enabled yes
##集群配置名
cluster-config-file nodes.conf
##超时时间
cluster-node-timeout 15000
##实际为各节点网卡分配ip
cluster-announce-ip 外网ip
##节点映射端口
cluster-announce-port ${PORT}
##节点总线端
cluster-announce-bus-port 1${PORT}
##连接密码(可选)
requirepass 123456

模板说明:

cluster-announce-bus-port:节点总线端,节点使用群集总线进行故障检测,配置更新,故障转移授权等,因此搭建集群需要确保这个端口已开通,就是文章开始的注意事项。

 

第二步:创建redis-cof脚本

vim creatRedisCluster2.sh

 复制以下内容到creatRedisCluster2.sh

for port in `seq 7001 7006`; do \
  base=6999 \
  && ip=$[port-base] \
  && mkdir -p ${port}/conf \
  && PORT=${port} TEMP=${ip} envsubst < redis-cluster2.tmpl > ${port}/conf/redis.conf \
  && mkdir -p ${port}/data;\
done

赋予执行权限

chmod 755 creatRedisCluster2.sh

 创建自定义网桥

docker network create redis-net

 

第三步:创建启动docker模板

新建creatDocker.sh文件,复制以下内容进去

for port in `seq 7001 7006`; do
  docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
  -v /usr/local/redis-cluster2/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /usr/local/redis-cluster2/${port}/data:/data --name redis-${port} --net redis-net -d  redis  redis-server /usr/local/etc/redis/redis.conf;
done

说明:

-p ${port}:${port} :开启映射的端口,宿主机的port:容器的port

--name redis-${port} : 容器的名字


  -v /usr/local/redis-cluster2/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf 
  -v /usr/local/redis-cluster2/${port}/data:/data

将宿主机的目录文件/usr/local/redis-cluster2/${port}/conf/redis.conf 和容器的目录文件/usr/local/etc/redis/redis.conf 共享

将宿主机的目录文件usr/local/redis-cluster2/${port}/data和容器的目录文件/data 共享

可以理解为:启动容器后,容器里面的redis的配置文件就是这个目录的配置文件/usr/local/redis-cluster2/${port}/conf/redis.conf

-d  redis  :拉取的镜像名字 redis构建启用容器

redis-server /usr/local/etc/redis/redis.conf: 用/usr/local/etc/redis/redis.conf文件作为启动redis的配置文件

 

给 creatDocker.sh赋予执行权限

chmod 755 creatDocker.sh

第四步:执行脚本creatRedisCluster2.sh,creatDocker.sh

./creatRedisCluster2.sh

执行结果

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

./creatDocker.sh

执行结果

20200504155525899.png

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

第五步:搭建集群

随便进入一个容器

docker exec -it redis-7001 /bin/bash

执行集群命令

redis-cli  --cluster create 外网ip:7001 外网ip:7002 外网ip:7003 外网ip:7004 外网ip:7005 外网ip:7006 --cluster-replicas 1 -a 123456

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

 

随便进入一个容器内:


docker exec -it redis-7001 /bin/bash

 注意redis集群,要用  -c

redis-cli -c -h 外网ip -p 7001

 登录

auth 123456

查看集群状态

cluster nodes

实验一些结果可用 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

 

 

为在阿里云搭建 Docker Redis 集群,您可以按照以下步骤进行操作: 1. 创建阿里云 ECS 实例:首先,登录阿里云控制台,创建至少3个 ECS 实例作为 Redis 集群的节点。确保这些实例之间可以通过内网IP相互通信。 2. 安装 Docker:在每个 ECS 实例上安装 Docker。您可以参考阿里云官方文档提供的方法来完成安装。 3. 创建 Docker 网络:使用以下命令在每个 ECS 实例上创建一个 Docker 网络: ```shell docker network create redisnet ``` 4. 下载 Redis 镜像:在每个 ECS 实例上执行以下命令,下载 Redis 镜像: ```shell docker pull redis ``` 5. 运行 Redis 容器:在每个 ECS 实例上执行以下命令,启动 Redis 容器,并加入到之前创建的 Docker 网络中: ```shell docker run -d --name redis1 --net redisnet redis docker run -d --name redis2 --net redisnet redis docker run -d --name redis3 --net redisnet redis ``` 这将分别在每个 ECS 实例上启动3个 Redis 容器。 6. 配置 Redis 集群:在任一 ECS 实例上执行以下命令,配置 Redis 集群: ```shell docker exec -it redis1 redis-cli --cluster create <节点1IP:端口> <节点2IP:端口> <节点3IP:端口> --cluster-replicas 1 ``` 请将 `<节点1IP:端口>`、 `<节点2IP:端口>`、 `<节点3IP:端口>` 替换为您实际的 ECS 实例的 IP 地址和 Redis 运行端口。 7. 验证 Redis 集群:您可以执行以下命令验证 Redis 集群是否正常工作: ```shell docker exec -it redis1 redis-cli cluster info ``` 如果一切正常,您应该能够看到有关 Redis 集群的信息。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值