
作者:姚嵩,外星人,舍利小王子。
爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
本文约 600 字,预计阅读需要 3 分钟。

升级 NLB 所在主机的 glibc,但是升级失败😏,导致 NLB 主机不可访问。进而导致使用 NLB 作为负载均衡的多节点 OCP 集群访问报错。需要安装新的 NLB 节点,并重新配置负载均衡。
多节点 OCP + NLB 负载均衡
打开 OCP 页面,准备登录 OCP 时(还未输入账号密码)报错。
Unhandled exception, type=CannotCreateTransactionException, message=Could not open JPA EntityManager for transaction
截图为直接使用 OCP 节点 IP:8080 方式访问 OCP。

OCP 对应的后端 METADB 数据库连不上导致访问 OCP 页面报错。
# 确认 OCP 后端 METADB 登陆是否成功:
docker exec -it ocp bash
obclient -u${OCP_METADB_USER} -p${OCP_METADB_PASSWORD} -h${OCP_METADB_HOST} -P${OCP_METADB_PORT} -Ac
后端 METADB 登录失败。
VIP 和 PORT# 登陆任意 OCP 节点,进入 OCP容器
docker exec -it ocp bash
# 查看 OCP 容器变量中记录的 METADB 的 VIP 和 PORT
env | grep -E 'OCP_METADB_HOST|OCP_METADB_PORT'
IP:port10.186.65.4:2883
10.186.65.5:2883
10.186.65.6:2883
NLB 提供的访问 METADB 的 VIP:PORT。
10.186.65.250:3307
此时可以重新在 NLB 中注册 METADB 节点和 VIP:PORT 的映射关系。
# 登录 NLB 容器
docker exec -it nlb bash
# 在 NLB 中注册 METADB 负载规则
nlbcli rule create tcp 3307 '10.186.65.4:2883#100,10.186.65.5:2883#100,10.186.65.6:2883#100' roundrobin
PORT10.186.65.4:8080
10.186.65.5:8080
10.186.65.6:8080
NLB 提供的访问 OCP 的 VIP:PORT。
10.186.65.250:12345
此时可以重新在 NLB 中注册 OCP 节点和 VIP:PORT 的映射关系。
# 在 NLB 中注册 OCP 负载规则
nlbcli rule create http 12345 '10.186.65.4:8080,10.186.65.5:8080,10.186.65.6:8080' chash
# 在 NLB 容器中查看
nlbcli rule list
当多节点 OCP 使用 NLB 作为负载均衡时,若因意外导致 NLB 配置丢失(如:NLB 容器被删除),可以通过命令方式重新配置 。
本文关键字:#OceanBase #NLB #OCP