OBserver除了切换RS leader之外还有什么主动触发注册configserver的方法么?

【 使用环境 】
测试环境
【 组件 】
OBproxy
configserver tool
【 使用版本 】
obproxy 3.2.3.5
【问题描述】

  1. 当手动对OBserver执行alter system set obconfig_url设置之后,除了ALTER SYSTEM SWITCH ROOTSERVICE LEADER之外还有什么不做切换主动刷新config server的方法么?
  2. observer这边set obconfig_url之后多久会注册进confgserver?
  3. obproxy也采用configserver url的形式启动,启动后该如何代理多个集群?(/services?Action=GetObProxyConfig接口中ObRootServiceInfoUrlList字段的数据该如何动态增加),并没有看到configserver的API文档内有新增的方法。

【复现路径】
OBproxy使用RPM的方式手动部署,configserver也采用自行编译的方式直接运行

  1. 只要是让rs_list有变化的都可以,新增一个rs也可以,一般来说,切一下rs的leader是最方便的
  2. 有定时的上报逻辑,10分钟会进行上报
  3. observer的信息注册进去就可以了,如果是GetObProxyConfig接口查询的话,会返回当前configserver中记录的所有集群的信息,实际连接的时候连接串中要带集群名的形式,user@tenant#cluster, obproxy会识别出连接的集群名,根据对应的rs地址,去访问OB集群获取元数据
1 个赞

好的好的谢谢老师,关于问题三还有一些不明白的地方,OCP上的表现是这样的


那么jcl_odp的configserver url:http://10.186.60.34:8080/services?Action=GetObProxyConfig&User_ID=alibaba&UID=admin&ObproxyClusterName=jcl_odp
就能看到两个rootservice

{
	"Code": 200,
	"Data": {
		"ObProxyBinUrl": "http://10.186.60.34:8080/client?Action=GetObProxy&User_ID=alibaba&UID=admin",
		"ObProxyDatabaseInfo": {
			"DataBase": "***",
			"MetaDataBase": "http://10.186.60.34:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
			"Password": "***",
			"User": "***"
		},
		"ObRootServiceInfoUrlList": [{
			"ObRegion": "jcl_test",
			"ObRootServiceInfoUrl": "http://10.186.60.34:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=jcl_test"
		}, {
			"ObRegion": "chm_test",
			"ObRootServiceInfoUrl": "http://10.186.60.34:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=chm_test"
		}],
		"Version": "51cae8693d626ee9ea0f9133453d195a"
	},
	"Message": "successful",
	"Success": true
}

而chm_obp的configserver url:http://10.186.60.34:8080/services?Action=GetObProxyConfig&User_ID=alibaba&UID=admin&ObproxyClusterName=chm_obp
就是只有一个

{
	"Code": 200,
	"Data": {
		"ObProxyBinUrl": "http://10.186.60.34:8080/client?Action=GetObProxy&User_ID=alibaba&UID=admin",
		"ObProxyDatabaseInfo": {
			"DataBase": "***",
			"MetaDataBase": "http://10.186.60.34:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
			"Password": "***",
			"User": "***"
		},
		"ObRootServiceInfoUrlList": [{
			"ObRegion": "chm_test",
			"ObRootServiceInfoUrl": "http://10.186.60.34:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=chm_test"
		}],
		"Version": "41c8297ffb5e414ab06fa235ff70a25e"
	},
	"Message": "successful",
	"Success": true
}

我想表达的意思是,同一个proxy集群下如何同时代理多个OB集群,对另外的proxy集群又如何做到ObRootServiceInfoUrlList内容的各自独立