JHipster Registry
来源:JHipster |
时间:2018-11-04
|
|

概述

jhipster registry是由jhipster团队提供的一个应用,它是基于Apache2-licensed协议开源的,它的代码已托管至github,jhipster/jhipster-registry

JHipster Registry有三个主要用途:

  • 它是一个用于服务发现的Eureka服务,这就是为何jhipster能处理路由、负载均衡和服务伸缩

  • 它是一个spring cloud config server,提供了所有应用的运行时配置

  • 它是一个管理服务,在仪表盘可以监控和管理应用

所有的这些功能都被打包在一个基于angular的用户界面应用中。

这里写图片描述

安装

spring profiles

JHipster registry使用了jhipster通常使用的devprod的配置,以及使用了来自于 spring cloud config的标准nativegit配置

结果:

  • 使用dev配置运行JHipster Registry的时候,它将会使用devnative配置文件,native将会从文件系统加载spring cloud的配置,具体的文件位于运行目录的central-config

  • 使用prod配置运行JHipster Registry的时候,将会使用prodgit配置文件。gitprofile将会git仓库加载spring cloud配置,默认的仓库是https://github.com/jhipster/jhipster-registry-sample-config。在真实使用的时候,这个地址应该被修改为正确的地址,可以通过重新配置src/main/resources/config/bootstrap-prod.yml或者spring.cloud.config.server.git.uri属性

一旦JHipster Registry运行,你可以在Configuration > cloud config菜单中检查他们。请注意,如果你不能登录,这可能是由于你没配置好导致JWT的签名不对

使用war包

JHipster Registry是一个可执行的war包.

下载war包后,就像是通常运行JHipster应用程序一样,选择你想使用的配置。例如,运行Registry且Spring cloud config配置存储在cetral-config文件夹中:

./jhipster-registry-<version>.war --security.user.password=admin --jhipster.security.authentication.jwt.secret=secret-key --spring.cloud.config.server.native.search-locations=file:./central-config

注意在启动Registry的时候提供一个JWT的密钥是比较重要的事情,你可以通过环境变量JHIPSTER_SECURITY_AUTHENTICATION_JWT_SECRET或者使用类似于上边的参数的方式提供。另一种可能的方法是在application.yml文件中设置。

类似的,在以prod启动Registry的时候,你可以使用下边的命令:

./jhipster-registry-<version>.war --spring.profiles.active=prod --security.user.password=admin --jhipster.security.authentication.jwt.secret=secret-key --spring.cloud.config.server.git.uri=https://github.com/jhipster/jhipster-registry-sample-config

通过源码构建

JHipster Registry的源码可以从git上获取(克隆、引用或者下载).此应用也是通过jhipster生成器生成的。你可以用使用你喜欢的方式运行:

  • 在开发环境下使用./mvnw运行(作为一个Java服务)和yarn start(作为前端)他们默认使用dev配置。可以通过http://127.0.0.1:8761/访问

  • 使用./mvnw -Pprod package打包至正式环境,通常生成一个可执行的war。你也可以通过使用devprod配置来运行:./jhipster-registry-<version>.war --spring.profiles.active=prod

注意使用native配置,你需要由一个central-config目录。因此如果你已./jhipster-registry-<version>.war --spring.profiles.active=dev方式运行,你需要提供这个目录

使用Docker

如果你更喜欢通过docker镜像运行JHipster Registry,那么在docker hub上有一个可用镜像.存在于每个微服务的src/main/docker目录下的docker-compose文件可以很轻易使其运行与docker上:

  • 运行命令docker-compose -f src/main/docker/jhipster-registry.yml up启动JHipster registry。它将会暴露端口为8761,如果docker在你的主机上,可以访问http://127.0.0.1:8761/

运行在云上

在云上托管一个实例是非常容易的。在生产中是强制的,但在开发中也是比较有用的(你没必要在你的笔记本上运行),后续在生产环境使用微服务章节详细解释如何部署在云上.

使用Eureka进行服务发现

JHipster Registry是一个Eureka服务,它提供了所有应用的服务发现

  • 这是一种非常使用的微服务架构:网关可以知道哪些微服务可用,哪些实例已启动

  • 对于所有应用包括综合应用,这也是Hazelcast分布式自动伸缩的方式

