---
title: "负载均衡 | OceanBase 文档中心"
description: 负载均衡 实现负载均衡的架构示例如下： OBCI 提供的负载均衡功能是通过配置文件来完成的，用户可以指定后端 proxy 的地址以及连接过程中的负载均衡选项。 设置配置文件 当前 OBCI 提供驱动负载均衡功能，在与后端建联的过程中，能够选取一个“合适”的 proxy 来连接。 OBCI 的负载均衡需要基于配置文件来…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*2w2xQrMxVCwAAAAAAAAAAAAADiGDAQ/original) OBCI 驱动程序V 2.1.0 企业版

# 负载均衡

更新时间：2025-07-04 19:19:52

实现负载均衡的架构示例如下：

![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/1000.performance-tuning-guide/400.business-model-tuning/loading-balance-1.png)

OBCI 提供的负载均衡功能是通过配置文件来完成的，用户可以指定后端 proxy 的地址以及连接过程中的负载均衡选项。

## 设置配置文件

当前 OBCI 提供驱动负载均衡功能，在与后端建联的过程中，能够选取一个“合适”的 proxy 来连接。

OBCI 的负载均衡需要基于配置文件来配置选取连接过程中的一些选项，以及后端 proxy 的地址。配置文件的名称需要用户在环境变量 OBCI_TNS_FILE 中设置。

```bash
## 设置配置文件名为 obci_tnsnames.ora
export OBCI_TNS_FILE=./obci_tnsnames.ora

```

提供 LB 功能之前，OBCI 兼容了 OCI 的配置文件格式，具体如下：

- 配置文件在环境变量 TNS_ADMIN 或者 ORACLE_HOME/network/admin 下
 - 配置文件名固定为 tnsnames.ora

所以目前设置配置文件，有三种环境变量设置，分别是 `OBCI_TNS_FILE`、`TNS_ADMIN`、`ORACLE_HOME`，这三个环境变量的优先级如下：

- OBCI_TNS_FILE：第一优先级
 - TNS_ADMIN：第二优先级，OBCI_TNS_FILE 为空的时候才会查询
 - ORACLE_HOME：第三优先级，前两个为空时才会查询

#### 说明

更建议使用 OBCI_TNS_FILE 设置配置文件。

## 配置文件说明

### 配置示例

```bash
## 负载均衡配置
obci_load_balance=
(DESCRIPTION=
  (OBLB=ON)
  (OBLB_RETRY_ALL_DOWNS=120)
  (OBLB_RETRY_TIMEOUT=200000)
  (OBLB_GROUP_STRATEGY=ROTATION)
  (OBLB_BLACKLIST=
     (REMOVE_STRATEGY=
      (NAME=timeout)(TIMEOUT=1000)
     )
     (APPEND_STRATEGY=
      (NAME=retryDuration)(RETRY_TIMES=20)(DURATION=1000)
     )
  )
  (ADDRESS_LIST=
     (OBLB_STRATEGY=SERVERAFFINITY)
     (ADDRESS=(PROTOCOL=tcp)(HOST=11.xxx.xxx.1)(PORT=10001)(WEIGHT=1))
     (ADDRESS=(PROTOCOL=tcp)(HOST=11.xxx.xxx.1)(PORT=10000)(WEIGHT=10)))
  (ADDRESS_LIST=
     (OBLB_STRATEGY=ROTATION)
     (ADDRESS=(PROTOCOL=tcp)(HOST=11.xxx.xxx.1)(PORT=1031)(WEIGHT=10))
     (ADDRESS=(PROTOCOL=tcp)(HOST=11.xxx.xxx.1)(PORT=10002)(WEIGHT=10)))
  (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=11.xxx.xxx.1)(PORT=10003)(WEIGHT=10)))
   (CONNECT_DATA=(SERVICE_NAME=TEST)))

## 普通配置
normal=
 (DESCRIPTION=
   (ADDRESS_LIST=
    (ADDRESS = (PROTOCOL=TCP)(HOST=11.xxx.xxx.1)(PORT=1031)))
   (CONNECT_DATA=
     (SID=TEST)))

## 特殊配置：不是负载均衡所需要，兼容之前能力
TestExtraInfo=
 (DESCRIPTION=
   (ADDRESS_LIST=
    (ADDRESS = (PROTOCOL=TCP)(HOST=11.xxx.xxx.1)(PORT=1031)))
   (CONNECT_DATA=
     (SID=TEST)(OB_MODE=1)(OB_USER_EXTRA_INFO=@xyoracle)))

```

### 普通配置

从 **配置示例** 中可以看到，在普通配置中只有一个地址和一个 SID，可以简单的将其拼接起来，就是一个连接串，配合账号密码就能直接登录数据库。

例如：

```bash
## 上面普通配置得到的连接串
dblink: 11.xxx.xxx.1:1031/TEST

```

### 负载均衡配置

#### 注意

配置文件中 `key` 和 `value` 是大小写不敏感的，建议使用下文中提到的 `obci_dblink_check` 文件检验配置文件是否符合预期。

#### Description 相关配置选项

