obconfigserver 使用手册

2024年 5月 7日 30.4k 0

configserver 简介

什么是configserver

configserver 是一个 web 服务,提供了 OceanBase 元数据信息存取的功能。

configserver 的作用

●存储 OceanBase 的 rootservice 列表,当 OceanBase bootstrap 时,或者之后有 rootservice 列表变化时,OceanBase 会请求 configserver,将 rootservice 列表写进去,configserver 记录了所有相关的 OceanBase 集群的信息,统一进行存储。

●提供查询 OceanBase rootservice 列表的能力,以特定的 api 给 OceanBase 相关组件使用。

configserver 部署方式

configserver 进程本身是无状态的一个 web 服务,所有数据都放在后端的存储当中,根据不同的使用场景,可以灵活选择。

1. 安装方式,可以通过rpm的方式进行安装,rpm包下载地址: ob-configserver-1.0.0-2.el7.x86_64.rpm

2. rpm包安装完成之后的目录结构

#tree
.
├── bin
│   └── ob-configserver
├── conf
│   └── config.yaml
├── log
└── run

3. 修改配置文件

configserver 的配置都使用一个配置文件来记录,按照实际情况来进行修改

log:
  level: info
  filename: ./log/ob-configserver.log
  maxsize: 30
  maxage: 7
  maxbackups: 10
  localtime: true
  compress: true

server:
  address: "0.0.0.0:9999"
  run_dir: run

vip:
  address: "100.81.152.81"
  port: 9999

storage:
  #  database_type: sqlite3
  #
  #  store data in a file `/tmp/data.db`
  #  connection_url: "/tmp/data.db?cache=shared&_fk=1"
  #
  #  store data in memory, only for test
  #  connection_url: "file:ent?mode=memory&cache=shared&_fk=1"

  database_type: mysql
  connection_url: "root:root@tcp(127.0.0.1:3306)/oceanbase?parseTime=true"

configserver 得配置文件包括几个部分

●日志配置:包括级别,文件,回收策略等

●服务配置: 包括监听地址,run 目录

●vip配置: 如果使用了vip,需要配置为正确的vip地址和端口,返回结果中的url地址会使用vip地址和端口, 如果没有使用vip,这里要配置成服务器的ip和端口, 不能写127.0.0.1,localhost或者主机名

●存储配置: 支持两种存储,sqlite3 和 mysql, 使用 sqlite3 只能将数据存在本地文件,或者测试时也可以配置存在内存中,不建议生产环境使用,使用 mysql 可以将数据存到数据库中,configserver 可以起多个进程,通过配置 vip 或者域名来保持高可用。

4. 启动configserver进程

bin/ob-configserver -c conf/config.yaml &

configserver 接口说明

为了兼容性考虑,完全按照 OCP 的 configserver的接口形式,请求路径 'http://xxx:xx/services?Action=xxx', 以不同的 Action 来区分不同的功能。以下以不同的接口功能来分别介绍。

注册 OceanBase 集群 rootservice 信息

●请求地址: http://${domain}/services

●请求方式: POST

●请求参数:

名称 类型 是否必填 典型值 说明
Action String ObRootServiceInfo Action 必填,不可以修改
ObCluster String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObClusterId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,如果需要的话,填写其中一个就可以
ObRegion String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObRegionId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,如果需要的话,填写其中一个就可以
version int 1 版本,2表示支持主备库的版本,不传 OB 集群 ID 的话以列表形式返回OB得rs 信息,1表示老版本,之后返回一个OB集群的rs信息,当主备库情况,返回主库信息或最新的备库信息
  • 返回结果


# version = 1 或者 version =2 并且传了 ob 集群 id
{
"Code": 200,
"Message": "successful",
"Success": true,
"Data": {
"ObClusterId": 1,
"ObRegionId": 1,
"ObCluster": "xueran",
"ObRegion": "xueran",
"ReadonlyRsList": [],
"RsList": [{
"address": "11.124.5.58:3882",
"role": "LEADER",
"sql_port": 3881
}],
"Type": "PRIMARY",
"timestamp": 1652419587417171
},
"Trace": "ae51534d2011cf54",
"Server": "100.81.152.81",
"Cost": 1
}


# version = 2 并且没有传 ob 集群的 id
{
"Code": 200,
"Message": "successful",
"Success": true,
"Data": [{
"ObClusterId": 1,
"ObRegionId": 1,
"ObCluster": "xueran",
"ObRegion": "xueran",
"ReadonlyRsList": [],
"RsList": [{
"address": "11.124.5.58:3882",
"role": "LEADER",
"sql_port": 3881
}],
"Type": "PRIMARY",
"timestamp": 1652419587417171
}, {
"ObClusterId": 2,
"ObRegionId": 2,
"ObCluster": "xueran",
"ObRegion": "xueran",
"ReadonlyRsList": [],
"RsList": [{
"address": "11.124.5.57:2882",
"role": "LEADER",
"sql_port": 2881
}],
"Type": "STANDBY",
"timestamp": 1652436572067984
}],
"Trace": "6086557f99347161",
"Server": "100.81.152.81",
"Cost": 2
}

