JHipster生成微服务架构的应用栈(五)- 容器编排示例

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里)应用栈名称:appstack认证微服务: uaa业务微服务:microservice1网关微服务:gateway实体名:role主机IP:192.168.220.1201 前提条件1.1 已经生成微服务架构的应用栈请参考这个系列的前4篇文章。

本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。
环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里
应用栈名称:appstack
认证微服务: uaa
业务微服务:microservice1
网关微服务:gateway
实体名:role
主机IP:192.168.220.120

1 前提条件

1.1 已经生成微服务架构的应用栈

请参考这个系列的前4篇文章。

1.2 安装Docker Compose

推荐版本:1.21.2
完整安装说明,请参考这里

1.3 创建一个编排目录

在命令行,进入appstack目录,创建一个子目录docker-compose,现在整个应用栈的目录结构是这样的:

-- appstack
  |-- uaa
  |-- microservice1
  |-- gateway
  |-- docker-compose

1.4 公共镜像

预先下载openjdk:8-jre-alpine容器镜像,能提高后续工作的效率。

2 构建微服务的镜像

2.1 构建所有微服务的镜像

a, 构建uaa镜像

进入uaa目录,输入命令后回车:

$ cd uaa/
$ mvn –Pdev clean package dockerfile:build
b, 构建microservice1镜像

进入microservice1目录,输入命令后回车:

$ cd microservice1/
$ mvn –Pdev clean package dockerfile:build
c, 构建gateway镜像

进入gateway目录,输入命令后回车:

$ cd gateway/
$ mvn –Pdev clean package dockerfile:build

构建成功后,可以通过docker命令查看镜像列表:

$ docker images

img_63799cb90608614fb7b0ab49e09755be.png

3 生成编排文件

进入docker-compose目录,输入命令后回车:

$ cd docker-compose/
$ jhipster docker-compose

命令行输出jhipster:docker-compose命令启动信息

img_5e9a93e4b65ea49ac42cf48e513ce668.png

现在开始问答环节

3.1 Which type of application would you like to deploy?

选择想要部署的应用类型
这是一个单选题,有2个选项,使用上下键切换选项。
因为要部署的是一个微服务架构应用栈,这里选择Microservice application

img_9fb88bed7ed07ab3f87ea4358d2fa9ae.png

单击回车继续。

3.2 Which type of gateway would you like to use?

选择网关的类型
这是一个单选题,有2个选项,使用上下键切换选项。
这里选择JHipster gateway based on Netflix Zuul

img_48b8decc357b9c77feb220ce124a273c.png

单击回车继续。

3.3 Enter the root directory where your gateway(s) and microservices are located

输入需要部署的网关和业务微服务的位置
这是一个相对于docker-compose的相对路径,默认路径是../,这也是之前生成的网关和业务微服务以及认证微服务的位置。

img_6ccc0390179896e6acc1c8dd4e519e0f.png

单击回车继续。

3.4 Which applications do you want to include in your configuration?

选择需要加入编排配置文件的微服务
这是一个多选题,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
这里选择全部的微服务。

img_d9e2e86fdfdc6e175b6d8bf8f98b5c90.png

单击回车继续。

3.5 Do you want to setup monitoring for your applications ?

选择是否需要启动监控组件
这是一个单选题,有3个选项,使用上下键切换选项。
简单起见,选择No

img_c386b6fd791c36e1c3db3d8e8ab37490.png

单击回车继续。

3.6 Enter the admin password used to secure the JHipster Registry

输入JHipster Registry的admin账号的密码
默认值是admin,这也是之前启动的JHipster Registry的密码。

img_0b81fb0dc7394646cc809cf3169cf993.png

单击回车继续。

问答结束,开始生成工程代码

这个过程通常需要1-2分钟。

img_9ca414da0e9ed2015f76b75edfe2b97b.png

完成后,在目录下看到所有生成的文件。

修改配置文件

打开docker-compose.yml文件

$ vi docker-compose
加入数据库密码和端口映射的配置
gateway-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32800:3306                          # 加入端口映射配置
......
......
microservice1-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32700:3306                          # 加入端口映射配置
......
......
uaa-mysql:
    image: mysql:5
    environment:
        - MYSQL_ROOT_PASSWORD=my-secret-pw    # 加入数据库密码配置
    ports:
        - 32900:3306                          # 加入端口映射配置
