【Kong】ODBC适配国产数据库

1.前言

Kong Gateway是一个运行在Nginx上的Lua应用程序,它与OpenResty一起发布。Kong Gateway底层数据库只支持PostgreSQL和Cassandra,从3.4.0版本官方已不在支持Cassandra。微信截图_20231010220400.png由于大部分国产数据并没有提供Lua语言驱动,所有笔者将采用ODBC适配达梦数据库,文中涉及到的lua源码需要读者自行实现。

2.环境

  • 安装bazel
cd "/usr/bin" && \
curl -fLO https://releases.bazel.build/6.1.0/release/bazel-6.1.0-linux-x86_64 && \ 
chmod +x bazel-6.1.0-linux-x86_64 && \
mv bazel-6.1.0-linux-x86_64 bazel
  • 基础依赖
yum install \
    automake \
    gcc \
    gcc-c++ \
    git \
    libyaml-devel \
    make \
    patch \
    perl \
    perl-IPC-Cmd \
    protobuf-devel \
    unzip \
    valgrind \
    valgrind-devel \
    zlib-devel
  • ODBC
yum install unixODBC unixODBC-devel

配置odbc数据库源配置文件在: /etc/odbc.ini

[DM8]
Description = DM ODBC DSN
#DM8数据库区动
Driver = /usr/lib/dm/libdodbc.so
#数据库连接地址
SERVER = localhost 
#此处为用户名
UID = SYSDBA 
#此处为连接的密码
PWD = 12345678s 
#数据库实例端口号
TCP_PORT = 5236

命令验证是否生效

微信截图_20231010225244.png

3.适配

  • kong-3.3.1-0.rockspec
dependencies = {
 ......
 "luasql-odbc == 2.6.0",
}
build = {
  type = "builtin",
  modules = {
    ......
    ["kong.cluster_events.strategies.dm"] = "kong/cluster_events/strategies/dm.lua",
    ["kong.db.strategies.dm"] = "kong/db/strategies/dm/init.lua",
    ["kong.db.strategies.dm.connector"] = "kong/db/strategies/dm/connector.lua",
    ["kong.db.strategies.dm.tags"] = "kong/db/strategies/dm/tags.lua",
    ......
  }
}

  • 创建Lua文件
kong/cluster_events/strategies/dm.lua
#建立数据库连接
kong/db/strategies/dm/connector.lua
#访问数据库SELECT、INSERT、DELETE、UPDATE等
kong/db/strategies/dm/init.lua
kong/db/strategies/dm/tags.lua
  • 修改Lua文件
#配置文件
kong.conf.default
kong/templates/kong_defaults.lua
kong/db/strategies/init.lua
kong/cluster_events/init.lua
kong/conf_loader/init.lua
kong/db/schema/others/migrations.lua
#依赖的表、触发器、函数
kong/db/migrations/core/000_base.lua
#辅助表结构及插件依赖表结构可忽略但必须有数据库名称配置
#当然也可以把表结构拆分到相关的lua文件中
kong/db/migrations/core/003_100_to_110.lua
kong/db/migrations/core/004_110_to_120.lua
kong/db/migrations/core/005_120_to_130.lua
kong/db/migrations/core/006_130_to_140.lua
kong/db/migrations/core/007_140_to_150.lua
kong/db/migrations/core/008_150_to_200.lua
kong/db/migrations/core/009_200_to_210.lua
kong/db/migrations/core/010_210_to_211.lua
kong/db/migrations/core/011_212_to_213.lua
kong/db/migrations/core/012_213_to_220.lua
kong/db/migrations/core/013_220_to_230.lua
kong/db/migrations/core/014_230_to_270.lua
kong/db/migrations/core/015_270_to_280.lua
kong/db/migrations/core/016_280_to_300.lua
kong/db/migrations/core/017_300_to_310.lua
kong/db/migrations/core/018_310_to_320.lua
kong/db/migrations/core/019_320_to_330.lua
kong/db/migrations/operations/200_to_210.lua
kong/plugins/.../migrations/...

4.编译

bazel build //build:kong --verbose_failures --action_env=CFLAGS="-DUNIXODBC"
bazel build --config release //build:kong --verbose_failures --action_env=CFLAGS="-DUNIXODBC
#输出rpm文件到当前目录的bazel-bin/pkg/
bazel build --config release :kong_el7 --verbose_failures

5.安装

默认安装路径: /usr/local/share/lua/5.1/,日志路径: /usr/local/kong

  • yum install -y kong.el7.xxx.rpm
  • /etc/kong/kong.conf
  • kong migrations bootstrap
  • kong start

6.源码

感兴趣友情支持,主要支持达梦数据库、MYSQL、瀚高。
https://item.taobao.com/item.htm?ft=t&id=763874191645

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7是一种流行的Linux操作系统,而Kong是一个开源的云原生API网关和微服务管理平台。下面是在CentOS 7上安装Kong的步骤: 1. 首先,确保你的CentOS 7系统已经安装了必要的依赖软件包。可以使用以下命令来安装这些软件包: ``` sudo yum install -y epel-release sudo yum install -y wget openssl-devel pcre-devel zlib-devel ``` 2. 接下来,你需要添加Kong的官方Yum存储库。运行以下命令来添加存储库: ``` sudo wget https://bintray.com/kong/kong-rpm/rpm -O /etc/yum.repos.d/bintray-kong-kong-rpm.repo ``` 3. 安装Kong。运行以下命令来安装Kong: ``` sudo yum install -y kong ``` 4. 配置数据库Kong需要一个数据库来存储配置和元数据。你可以选择使用PostgreSQL或Cassandra作为数据库。以下是使用PostgreSQL的配置步骤: - 安装PostgreSQL: ``` sudo yum install -y postgresql postgresql-server ``` - 初始化数据库: ``` sudo postgresql-setup initdb ``` - 启动PostgreSQL服务: ``` sudo systemctl start postgresql ``` - 创建Kong使用的数据库和用户: ``` sudo -u postgres psql -c "CREATE USER kong;" sudo -u postgres psql -c "CREATE DATABASE kong OWNER kong;" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE kong TO kong;" ``` 5. 配置Kong。编辑Kong的配置文件`/etc/kong/kong.conf`,根据你的需求进行配置。至少需要配置数据库连接信息。 6. 初始化Kong数据库。运行以下命令来初始化Kong数据库: ``` sudo kong migrations bootstrap [-c /etc/kong/kong.conf] ``` 7. 启动Kong服务。运行以下命令来启动Kong服务: ``` sudo systemctl start kong ``` 现在,你已经成功在CentOS 7上安装了Kong。你可以通过访问Kong的管理界面或使用Kong的API来配置和管理API网关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值