在多主机networking上部署springboot cloud netflix是否正确?

我正在用netflix云栈开发一个spring启动应用程序。 并将每个模块(微服务)部署在不同的docker容器中。 结构如下:

  1. 尤里卡
  2. Zuul
  3. 微服务中的业务逻辑
  4. MySQL的
  5. Angular4用户界面
  6. Keycloak – 用户pipe理和authentication
  7. ELK – 用于日志维护
  8. 豪猪
  9. 基普金

好吧,在面对很多问题之后,花费了大量的networking带宽在我以这种方式部署的问题上,我需要知道的是,如果这是正确的方法呢?

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

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

服务器1

  1. 尤里卡

  2. Zuul

  3. 麋鹿

Server2上

  1. Keycloak

  2. 业务逻辑微服务

  3. MySQL的

  4. Anguar4用户界面

尚未configuration和使用Hystrix和Zipkin。 所以我已经给Eurekaconfiguration了所有需要在Eureka上注册的微服务的Server1的IP:PORT。 Zuul也是如此(尤里卡的IP:PORT)。

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

我知道这是正确的,因为服务需要知道尤里卡在哪里,rest可以通过尤里卡pipe理。

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

ELK的configuration也是如此,我的要求是所有的日志都位于这个我已经使用docker,卷装但是我不知道如何在多主机环境下完成这个工作,我只能使docker把外部卷的日志,然后可能通过URL访问ELK,尚未testing此configuration。

如果是的话,那么这个configuration不是那么独立,如果我们认为它能够自己pipe理呢?

我已经configuration我的docker组成使用“network_mode”:主机,以便主机docker通信可以完成。

再次,我需要知道的是,我的configuration/体系结构是否适用于多主机环境,以及将来适用于云环境? 如果不是,请请引导我正确的path。

谢谢! 请原谅我的英语和语法,我已经尽我所能了解情况,如果您需要更多的意见,请指出并提出问题。

这种问题实际上超出了Stackoverflow的范围,但是听起来好像你还没有理解你的基础设施。

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

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

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

保持简单,只有在感觉到难以pipe理时才会引入新的内容。