当前位置: 首页 > news >正文

Linux中Docker Swarm实践

一、部署前后分离

  • 使用你自己的自定义镜像

  • 部署多个副本

  • 所有副本使用相同的配置和逻辑

  • Nginx 做反向代理统一入口

  • 外部访问形式如:http://your-domain/api/xxx

1.1 建立私库

镜像已构建并推送到可访问的镜像仓库

启动 Docker Registry 容器

docker run -d -p 5000:5000 --restart=always --name registry registry:2

这会在本地启动一个私有的 Docker Registry,并监听 5000 端口。

配置 HTTPS 或者信任不安全的 Registry,可以通过以下方式让 Docker 客户端信任这个不安全的 Registry:

每个机器都要编辑 /etc/docker/daemon.json 文件(如果没有则创建),添加如下内容:

{"insecure-registries" : ["【ip】:5000"]
}

每个机器都要,然后重启 Docker 服务:

sudo systemctl restart docker

管理机上将 my-java 并推送镜像到 Docker Registry

docker tag my-java [ip]:5000/my-backend:1.0

管理机将镜像上传到 Docker Registry

docker push [ip]:5000/my-backend:1.0

1.2 下载镜像

在其他工作机上下载镜像

docker pull [镜像私库ip]:5000/my-backend:1.0

1.3 创建覆盖 network

这个要在主节点上创建

docker network create --driver overlay --attachable app_network

1.4 部署服务

主节点上部署

docker service create \--name backend-api \--network app_network \--replicas 3 \192.168.107.157:5000/my-backend:1.0

创建 Nginx 配置文件

mkdir /testcd /testvim default.confupstream backend_api {server backend-api:8081;
}server {listen 80;server_name localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ =404;}location ~ ^/api/(.*)$ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://backend_api;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_redirect off;}
}

注意:

backend-api 是你上面创建的服务名称

请求 /api/xxx 会被转发到任意一个 backend-api 的副本上

1.5 启动 Nginx 服务

manager添加标签并进行节点更新

docker node update --label-add role=lb manager注释:
标签role
值为lb

根据标签指定部署

docker service create \--name my-nginx \--network app_network \--publish 80:80 \--mount type=bind,source=/test/default.conf,target=/etc/nginx/conf.d/default.conf \--replicas 1 \--constraint 'node.labels.role == lb' \nginx:latest注释:
constraint   指定部署到标签值为lb的机器
replicas     运行一台机器 
mount        运行指定文件

测试访问

curl http://localhost/api/getMsg

来访问你的后端服务。请求会由 Nginx 转发到任意一个 backend-api 副本上,实现负载均衡。

1.6 更新服务

如果你更新了镜像,可以这样滚动更新:

docker service update \--image 【镜像名】:【镜像版本】 \--update-parallelism 2 \--update-delay 10s \服务名注释:--update-parallelism 2      一次更新两个服务
--update-delay 10s          更新一次休息10秒

如果后台压力过大可以多增加几个后台服务

-- 将服务增加10个
docker service update \--replicas 10 \服务名
http://www.dtcms.com/a/320075.html

相关文章:

  • 12-netty基础-手写rpc-编解码-04
  • ubuntu 2024 安装拼音输入法
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • Linux综合练习2
  • 电气设备与互感器全解析
  • 智能制造网络质量保障:德承 DX-1200多网口工控机在windows系统下的网络性能测试指南
  • 操作系统与并发底层原理多道技术
  • docker容器导出为镜像
  • 深度学习入门Day7:Transformer架构原理与实战全解析
  • 亚马逊广告运营:有什么好用的辅助工具
  • Redis配置、测试及分布式缓存实现
  • Android 之 Jetpack - Paging
  • 《C语言》函数练习题--2
  • ElasticSearch相关术语介绍
  • 使用 decimal 包解决 go float 浮点数运算失真
  • 小鸡模拟器安卓版:经典街机游戏的移动体验
  • 利用Axure与JavaScript打造动态图片上传原型:设计案例分享
  • spring-cglib代理-初探01
  • 深度学习-卷积神经网络CNN-1×1卷积层
  • Flink-1.19.0源码详解9-ExecutionGraph生成-后篇
  • UE5多人MOBA+GAS 39、制作角色上半身UI
  • 字符串匹配(重点解析KMP算法)
  • 6 大模块!重构物业运营方式
  • 跨境电商增长突围:多维变局下的战略重构与技术赋能
  • 数智先锋 | Bonree ONE 赋能通威股份有限公司提升全栈可观测性能力
  • 深入解析NVIDIA Nsight工具套件:原理、功能与实战指南
  • 房产证识别在房产行业的技术实现及应用原理
  • Python Socket 脚本深度解析与开发指南
  • 扣扣号码展示网站源码_号码售卖展示系统源码 全开源 带后台(源码下载)
  • 5、倒计时翻页效果