把Profile配置中的prod改成dev
gateway-app:
    image: gateway
    environment:
        - SPRING_PROFILES_ACTIVE=dev,swagger    # 如果这里是prod,改成dev

检查所有镜像的Tag是否和本地的镜像一致

特别是mysql和jhipster-registry这2个镜像的Tag,这样避免启动容器的时候,临时去下载镜像。

4 通过容器编排启动微服务应用栈

进入docker-compose目录,输入命令后回车:

$ docker-compose up -d

命令行输出所有微服务容器启动信息

img_c2743894bd71b69a0a491b742f11d296.png

所有容器和容器内的微服务启动,需要大概3-5分钟。
启动完成后,就可以访问JHipster Registry和gateway的Web UI,默认用户名和密码都是admin

http://192.168.220.120:8761
http://192.168.220.120:8080

其它docker-compose命令

$ docker-compose scale microservice1=5     # 将microservice1的容器实例扩展到5个
$ docker-compose stop                      # 停止所有编排中的容器
$ docker-compose down                      # 停止并且删除所有编排中的容器

系列文章

JHipster生成微服务架构的应用栈(一)- 准备工作
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
JHipster生成微服务架构的应用栈(五)- 容器编排示例




你现在的气质里,藏着你走过的路,读过的书,爱过的人。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
Cloud Native 物联网 持续交付
云原生架构:构建现代应用的基石
随着数字化转型的深入,企业对软件开发的速度和灵活性提出了更高的要求。云原生架构作为一种新兴的技术范式,以其独特的优势,正在成为现代应用开发的主流选择。本文将探讨云原生架构的核心概念、关键技术以及实践应用,帮助读者理解如何利用云原生技术构建高效、可扩展的现代应用。
|
1天前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。
|
12天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:打造弹性可扩展的应用
【9月更文挑战第29天】在云计算的浪潮中,云原生架构成为企业追求高效、灵活和可靠服务的关键。本文将深入解析云原生的概念,探讨如何利用容器化、微服务和持续集成/持续部署(CI/CD)等技术构建现代化应用。我们将通过一个简易的代码示例,展示如何在Kubernetes集群上部署一个基于Node.js的应用,从而揭示云原生技术的强大能力和潜在价值。
30 6
|
13天前
|
监控 Cloud Native 持续交付
云原生架构:构建弹性与高效的现代应用##
随着云计算技术的不断成熟,云原生架构逐渐成为企业技术转型的重要方向。本文将深入探讨云原生的核心概念、主要技术和典型应用场景,以及如何通过云原生架构实现高可用性、弹性扩展和快速迭代,助力企业在数字化转型中保持竞争优势。 ##
38 6
|
14天前
|
运维 Cloud Native 持续交付
云原生架构:构建未来应用的基石
本文将深入探讨云原生架构的核心概念、主要优势以及实际应用案例,揭示其在现代IT领域的重要性。通过详细解析云原生技术的各个方面,帮助读者更好地理解和应用这一前沿技术。
|
14天前
|
前端开发 测试技术 API
探索微前端架构:构建现代化的前端应用
在软件开发中,传统单体架构已难以满足快速迭代需求,微前端架构应运而生。它将前端应用拆分成多个小型、独立的服务,每个服务均可独立开发、测试和部署。本文介绍微前端架构的概念与优势,并指导如何实施。微前端架构具备自治性、技术多样性和共享核心的特点,能够加速开发、提高可维护性,并支持灵活部署策略。实施步骤包括定义服务边界、选择架构模式、建立共享核心、配置跨服务通信及实现独立部署。尽管面临服务耦合、状态同步等挑战,合理规划仍可有效应对。
|
存储 设计模式 运维
YAML 管理 Kubernetes 应用
YAML 管理 Kubernetes 应用
316 1
|
存储 设计模式 运维
如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
|
Kubernetes Shell 开发工具
使用 Kustomize 帮你管理 kubernetes 应用(二): Kustomize 的使用方法
本篇为系列文章第二篇,手把手教你使用 Kustomize 的两种方式。
4551 0
|
Kubernetes 容器
使用 Kustomize 帮你管理 kubernetes 应用(一):什么是 Kustomize ?
本篇为系列文章第一篇,介绍我对 Kustomize 的了解过程以及 Kustomize 是什么,为什么它能解决我的燃眉之急。
4153 0

相关产品

  • 容器服务Kubernetes版