Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教大神,中美机房部署问题 #1294

Closed
timZhangww opened this issue Jul 26, 2018 · 17 comments
Closed

请教大神,中美机房部署问题 #1294

timZhangww opened this issue Jul 26, 2018 · 17 comments

Comments

@timZhangww
Copy link

国内机房 部署:数据库 adminservice configservice
美国机房 部署:configservice
configservice开启缓存功能。
国内登录使用portal

请问,可以做到 国内client 优先访问国内同机房configservice,国外client优先访问国外同机房configservice 吗?

@timZhangww timZhangww changed the title 请教中美机房部署问题 请教大神,中美机房部署问题 Jul 26, 2018
@timZhangww
Copy link
Author

利用ServerConfig表中的cluster字段,只能做到 国内访问国内的,国外访问国外的。configservice相当于2个独立的集群; 我理解的对吗?

@zollty
Copy link

zollty commented Jul 26, 2018

adminservice和configservice都是成对部署的,你美国机房不部署adminservice 吗?
官方的多数据中心方案,实际上admin和config还是单节点,所谓的集群就是在这个节点下,见了另一套配置,如果这个节点挂了,服务就中断了。
真正双活的方案,貌似只能部署多套了,美国机房一套,国内机房一套,美国的应用读取美国机房的配置,国内的读取国内的配置。相当于两套完全独立。

@nobodyiam
Copy link
Member

是可以实现的。

通过ServerConfig表中的cluster字段,config service在国内形成一个集群,在美国也形成一个集群。然后需要做的是对meta server的域名实现本地解析即可,比如在国内机房解析meta server域名返回国内机房的config service地址,在美国机房解析meta server域名返回美国机房的config service地址就可以了。

另外,你说的优先访问是啥意思?如果要实现机房切换的话,只要切换meta server域名的指向就可以了。

@timZhangww
Copy link
Author

优先访问的意思:正常情况下,国内client 访问 国内configservice, 当国内configservice集群挂了,可自动访问美国configservice集群。

按大神的意思, 切换configservice集群,只能 手动切换meta server域名。目前 不支持自动切换。

@nobodyiam
Copy link
Member

是的,我们公司的机房灾难切换都是有一个总开关的,一打开就会执行预设的一些步骤,比如切换meta server域名。

另外,config service目前有一处是写db的,部署在美国机房的config service可能要稍微改造一下InstanceConfigAuditUtil,禁用它或者把这个写操作再代理回国内,禁用的影响是

  1. 在portal界面上就看不到实例列表了
  2. 如果使用灰度发布的话,之前是可以选择IP的,禁用后就需要自己填写IP了

@timZhangww
Copy link
Author

再请教下,美国的configservice 访问国内的数据库,延时比较大,会有什么影响呢? 比如,每秒扫描一次ReleaseMessage表,是否需要 改为5s一次呢? InstanceConfigAuditUtil打算使用代理,写回国内,延时大,写库可能会超时。

@nobodyiam
Copy link
Member

美国的configservice只需要访问美国的configdb库就可以了吧?

如果美国的config service访问国内的config db,那么相应的扫表间隔(ReleaseMessage, AppNamespace等)都可以加大一些,不过似乎没有啥必要,因为config db的更新还是比较少的,所以同步db可能好一些。

InstanceConfigAuditUtil目前就是异步写的,延时大一点也问题不大,不过代理或许可以加一点逻辑,比如再做一次异步,然后批量写回国内这样

@timZhangww
Copy link
Author

如果美国部署configdb库,configservice,adminservice 。这样 就是两套环境了
问题1:国内国外configdb库,做同步吗?
问题2:美国机房 接入 portal端 ,是否 和 新增一套环境类似。
问题3:portal端 新建 美国机房 app时,美国configdb容易超时,portaldb 和configdb 一致性难保证。

@nobodyiam
Copy link
Member

美国机房只需要部署configdb和config service即可。

其中config db从国内同步,然后把美国config service的少量写操作代理回国内。

@timZhangww
Copy link
Author

timZhangww commented Jul 27, 2018

非常感谢,明白怎么部署了。

configservice的少量写操作,就只有InstanceConfigAuditUtil 吧

@nobodyiam
Copy link
Member

是的

@timZhangww
Copy link
Author

非常感谢 大神赐教

@yechao4j
Copy link

yechao4j commented Aug 7, 2019

然后把美国config service的少量写操作代理回国内。

@nobodyiam 请问,这个少量写操作代理回国内,具体该怎么操作?不太理解。。

@nobodyiam
Copy link
Member

@yechao4j

InstanceConfigAuditUtil有一些实例信息会写回到configdb

@penghuazhou
Copy link

@nobodyiam,InstanceConfigAuditUtil这个里面都是写审计信息吧,美国机房同步国内机房configdb的数据的情况下(即只调用国内机房的configservice进行写入、更新、删除操作),美国机房还会有审计信息吗?

@nobodyiam
Copy link
Member

@penghuazhou InstanceConfigAuditUtil is used to audit the config versions fetched by the clients, which are displayed in the instance list page.

image

@penghuazhou
Copy link

谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants