Docker 搭建Redis集群 / SpringBoot 项目打包到Docker

Redis集群

创建集群

自定义Redis网络

docker network create redisNet --subnet 193.168.0.0/16

创建配置文件

for port in $(seq 1 6);\
do \
mkdir -p /home/myredis/dataSync/node-${port}/conf
touch /home/myredis/dataSync/node-${port}/conf/redis.conf
cat <<EOF > /home/myredis/dataSync/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 193.168.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

开启容器

docker run -p 6371:6379 -p 16371:16379 --name redis_1 \
-v /home/myredis/dataSync/node-1/data:/data \
-v /home/myredis/dataSync/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redisNet --ip 193.168.0.11 redis redis-server /etc/redis/redis.conf

通过脚本直接开启6个容器

for port in $(seq 1 6);\
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis_${port} \
-v /home/myredis/dataSync/node-${port}/data:/data \
-v /home/myredis/dataSync/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redisNet --ip 193.168.0.1${port} redis redis-server /etc/redis/redis.conf
done

Redis-Cluster集群

进入容器并且创建集群,Redis-Cluster采用务中心结构,每个节点保存数据和整个集群状态,每个节点都和其他节点连接

主从模式:
redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉

上面那个例子里, 集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。

所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点A、B、C, 以及从节点A1、B1、C1, 那么即使B挂掉系统也可以继续正确工作。

B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 当B重新开启后,它就会变成B1的从节点。

不过需要注意,如果节点B和B1同时挂了,Redis集群就无法继续正确地提供服务了。

集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)

docker exec -it redis_1 /bin/bash

root@122f9de268cd:/data# redis-cli --cluster create 193.168.0.11:6379 193.168.0.12:6379 193.168.0.13:6379 193.168.0.14:6379 193.168.0.15:6379 193.168.0.16:6379 --cluster-replicas 1

在这里插入图片描述
容器中进入客户端

docker redis-cli -c

-c 进入集群,不加只是单节点

cluster info 查看集群信息
cluster nodes 查看集群节点

在这里插入图片描述
集群中当前在193.168.0.11这个容器中,是一个master
在这里插入图片描述

redis_1上添加数据,集群中所有节点都可以查到数据,数据由redis_2进行处理

在这里插入图片描述
从节点也是从redis_2上接受数据,而且从节点可以创建数据
在这里插入图片描述

SpringBoot打包

1、找个项目,点击package生成jar

在这里插入图片描述
2、创建Dockerfile文件

FROM java:8
#复制当前jar包为 app.jar
COPY *.jar /app.jar
#设置服务端口
CMD ["--server.port=8080"]
#暴露端口
EXPOSE 8080
#执行java -jar /app.jar执行jar包
ENTRYPOINT ["java","-jar","/app.jar"]

需要上传的是jar包和Dockerfile文件

在这里插入图片描述
3、生成镜像

docker build -t springboot-swagger .

在这里插入图片描述
4、测试

运行容器
docker run -d -p 8080:8080 --name myspringbootswagger springboot-swagger 

测试访问网络
curl localhost:8080

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值