apolloconfig / apollo

Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.
https://www.apolloconfig.com
Apache License 2.0
29.16k stars 10.2k forks source link

两台apollo做集群发布应用冲突 #1718

Closed yuynagforhacker closed 5 years ago

yuynagforhacker commented 5 years ago

你好,我在两台服务器上搭建apollo全环境 IP:111,112 在111上开启adminserver、configserver、portalserver 在112上开启adminserver、configserver 两台服务器分别用各自的mysql,eureka指向两个服务器IP

成功启动后,在111portal上发布test项目和未发布test1项目,强制刷新portal页面的时候发现冲突,时而是test项目发布,时而test项目未发布,时而出现test1,怀疑是eureka冲突了,但是怎么解决? 尝试将112的eureka指定为client,但是在build的时候会报错

yuynagforhacker commented 5 years ago

112上停用apollo就好了

nobodyiam commented 5 years ago

打开管理员工具 - 系统信息看看,多数是不同环境的服务都注册到同一个eureka上去了

yuynagforhacker commented 5 years ago

打开管理员工具 - 系统信息看看,多数是不同环境的服务都注册到同一个eureka上去了

环境: DEV、FAT、UAT、PRO Active: true Meta server地址: http://192.168.103.111:8080,http://192.168.103.112:8080 并且check都没有问题,项目构建的时候是4个环境全勾选了,按理说应该是4个都能出现,但是还是会有不稳定的情况发生,是不是两个eureka没有同步?连接发生冲突,在抢master?

还有一个问题是,我现在的环境访问111的内嵌eureka显示是有两台注册,当我停掉112的Apollo,再访问111的eureka发现还是有两台,并且会持续显示,这个显示问题需要怎么做一下处理呢?

大佬有部署文档吗?那种比如一个dev环境起两个Apollo做集群的那种

因为环境问题没有部署spring cloud,是否能够搭建?

nobodyiam commented 5 years ago

不是只有两个环境吗,为啥系统信息有4个环境?

部署文档参考分布式部署文档,或者建议看一下视频吧 - https://pan.baidu.com/s/1rUAphfVq9fnEMqRrscDk-w#list/path=%2F%E5%88%B6%E4%BD%9C%E8%A7%86%E9%A2%91%2Fapollo&parentPath=%2F%E5%88%B6%E4%BD%9C%E8%A7%86%E9%A2%91

yuynagforhacker commented 5 years ago

是测试环境用的,全部指向了两台服务器的8080,这样做会有影响吗?因为部署的时候测试不想用太多服务器,而想体验多环境分布式部署,所以采用了现在这么个折中的办法

nobodyiam commented 5 years ago

所以是两个物理环境,4个逻辑环境?其中两个环境是重复的?

yuynagforhacker commented 5 years ago

是这个意思,准确的说应该是只有一个环境,4个逻辑环境,因为4个meta指向都是这两台服务器。设计理念是这样的,开始是想用独立的eureka,后来实现起来有难度,要考虑兼容性的问题,改用两个apollo内置的eureka,因为是运维环境没有spring框架,想用apollo来搭建起简易的eureka集群来体验apollo分布式集群的部署,现在问题就是出在搭建后应用发布变化的问题

nobodyiam commented 5 years ago

4个meta指向两台服务器,但是两台服务器又分别连接了两个数据库?那这样的话,是会出现你所描述的现象。

建议参考一下1.3、环境

yuynagforhacker commented 5 years ago

现在我已经部署好了,基本上稳定了,目前的架构是1个portal作为管理,管理dev pro两个环境,地址为111,4台服务器的portalDB全部指向111,dev环境的eureka为111,112,pro环境eureka为113,114,每个环境各使用一个configDB,这样就稳定多了,避免了那个现象,但是有时发布会过慢,查看CPU并不高,可能是eureka的bug,还有一个问题,eureka和configserver是合并的,按理说我shutdown了configserver后应该不能发布吧?但是我4台服务器全部shutdown了还是可以发布,这是什么问题?

nobodyiam commented 5 years ago

eureka只是用来做服务发现的,和配置发布没关系。

portal发布配置是通过admin service发布的,参考下Apollo配置中心设计

yuynagforhacker commented 5 years ago

大佬,我有个设想,不知道能不能实现,您评估一下 eureka能做成集群,并且支持多配置,MySQL可不可以也能做成集群多配置形式? 比如configDB的mysql是111,112,113,而这三台MySQL是一个集群,保证了数据是相同的,这样读取不会出问题,同时单台MySQL宕机也不会影响整体Apollo的使用

nobodyiam commented 5 years ago

这个理论上是可以的,不过对mysql运维就提出要求了