| 配置项 | 配置项说明 | 取值 | 备注 |
| --- | --- | --- | --- |
| OBLB | 负载均衡总开关 | - ON：开启 - OFF：关闭（默认值） | 如果开关为关闭的状态，所有 OBLB 开头的配置信息都无效，并且会选择第一个地址直接连接后续 proxy/observer。 |
| OBLB_RETRY_ALL_DOWNS | 连接总次数 | 默认值为 120，建议用户根据实际情况自行设置 | 在负载均衡过程中，每次后端尝试连接都会使用一次连接次数，该参数定义连接总次数。如果设置为 10 次，OBCI 会根据负载均衡策略，尝试与后端连接 10 次（每次地址都是靠负载均衡策略选择），直到次数用完或者连接上后端。 |
| OBLB_RETRY_TIMEOUT | 连接总时间 | 默认值：10000ms | 在负载均衡过程中，可能会不断重试，尝试连接上后端 proxy，该配置用于设置总时间，每次重试之前进行检查，如果超时，则报错。 |
| OBLB_CONNECT_TIMEOUT | 单次连接时间 | 默认值为 0s，一直等待直到连接上后端机器 | 每次连接与后端 tcp 建联的时间。 |
| OBLB_GROUP_STRATEGY | 负载均衡组间策略 | ROTATION（该值是默认值，同时是当前唯一可选值） | OBCI 负载均衡，允许配置多个 proxy 组，这个策略能够首先在多个组中选出策略倾向的组，尝试连接。 |

#### BLACKLIST 相关配置选项

| 配置项 | 配置项说明 | 取值 |
| --- | --- | --- |
| REMOVE_STRATEGY | 洗白策略 | 使用 NAME 来标识洗白策略，并带上洗白策略相关的属性。 |
| NAME | 洗白和拉黑策略的名称 | 根据策略选择策略名，具体见下文 **NAME** 的详细介绍。 |
| TIMEOUT | TIMEOUT 洗白策略下属性，表示洗白的时间 | 数字，单位为 ms。 |
| APPEND_STRATEGY | 拉黑策略 | 使用 NAME 来表示拉黑策略，并带上相应拉黑策略的属性。 |
| RETRYTIMES | RetryDuration 策略下的属性，表示在 DURATION 时间内拉黑需要的失败次数，即定义在 DURATION 时间内重试多少次会被加入黑名单 | 数字，默认值为 1。 |
| DURATION | RetryDuration 策略下的属性，表示时间段 | 数字，默认值为 10ms。 |

##### NAME

洗白和拉黑策略的名称，可选值有按照策略可分为如下几种：

| 策略 | 可选值 | 说明 |
| --- | --- | --- |
| 洗白策略 | TIMEOUT | 超时洗白，如果设置为 10ms，在拉黑的 10ms 后再尝试 LoadBalance，系统会洗白地址。 |
| 拉黑策略 | RetryDuration | 策略会配置时间段（duration）、以及失败次数（Retrytimes）。如果在时间段内，失败的次数大于配置次数则拉黑。 |
| 拉黑策略 | NORMAL | 策略不会带其他属性，失败即拉黑。 |

#### ADDRESS_LIST 以及 ADDRESS 相关配置选项

| 配置项 | 配置项说明 | 取值 |
| --- | --- | --- |
| OBLB_STRATEGY | 表示地址组的负载均衡策略 | - RANDOM：随机选择地址连接（默认策略） - ROTATION：轮询，按配置顺序尝试 - SERVERAFFINITY：加权随机，配合每个 ADDRESS 的 WEIGHT 属性，达到加权随机效果 |
| PROTOCOL | 表示协议，继承自 ORACLE TNS_FILE，没有实际意义 | |
| HOST | IP 地址 | 后端 proxy 或 server 的地址 |
| PORT | 端口号 | 数字 |
| WEIGHT | 加权随机策略下的地址权重 | 1 |

#### CONNECT_DATA 相关配置选项

| 配置项 | 配置项说明 | 取值 | 备注 |
| --- | --- | --- | --- |
| SERVICE_NAME/SID | 两个配置项都表示 DATABASE，继承自 ORACLE TNS FILE |  | |
| OB_MODE | 不是本次负载均衡所用，兼容之前功能，拓展连接时能力 | 如果值为 1，会在用户名后加上 EXTRA_INFO | |
| EXTRA_INFO | 不是本次负载均衡所用，兼容之前功能，拓展连接时能力 | 如果 OB_MODE 为 1，会在用户名后加上 extra_info | 一般用于客户使用时，用户名不带租户的情况下，extra_info 设置为 `@oracle` 或者 `@mysql` 表示租户。 |

## 配置文件的校验

当前在 OBCI 打包过程中，会生成可执行文件：obci_dblink_check

可使用该文件校验用户配置文件是否正确，测试如下：

```bash
$ ./obci_dblink_check --tns_service obci_load_balance
run tns_file_check with tns_service:obci_load_balance
find tns_service:obci_load_balance in OBCI_TNS_FILE
Tns:
--tns_serivce_count:1
--TnsService:obci_load_balance
----description_count:1
----Discription:
------oblb:1
------oblb_group_strategy:0
------retry_all_downs:120
------retry_timeout:200000
------connect_timeout:0
------append_strategy:3001
------remove_strategy:2001
------remove_timeout:1000
------duration:1000
------retry_times:20
------address_list_count:3
------AddressList:
--------address_count:2
--------oblb_strategy:1002
--------Address:
----------host:11.xxx.xxx.1
----------port:10001
----------weight:1
--------Address:
----------host:11.xxx.xxx.1
----------port:10000
----------weight:10
------AddressList:
--------address_count:2
--------oblb_strategy:1003
--------Address:
----------host:11.xxx.xxx.1
----------port:1031
----------weight:10
--------Address:
----------host:11.xxx.xxx.1
----------port:10002
----------weight:10
------AddressList:
--------address_count:1
--------oblb_strategy:1001
--------Address:
----------host:11.xxx.xxx.1
----------port:10003
----------weight:10
--------ConnectData:
----------dbname:TEST

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
