我正在使用netflix云堆开发一个spring boot应用程序。并将每个模块(微服务)部署在单独的docker容器中。结构如下:
好的,所以在面对很多问题并花费大量网络带宽搜索我已按照以下方式部署的问题后,我需要知道的是,如果这是正确的方法吗?
这里的限制是我已经提供了2个主机来测试这个配置,还没有进一步的行动计划。
所以这就是我所做的:我还没有使用我提到的完整堆栈。
服务器1
尤里卡
Zuul
ELK
服务器2
Keycloak
业务逻辑微服务
的MySQL
Anguar4 UI
Haven尚未配置和使用Hystrix和Zipkin。 所以我给了Eureka配置中所有需要在Eureka上注册的微服务的IP1:Server 1的PORT。同样适用于Zuul(鉴于IP:Eureka的PORT)。
在Angular4 UI中,我给出了URL:Zuul部署的PORT,因为所有服务都将通过Zuul调用。
我理解这是正确的,因为服务需要知道Eureka的位置,并且可以通过Eureka管理休息。
现在我的关键问题是,因为MySQL,ELK无法在Eureka上注册,所以在任何需要的地方提供IP:MySQL和ELK的PORT是否正确?
与ELK的配置相同,使用ELK我的要求也是所有日志都位于公共场所,我已经使用了docker,卷装,但我不知道如何在多主机上完成此操作环境,我只能让码头工人把外部卷上的日志放到外部卷上,然后ELK可以通过URL访问,还没有测试过这个配置。
如果是这样,那么如果我们认为它能够自我管理,那么这种配置是不是那么独立?
我已经将我的docker compose配置为使用" network_mode":主机,因此可以完成主机与主机之间的通信。
再次我需要知道的是,我的配置/架构是否适用于多主机环境以及将来适用于云环境? 如果没有,那么请指导我改正道路。
谢谢! 附:请原谅我的英语和语法,我尽我所知使其易于理解,如果你需要我的更多意见,请指出并提出问题。
答案 0 :(得分:1)
这类问题实际上超出了Stackoverflow的范围,但听起来您还没有了解基础架构的各个部分。
Netflix堆栈(Eureka / Zuul等)以及Zipkin,Hystrix和整个ELK堆栈之类的东西只有在多站点中有许多服务的大量部署时才开始有意义,许多主机管理着#34 ;手工"成为一个真正的问题,你可以在架构中有很多可移动的部件,这些部件可能会中断并且你的系统仍然需要继续运行,就像主机断开连接或数据库节点死亡一样。
有两个主机和一些服务,引入所有这些复杂性是没有意义的,它只会让你感到困惑和困惑(它已经有了)。如果你的两个主机中有一个即使你使用Eureka和Zuul就会死掉它并不能救你。整个系统将会崩溃。
扔掉所有最新的流行语库(你还不是Netflix),只需通过一个简单的架构思考,你将在另一台主机上的一个主机和数据库上运行你的服务(不需要Eureka或Zuul) 。想想日志的共享位置,并组织一个漂亮,易于使用的文件夹结构来存储它们,以便使用比Kibana更好的简单命令行工具轻松查找和搜索(这对于查看日志是很糟糕的) )。
保持简单,只在您觉得难以管理时才会介绍新作品。