作者 yangjunlin
前言
越来越多的涉密单位对于信创环境的要求逐渐升高,服务应用对国产数据库的依赖性也在提高,针对超图iManager for k8s产品中的开源数据库替换为kingbase等国产化数据库的客户需求和场景也就随之而来,因此本文将带着读者一步步实现iManager&云套件配置kingbase数据库,具体流程请看下文
一、【kingbase安装以及imanager安装】
- kingbase安装(可参考博客,https://blog.csdn.net/supermapsupport/article/details/128496058)需要注意5点:
(1) 默认安装的路径是在/home/kingbase/下,可以优先创建目录并附上权限,然后以root用户给改目录附上777权限,后面选择安装路径,可以直接填写该路径
chmod -R 777 /home/kingbase/
(2) 安装时需要切换到kingbase用户进行部署
(3) 部署时选择数据库模式选择pg
(4) 记得配置环境变量,可能路径不太一致,按照实际方式配置
(5) 如何按照文档方式启动数据库,“报错,致命错误: 锁文件 “kingbase.pid” 已经存在“,可通过命令重启服务
./sys_ctl -D /home/kingbase/data restart
- 部署imanager以及云套件(此步省略具体可参考帮助文档https://help.supermap.com/iManager_K8S/1111/zh/)
- 用第三方工具查看是否能成功连接数据库
二、【k8s接入外部数据库资源】
接入方式有两种,一种是直接ip加端口方式接入,在后面其实就只是改下env连接参数中的ip和端口即可。第二种是,手动创建无头服务及endpoint,引入外部数据库,然后通过k8s集群中的域名解析服务访问,访问的主机名格式为:[svc_name].[namespace_name].svc.cluster.local。我以创建endpoint方式接入为例:
-
首先创建外部数据库对应的endpoint和svc
-
创建好以后查看对应的服务,是否状态正常
后面的话,我们就能通过这种无头服务方式来接入外部数据库服务了
三、【在imanager中将默认mysql替换为kingbase】(注意 如果是11.0.1以及之前版本是需要首先更改镜像,具体镜像可先联系支持中心)
- 首先修改imanager-dashbord-api
(1)删除commond和args
(2) 修改以下环境变量:
- spring_datasource_url:数据库连接地址
- postgresql/kingbase:jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/imanager?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&stringtype=unspecified
【stringtype=unspecified必须设置】
- postgresql/kingbase:jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/imanager?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&stringtype=unspecified
- spring_datasource_username:数据库用户名
- spring_datasource_password:数据库密码
注意小红框内容,是需要名称imanager数据库的,而模式数据库中并没有,因此需要手动先创建名称为imanager的数据库
- 修改bslicense-server
(1)删除commond和args
(2) 修改以下环境变量:
- BSLICENSE_DB_URL:数据库连接地址
- postgresql/kingbase:jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/bslicense?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8
- BSLICENSE_DB_USERNAME:数据库用户名
- BSLICENSE_DB_PASSWORD:数据库密码
可参考如下:
注意小框内容,与imanager-dashbord-api相同还是需要手动创建bslicense库
- 修改ispeco-dashbord-api
(1)删除commond和args
(2) 修改以下环境变量:
- spring_datasource_url:数据库连接地址
- postgresql/kingbase:jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/ispeco?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&stringtype=unspecified
【stringtype=unspecified必须设置】
- postgresql/kingbase:jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/ispeco?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&stringtype=unspecified
- spring_datasource_username:数据库用户名
- spring_datasource_password:数据库密码
可参考如下:
注意小框内容,与imanager-dashbord-api相同还是需要手动创建ispeco库
- 修改云套件中iportal
(1)首先从 mysql 切换为kingbase 之前,用户需要前往 iportal 挂载路径,修改 WEB-INF/iportal-monitor.xml
-
a) 将 dbType 修改为 SQLITE
-
b) 将 driverClass 修改为 org.sqlite.JDBC
-
c) jdbcUrl 为 jdbc:sqlite:/opt/iportalOPTs/WEB-INF/iportaldata/monitor.db
-
d) 将 maxPoolSize 修改为 1
-
e) 将 initialPoolSize 修改为 1
-
f) 将 minPoolSize 修改为 0
-
g) 将 maxIdleTime 修改为 3000
-
h) 将 maxWait 修改为 300000
-
i) 注释掉 username 和 password
(2)iportal 删除args。iportal-proxy 删除 command 和 args
iportal删除内容:
iportal-proxy 删除内容:
(3)iportal 和 iportal-proxy 修改以下环境变量 -
DB_TYPE: 数据库类型
Postgresql/kingbase: POSTGRESQL -
DB_JDBC_URL: 存放门户数据的数据库连接地址
- postgresql: jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/iportal?useUnicode=true&characterEncoding=UTF-8
-
SECURITY_DB_JDBC_URL: 安全信息数据库连接地址
- postgresql: jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/iportal-security?useUnicode=true&characterEncoding=UTF-8
备注:DB_JDBC_URL和SECURITY_DB_JDBC_URL使用的数据库要不同
- postgresql: jdbc:postgresql://imanager-kingbase.supermap.svc.cluster.local:54321/iportal-security?useUnicode=true&characterEncoding=UTF-8
-
DB_USERNAME: 连接 DB_JDBC_URL 和 SECURITY_DB_JDBC_URL 使用的用户名
-
DB_PASSWORD: 连接 DB_JDBC_URL 和 SECURITY_DB_JDBC_URL 使用的密码
Iportal 与 iportal-porxy更改方式相同,注意红框内容,需要我们新创建的数据库