在多主机networking上部署springboot cloud netflix是否正确?
我正在用netflix云栈开发一个spring启动应用程序。 并将每个模块(微服务)部署在不同的docker容器中。 结构如下:
- 尤里卡
- Zuul
- 微服务中的业务逻辑
- MySQL的
- Angular4用户界面
- Keycloak – 用户pipe理和authentication
- ELK – 用于日志维护
- 豪猪
- 基普金
好吧,在面对很多问题之后,花费了大量的networking带宽在我以这种方式部署的问题上,我需要知道的是,如果这是正确的方法呢?
这里的限制是我已经提供了2个主机来testing这个configuration,并且进一步的行动计划还没有。
所以这里是我所做的:我还没有使用我提到的完整堆栈。
服务器1
-
尤里卡
-
Zuul
-
麋鹿
Server2上
-
Keycloak
-
业务逻辑微服务
-
MySQL的
-
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理时才会引入新的内容。