Docker中部署Redis集群与部署微服务项目的详细过程

目录
  • 一、使用Docker部署的好处
  • 二、Docker 与 Kubernetes 对比
  • 三、Redis集群部署实战
  • 四、Spring Boot项目 打包镜像
  • ?小结

一、使用Docker部署的好处

Docker的好处在于:在不同实例上运行相同的容器

Docker的五大优点: 持续部署与测试多云服务平台支持环境标准化和版本控制隔离安全

二、Docker 与 Kubernetes 对比

Docker适用于较为小的应用,并发量不大的情况下、微服务为超过10个,建议适用Docker部署,这样也省资源、可减少开发成本。

K8S适用于大集群的情况,高并发,并且微服务超过了10个,同时性能也是非常好的,性能好的前提下,开发成本也增加了不少

三、Redis集群部署实战

下面部署如图所示三主三从的Redis集群

停掉所有的容器,删除全部记录

?

1

docker rm $(docker ps -a -q)

创建自定义网络redis

?

1

docker network create redis --subnet 172.38.0.0/16

通过脚本创建六个redis的基本信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

for port in $(seq 1 6); \

do \

mkdir -p /mydata/redis/node-${port}/conf

touch /mydata/redis/node-${port}/conf/redis.conf

cat << EOF >/mydata/redis/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 172.38.0.1${port}

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

启动6个redis容器,并进行数据挂载

?

1

2

3

4

5

6

7

8

# 通过脚本一次性启动

for port in $(seq 1 6); \

do

docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \

-v /mydata/redis/node-${port}/data:/data \

-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \

done

进入redis-1中设置创建集群

?

1

2

3

4

5

# 进入redis-1

docker exec -it redis-1 /bin/sh

# 创建集群

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13

:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

进入容器

?

1

2

3

4

redis-cli -c

# 查看详细信息

CLUSTER INFO

查看nodes

?

1

CLUSTER NODES

设置值

?

1

set k1 v1

我们可以看到,将值设置在了 13节点上,我们把该节点停止,再次获取值查看

?

1

2

# 新开窗口停止redis-3容器

docker stop redis -3

在原来窗口获取k1

?

1

2

# 需要重新进入再次获取

get k1

可以看到,值已经同步到了其它节点,主节点挂掉后,我们照样可以拿到值!

四、Spring Boot项目 打包镜像

创建一个SpringBoot项目

TestController

?

1

2

3

4

5

6

7

8

@RestController

public class TestController {

    @GetMapping("/hello")

    public String hello() {

        return "Hello World!!!";

    }

}

本地测试成功访问,然后编译项目为jar包

?

1

2

// 进入项目目录

mvn clean package

下载Docker镜像

编写Dockerfile

?

1

2

3

4

5

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

将jar包和Dockerfile上传至服务器

服务器文件

编译Dockerfile

?

1

docker build -t xiaowang .

测试访问

?

1

curl localhost:49153

成功上传镜像!

?小结

以上就是【Bug 终结者】对 Docker实战 – 部署Redis集群与部署微服务项目 的简单介绍,使用Docker部署我们的应用很方便,快捷,但是架构庞大的话,就不建议使用Docker了,可以采用我们的k8s集群部署,是当下最流行的技术!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14869.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openpnp - 用空调压缩机改真空泵

文章目录 openpnp - 用空调压缩机改真空泵概述笔记备注END openpnp - 用空调压缩机改真空泵 概述 原来设备用的真空泵是AP200C/V 这个商品标称是48DB的噪音, 实际用的时候, 噪音很大, 应该快70DB了, 放在屋子里很吵. 如果仅仅是太吵, 可能也忍了. 关键是这个真空泵有强干扰…

Elasticsearch【优化、案例】(八)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch集群_测试集群状态 Elasticsearch集群_故障应对&水平扩容 Elasticsearch优化_磁盘选择 Elasticsearch优化_分片策略 Elasticsearch优化_内存设置 Elasticsearch案例_需求说明 Elasticsearch案例_ES自动补全 Elasticsearch案例_创建索引 Elastic…

QT DAY3

完善文本编辑器 1.mainwindow.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBo…

【Web3】Web3Js高频Api

目录 Web3Js方法 初始化Web3实例 Web3Api 创建账号Api 获取余额Api 单位转换工具函数 Web3Js方法 web3.eth&#xff1a;用于与以太坊区块链和智能合约之间的交互。 web3.utils&#xff1a;包含一些辅助方法。 web3.shh&#xff1a;用于协议进行通信的P2P和广播。 web3…

Qt实现思维导图功能(五)

前文链接&#xff1a;Qt实现思维导图功能&#xff08;四&#xff09; 思维导图纵向分布模式&#xff1a;模式一 百度网盘体验地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1YNSBiFOUwnSSKvHsBvOT3g 提取码&#xff1a;ifyc动态演示效果 静态展示图片 前文BUG维…

Linux:PXE网络装机

要实现需要开启以下服务 dhcp --- 开机没有u盘或光盘的引导电脑会去寻找网络中的引导 tftp --- 用于引导系统 ftp&& http --- 制作yum仓库让引导的系统去ftp或者http上找rpm包 1.ftp&& http yum仓库搭建 Linux&#xff1a;YUM仓库服务_鲍海超-GNUBHC…

HTML 中的常用标签用法

目录 一、html页面基本组成 二、常用的标签 &#xff08;1&#xff09;div &#xff08;2&#xff09;p标签 &#xff08;3&#xff09;h1-h6 &#xff08;4&#xff09;b标签/strong &#xff08;5&#xff09;span &#xff08;6&#xff09;br与hr &#xff08;7&#…

【计算机组成与体系结构Ⅰ】实验4 存储器原理实验

一、实验目的 1&#xff1a;了解双端口静态存储器IDT7132的工作特性及使用方法。 2&#xff1a;了解半导体存储器如何读写。 二、实验总结 0&#xff1a;实验内容 双端口存储器RAM&#xff1a; 左端口的数据部分与数据总线DBUS7-DBUS0相联&#xff1b;右端口的数据引脚与指…

阿里云服务拆分部署

最近在工作中遇到需要将现网运行的服务拆分出一套&#xff0c;放置于本地机房&#xff0c;拆分服务运行有两种方案&#xff1a; 第一种是本地部署一个独立spring应用&#xff0c;业务上的要求是尽量隔离 第二种是采用阿里集群部署 采用第二种方案目前看是隔离度最高的

基于springboot+Redis的前后端分离项目之分布式锁(四)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 分布式锁 分布式锁1 、基本原理和实现方式对比2 、Redis分布式锁的实现核心思路3 、实现分布式锁版本一4 、Redis分布式锁误删情况…

硬盘或者U盘提示需要格式化的解决办法

插入硬盘之后提示&#xff1a; 使用驱动器 G:中的光盘之前需要将其格式化 是否要将其格式化? 如下图所示 顿时慌了啊&#xff0c;里面还有比较重要的东西呢&#xff0c;这一下子完蛋&#xff1f; 遇事找某宝&#xff0c;上面估计有这种技术服务。果然有这一类的技术服务&…

飞书接入机器人NODE开发自动回复

一、创建飞书应用 1.登录飞书开放平台 进入开发者后台 创建自建应用 2.添加应用能力 选择机器人添加 3.添加事件订阅并根据权限开通权限 此处只添加获取消息事件 4.配置应用服务端地址&#xff08;当事件触发 会触发设置的地址 并发送事件数据&#xff09;开启Encrypt Key 实…