删除 OceanBase 集群 rootservice 信息

  • 请求地址: http://${domain}/services
  • 请求方式: DELETE
  • 请求参数:
名称 类型 是否必填 典型值 说明
Action String ObRootServiceInfo Action 必填,不可以修改
ObCluster String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObClusterId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,需要填写其中一个
ObRegion String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObRegionId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,需要填写其中一个
version int 2 仅支持version=2

  • 返回结果
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": "success",
	"Trace": "c6bba4477215d762",
	"Server": "100.81.152.81",
	"Cost": 2
}

查询所有集群的 rootservice 信息

  • 请求地址: http://${domain}/services
  • 请求方式: GET/POST
  • 请求参数:
名称 类型 是否必填 典型值 说明
Action String GetObProxyConfig Action 必填,不可以修改
VersionOnly Boolean false 是否只返回version信息

  • 返回结果
# 返回所有信息
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": {
		"ObProxyBinUrl": "http://100.81.152.81:9999/client?Action=GetObProxy",
		"ObProxyDatabaseInfo": {
			"DataBase": "***",
			"MetaDataBase": "http://100.81.152.81:9999/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
			"Password": "***",
			"User": "***"
		},
		"ObRootServiceInfoUrlList": [{
			"ObRegion": "xueran",
			"ObRootServiceInfoUrl": "http://100.81.152.81:9999/services?Action=ObRootServiceInfo&ObCluster=xueran"
		}],
		"Version": "07c5563d293278097dc84e6b64ef6341"
	},
	"Trace": "043214541db350b7",
	"Server": "100.81.152.81",
	"Cost": 1
}

# versiononly
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": {
		"Version": "07c5563d293278097dc84e6b64ef6341"
	},
	"Trace": "6631b08008ec9c2f",
	"Server": "100.81.152.81",
	"Cost": 1
}

查询所有集群的 rootservice 信息,以template形式返回

  • 请求地址: http://${domain}/services
  • 请求方式: GET/POST
  • 请求参数:
名称 类型 是否必填 典型值 说明
Action String GetObRootServiceInfoUrlTemplate Action 必填,不可以修改
VersionOnly Boolean false 是否只返回version信息

  • 返回结果
# 返回所有信息
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": {
		"ObProxyBinUrl": "http://100.81.152.81:9999/client?Action=GetObProxy",
		"ObProxyDatabaseInfo": {
			"DataBase": "***",
			"MetaDataBase": "http://100.81.152.81:9999/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
			"Password": "***",
			"User": "***"
		},
		"Version": "b34e6381994003c5d758890ededb82a4",
		"ObClusterList": ["xueran"],
		"ObRootServiceInfoUrlTemplate": "http://100.81.152.81:9999/services?Action=ObRootServiceInfo&ObRegion=${ObRegion}",
		"ObRootServiceInfoUrlTemplateV2": "http://100.81.152.81:9999/services?Action=ObRootServiceInfo&version=2&ObCluster=${ObCluster}&ObClusterId=${OBClusterId}"
	},
	"Trace": "abdb62d90ab13d38",
	"Server": "100.81.152.81",
	"Cost": 1
}

# versiononly
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": {
		"Version": "b34e6381994003c5d758890ededb82a4"
	},
	"Trace": "45a499783746c6d7",
	"Server": "100.81.152.81",
	"Cost": 1
}

查询 IDC Region 映射关系 (并不实际返回,仅为了兼容处理,返回空列表)

  • 请求地址: http://${domain}/services
  • 请求方式: GET
  • 请求参数:

名称 类型 是否必填 典型值 说明
Action String ObIDCRegionInfo Action 必填,不可以修改
ObCluster String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObClusterId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,如果需要的话,填写其中一个就可以
ObRegion String obcluster 集群名,ObCluster和ObRegion必须填其中一个
ObRegionId int64 1 OB 集群ID,ObClusterId 和 ObRegionId 表示相同的含义,如果需要的话,填写其中一个就可以
version int 1 版本,2表示支持主备库的版本,1表示仅支持单集群

  • 返回结果:
# version = 1 或者 version =2 并且传了 ob 集群 id
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": {
		"ObRegion": "xueran",
		"ObRegionId": 2,
		"IDCList": [],
		"ReadonlyRsList": ""
	},
	"Trace": "178fd9e8094ef0dc",
	"Server": "100.81.152.81",
	"Cost": 2
}


# version =2 并且没有传 ob 集群 id
{
	"Code": 200,
	"Message": "successful",
	"Success": true,
	"Data": [{
		"ObRegion": "xueran",
		"ObRegionId": 1,
		"IDCList": [],
		"ReadonlyRsList": ""
	}, {
		"ObRegion": "xueran",
		"ObRegionId": 2,
		"IDCList": [],
		"ReadonlyRsList": ""
	}],
	"Trace": "99b3db8337ff7799",
	"Server": "100.81.152.81",
	"Cost": 2
}

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论