1

我正在用netflix云栈开发一个spring引导应用程序。并将每个模块(微服务)部署在单独的码头容器中。结构如下:这是在多主机网络上部署springboot云netflix的正确方法吗?

  1. 尤里卡
  2. Zuul
  3. 在微服务
  4. MySQL的
  5. Angular4 UI
  6. Keycloak业务逻辑 - 用户管理和认证
  7. ELK - 日志维护
  8. Hystrix
  9. 基普金

好了,所以面临着很多的问题,并在谷歌搜索上我已经部署在下列方式此事花一大堆的网络带宽后,我需要知道的是,如果是做正确的方式?

这里的限制是我已经提供了2个主机来测试这个配置,并且进一步的行动计划还没有。

所以这里是我所做的:我还没有使用我提到的完整堆栈。

服务器1

  1. 尤里卡

  2. Zuul

  3. ELK

服务器2

  1. Keycloak

  2. 业务逻辑微服务

  3. MySQL的

  4. Anguar4 UI

尚未配置和使用猬和基普金呢。 因此,我在Eureka配置了所有需要在Eureka上注册的微服务的Server1 IP:PORT。 Zuul也同样如此(考虑到Eureka的IP:PORT)。

在Angular4 UI中,我给出了Zuul部署的URL:PORT,因为所有的服务都将通过Zuul调用。

这个我明白是正确的,因为服务需要知道尤里卡在哪里,休息可以通过尤里卡管理。

现在我的关键问题是,因为MySQL,ELK不能在Eureka上注册,那么在任何需要的地方给予IP:PORT和MySQL都是正确的。

与ELK的配置一样,ELK我的要求是所有的日志都位于这个共同的地方我已经使用了docker,卷装,但是我不知道如何在多主机环境下实现这个功能,我只能让docker把日志放在外部卷上,然后可能通过URL访问ELK,还没有测试过这个配置。

如果是这样的话,那么这个配置不是那么独立,如果我们认为它可以自己管理呢?

我已经配置我的码头组成使用“network_mode”:主机,因此主机可以完成主机码头通信。

所有我需要知道的是,我的配置/体系结构是否适用于多主机环境,以及将来适用于云环境? 如果不是,请亲切指导我改正路径。

谢谢! p.s.请原谅我的英语和语法,我已经尽最大努力让自己的知识变得可以理解,如果您需要更多的意见,请指出并提出问题。

回答

1

这种问题实际上超出了Stackoverflow的范围,但它确实听起来像你还没有明白你的基础设施的部分。

Netflix堆栈(Eureka/Zuul等)以及诸如Zipkin,Hystrix和整个ELK堆栈之类的东西只有在多站点中有很多大型服务的部署时才有意义,许多主机通过“手“成为一个真正的问题,在这个架构中,有很多移动部件会导致某些事情可能中断,并且您的系统仍然需要继续运行,例如主机断开连接或数据库节点死亡。

有了2个主机和几个服务,引入所有这些复杂性是没有意义的,它只会压倒你并且迷惑你(它已经有了)。如果你的两个主机中的一个死了,即使你使用Eureka和Zuul,它也不会救你。整个系统将会关闭。

扔掉所有最新的buzzword库(你不是Netflix),只是想通过一个简单的体系结构,你可以在另一个主机上的一个主机和数据库上运行你的服务(不需要Eureka或Zuul)。考虑日志的共享位置,并组织一个好的,易于使用的文件夹结构来存储它们,以便使用简单的命令行工具轻松查找和搜索,这些工具比Kibana(可怕地查看日志)要好得多。

保持简单,只有在您感觉难以管理时才会引入新件。

+0

其实这个项目会变得很大,目前我处于学习阶段,只需要知道如何正确处理这个堆栈,我就有一个Me + 3团队正在为此工作。我们计划在其中引入Kubernetes,但这是第二步,对于部署流水线,我们将使用Jenkins,因此计划了很多事情,但我希望逐步完成,并通过实际操作来了解每个层。 –

+0

我的建议仍然存在。保持简单直到你需要引入额外的复杂性。以上所有这些东西都添加了。 – Strelok

相关问题