JHipster注册表 The JHipster Registry
概观 Overview
JHipster注册表是由JHipster团队提供的运行时应用程序。像JHipster生成器一样,它是一个开放源代码,Apache 2许可的应用程序,其源代码可以在 jhipster/jhipster-registry的JHipster组织下的GitHub上使用。
JHipster注册表有三个主要目的:
- 它是一个Eureka服务器,用作应用程序的发现服务器。这就是JHipster如何处理所有应用程序的路由,负载平衡和可扩展性。
- 它是一个Spring Cloud Config服务器,为所有应用程序提供运行时配置。
- 它是一个管理服务器,具有监视和管理应用程序的仪表板。
所有这些功能都被打包成一个方便的应用程序与现代的基于Angular的用户界面。
概要 Summary
- Installation
- Service discovery with Eureka
- Application configuration with Spring Cloud Config
- Administration dashboards
- Securing the JHipster Registry
安装 Installation
Spring profiles
JHipster注册表使用通常的JHipster 的 dev
和 prod
Spring配置文件, 以及Spring Cloud Config中的标准 native
和 git
配置文件。
结果是:
- 使用
dev
配置文件将运行使用dev
和native
配置文件的 JHipster Registry。native
配置文件将从文件中加载Spring Cloud配置,并从中寻找central-config
目录,这个目录是相对于运行目录而言的。 - 使用
prod
配置文件将运行使用prod
和git
配置文件的 JHipster Registry。git
配置文件将从Git仓库中加载Spring Cloud配置,默认的配置是https://github.com/jhipster/jhipster-registry-sample-config。在现实世界的使用中,这个仓库地址需要改变,一种是通过src/main/resources/config/bootstrap-prod.yml
文件从新配置,另一种通过Spirng 属性spring.cloud.config.server.git.uri
来从新配置。
一旦JHipster注册表运行,您可以在 Configuration > Cloud Config
菜单中检查其配置。请注意,如果您无法登录,可能是因为JWT签名密钥未正确设置,这表示您的配置不正确。
使用预打包的WAR文件 Using the pre-packaged WAR file
JHipster注册表作为可执行WAR文件在我们的 Releases page上可用。
下载WAR文件,并将其作为通常的JHipster应用程序运行,使用要使用的配置文件(请参阅上一节有关配置文件)。例如:
./jhipster-registry-3.1.0.war --spring.profiles.active=prod --spring.cloud.config.server.git.uri=https://github.com/jhipster/jhipster-registry-sample-config
从源头建造 Building from source
JHipster注册表可以从 jhipster/jhipster-registry. 直接克隆/分支/下载。由于JHipster注册表也是JHipster生成的应用程序,您可以像任何其他JHipster应用程序一样运行它:
- run it in development with
./mvnw
(for the Java server) andyarn start
(for managing the front-end), it will use by default thedev
profile and it will be available at http://127.0.0.1:8761/. - use
./mvnw -Pprod package
to package it in production, and generate the usual JHipster executable WAR file. You can then run the WAR file using thedev
orprod
Spring profile, for example:./jhipster-registry-3.1.0.war --spring.profiles.active=prod
请注意,要使用 native
配置文件,您需要具有 central-config
配置的目录,因此如果运行 ./jhipster-registry-3.1.0.war --spring.profiles.active=dev
,则需要设置该目录。
使用Docker Using Docker
如果您希望从Docker映像运行JHipster注册表,则可以在 jhipster/jhipster-registry中找到Docker镜像。这个镜像已经为每个微服务提前做好了配置:
- run
docker-compose -f src/main/docker/jhipster-registry.yml up
to start the JHipster Registry. It will be available on port8761
of your Docker host, so if it runs on your machine it should be at http://127.0.0.1:8761/.
有关使用Docker Compose使用JHipster注册表的更多信息,请阅读 Docker Compose documentation 。
在云中运行 Running in the cloud
在云中托管JHipster注册表实例很容易。这在生产中是必须的,但这在开发中也是有用的(没有必要在笔记本电脑上运行它)
请阅读 the "microservices in production" documentation 了解如何将JHipster注册表部署到Cloud Foundry或Heroku。
服务发现 Service discovery with Eureka
JHipster注册表是一个 Netflix Eureka 服务, 为所有应用程序提供服务发现。
- 这对于微服务架构非常有用:这是网关如何知道哪些微服务可用,以及哪些实例是up
- 对于所有应用程序, 包括包括整体, Hazelcast分布式缓存可以自动扩展,请参阅 the Hazelcast cache documentation
使用Spring Cloud Config进行应用程序配置 Application configuration with Spring Cloud Config
JHipster注册表是一个 Spring Config Server: 当应用程序启动时,它们将首先连接到JHipster注册表以获取其配置。网关和微服务都是如此.
此配置是一个Spring引导配置, 就像JHipster application-*.yml
文件中的一样, 但是它被存储在一个中央服务器中,因此它更容易管理。.
启动时,您的网关和微服务应用程序将查询注册表的配置服务器并覆盖其中定义的本地属性。
有两种配置源可用:
- A
native
configuration, 默认情况下在开发中使用 (使用JHipsterdev
配置文件),并使用本地文件系统. - A
Git
configuration, 默认情况下在生产中使用 (使用JHipsterprod
配置文件), 并将配置存储在Git服务器中。这允许使用通常的Git工具来标记,分支或回滚配置,这在本例中非常强大。
为了管理集中配置,你只需要在你的配置源中添加appname-profile.yml
文件,appname 和 profile 对应于您要配置的服务的应用程序的名称和当前配置文件;例如:在 gateway-prod.yml
配置文件中添加属性将仅为使用prod配置文件启动的名为gateway的应用程序设置这些属性。此外,如果在application[-dev|prod].yml
中都定义了属性将为您的所有应用程序设置。
由于Gateway路由使用Spring Boot进行配置,因此也可以使用Spring Config Server进行管理, ,例如,您可以将v1
分支的应用程序 app1-v1
映射到/app1
URL中,将v2
分支的应用程序 app1-v2
映射到/app1
URL中。这是升级微服务而不会为终端用户造成任何停机的好办法。
使用加密配置值 Using encrypted configuration values
JHipster注册表具有一个特定 configuration > encryption
页面,可以轻松地对配置值进行加密和解密。
要加密配置值(例如,数据库密码),您需要:
- 下载 JCE 并按照下载的文件中的说明进行安装。
- 设置
encrypt.key
在bootstrap.yml
(不是application.yml
) 文件中,或用ENCRYPT_KEY
对称密钥密码使用环境变量。
如果一切安装正确,您应该能够使用特定的 configuration > encryption
页面, 并且能够向 /config/encrypt
和 /config/decrypt
发送带有你想处理的文本的POST请求,文本内容放在请求的body
中。
例如: curl localhost:8761/config/encrypt -d mypassword
这个密文必须被放在*.yml
配置文件中,以这个形式password= '{cipher}myciphertextafterencryotion'
;在被发送到客户端之前,它将会被配置服务器进行解密。这样,您的配置文件(存储在Git中或“本地”存储在文件系统上)不具有纯文本值。
有关更多信息,请参阅Spring Cloud Config的 加密和解密文档 Encryption and Decryption documentation.
管理仪表板 Administration dashboards
JHipster注册表提供管理仪表板,用于所有应用程序类型。一旦应用程序在Eureka服务器上注册,它将在仪表板中可用。
为了访问应用程序的敏感信息,JHipster注册表将使用JWT令牌(这就是为什么JHipster注册表仅适用于使用JWT的应用程序)。用于签署请求的JWT密钥对于应用程序和JHipster注册表应该是相同的: 默认情况下,JHipster注册表通过Spring Cloud Config配置应用程序,这应该是开箱即用的, 因为它将发送同样的Key给所有的应用程序。
指标仪表板 The metrics dashboard
指标仪表板使用Dropwizard指标给出应用程序性能的详细视图
它给出了以下指标(metrics):
- JVM
- HTTP请求
- Spring Bean中使用的方法(使用
@Timed
注释) - 数据库连接池
通过单击JVM线程度量旁边的眼睛,您将获得正在运行的应用程序的堆栈跟踪,这对于查找被阻止的线程非常有用。
健康仪表板 The health dashboard
健康仪表板使用Spring Boot Actuator的健康端点来为应用程序的各个部分提供健康信息。Spring Boot Actuator提供了开箱即用的许多健康检查,也很容易添加应用程序特定的健康检查。
配置仪表板 The configuration dashboard
配置仪表板使用Spring Boot Actuator的配置端点来全面了解当前应用程序的Spring配置。
日志信息板 The logs dashboard
日志信息板允许在运行时管理正在运行的应用程序的Logback配置。更改Java包的日志级别就像单击按钮一样简单,这在开发和生产中都非常方便。
保护JHipster注册表 Securing the JHipster Registry
JHipster注册表默认保护。您可以使用通常的JHipster应用程序中使用的通常“admin / admin”登录名和密码进行登录。
应用程序也使用相同的“admin”用户连接到JHipster注册表,但使用HTTP基本身份验证。因此,如果您的微服务器无法访问注册表,并且看到一些“401身份验证错误”消息,那是因为您错误地配置了这些应用程序。
为了保护您的JHipster注册表:
- 您必须更改默认的“admin”密码。该密码是使用标准的Spring Boot属性设置的
security.user.password
, 因此您可以使用通常的Spring Boot机制来修改它:您可以修改项目的application-*.yml
文件, 或添加一个SECURITY_USER_PASSWORD
环境变量. Docker Compose sub-generator 就是使用的环境变量方法。 - 当您的应用程序将使用HTTP连接到注册表时,保护该连接通道非常重要。有很多方法可以实现,最简单的方法可能是使用HTTPS。