使用Spring Cloud Config进行应用配置

JHipster Registry是一个Spring Config Server. 当应用程序启动时首先会连接Jhipster Registry获取他们的配置.对于网关和微服务都是这样的

这个配置是一个spring-boot的配置,类似于jhipster中的application-*.yml文件,但是这些是集中存储的,因此更易于管理

当启动的时候,网关和微服务应用将会查询Registry的配置服务,使用在Registry定义的属性覆盖本地的属性

有两种配置源可用:

  • native配置,一般被用于开发环境,使用本地文件系统

  • git配置,在生产环境默认使用,他们将会存储在git服务。允许使用git工具进行打标签、分支或者回滚配置.

为了集中管理你的配置,你只需在你的配置源中增加appname-profile.yml文件。例如,添加一个gateway-prod.yml文件,将会只为gateway服务通过prod配置启动的时候设置这些属性。此外,application[-dev|prod].yml文件中定义的属性将被设置到所有的服务上.

使用spring-boot网关也是可配置的,他也能使用SpringConfigServer管理。例如,你的分支v1的应用app-v1映射在/app1的url上,分支v2的应用app1-v2也映射在/app1上,这样就是一种很好的升级方式,而且不需要停机升级。

加密配置文件中的值

JHipster Registry有一个configuration > encryption页面允许容易的加密和解密配置文件中的值。

为了加密配置文件中的值你需要:

  • 下载JCE并按照说明安装它(如果你使用OracleJDK这是必须的)

  • 在bootstrap.yml设置encrypt.key或者使用ENCRYPT_KEY环境变量

如果所有的设置都是正确的,你可以使用configuration > encryption页面,你也可以POST你想要处理的文本置于body中请求/config/encrypt/config/decrypt

例如: curl localhost:8761/config/encrypt -d mypassword

密码文本必须放在*.yml中,password= '{cipher}myciphertextafterencryotion'将发送到客户端之前将被解密。这样你的git或者本地配置文件中就没有明文.

更多的细节,参照spring cloud config的加解密

管理界面

JHipster registry提供了一个管理各种类型应用的面板。当应用注册到eureka服务不久,就会在面板中看到。

为了读取应用的敏感信息,JHipster Registry将会使用JWT令牌(这就是JHipster Registry使用JWT的原因).请求签发的JWT令牌对于应用程序和注册中心是相同的:JHipster Registry通过spring cloud config来配置应用程序,这应该是开箱即用的,因为它向所有应用程序发送相同的密钥。

指标面板

指标面板使用Dropwizard指标对每个应用性能进行详细展示,这些指标有:

  • JVM相关

  • HTTP请求

  • Spring Beans的方法使用情况(使用@Timed注解)

  • 数据库连接池

点击JVM线程指标后边的眼睛图标,可以查看应用的运行栈,这对于查找阻塞线程是比较有用的

健康面板

健康面板使用springboot-actuator的接口获取应用的各部分健康信息。spring-boot-actuator提供了很多开心急用的方法,也很容易添加应用指定的健康检查。

配置面板

配置面板使用spring-boot-actuator的配置接口获取当前应用的配置视图

日志面板

日志面板允许在运行的时候管理Logbak的配置。改变package的日志级别简单到店家一个按钮就可以做到,这对于生成环境和开发环境提供了很大的便利性

JHipster Registry安全

JHipster Registry默认是安全的。你可以使用admin/admin像登录普通服务一样登录Registry.

应用也可以使用admin用户通过HTTP Basic的认证方式连接到Registry。如果你的应用不能读取注册中心的数据,并且你看到了”401 authentication error”信息,那是因为你在应用的配置缺失了.

为了提高JHipster Registry的安全:

  • 你必须修改默认的”admin”的密码。这个密码使用spring-boot的标准属性security.user.password设置,因此你可以采用spring-boot的机制设置它:你可以修改application-*.yml文件或者添加SECURITY_USER_PASSWORD环境变量

  • 由于你的应用通过HTTP连接到注册中心,因此确保连接通道的安全是非常重要的。很多方法都可以做到,最简单的方法是使用HTTPS


提交
查看更多评论
没有更多评论