目录
SuperMap 云套件门户在11.0.1新增支持直接通过配环境变量方式去修改云套件iPortal库配置信息,相比于之前版本修改iportal.xml与iserver-system.xml配置文件的方式提供极大的便利,本文也是基于SuperMap iManager 11.0.1版本进行案例展示。
一、查看iPortal的配置持久化目录(iportalOPTs)
云套件默认是将iPortal的配置目录(iportalOPTs)做了持久化,查看其所在nfs路径指令如下:
# 查看云套件namespace中包含iportal-data的pvc数据
kubectl get pvc -n giscloudsuite | grep iportal-data
# 通过上一步获取pvc绑定的pv名称,去查询其pv信息中包含nfs挂载目录
kubectl get pv -n giscloudsuite -o yaml pvc-9d5149e9-5011-4b41-b98a-a8f2ed32db80 | grep "path: /" -A 1
注意:使用云套件安装的云套件其namespace默认是giscloudsuite,使用k8s imanager创建的云套件的namespace是icloud-native-x。
二、修改iportal monitor监控
因为iPortal监控数据不支持 postgresql,所以要在 mysql 切换为 postgresql 之前,把monitor监控数据存储修改为SQLITE数据库,即需要调整iportal-monitor.xml配置的MYSQL连接池数据,其待修改参数值如下:
1. 将 dbType 修改为 SQLITE
2. 将 driverClass 修改为 org.sqlite.JDBC
3. 将jdbcUrl 为
jdbc:sqlite:/opt/iportalOPTs/WEB-INF/iportaldata/monitor.db
4. 将 maxPoolSize 修改为 1
5. 将 initialPoolSize 修改为 1
6. 将 minPoolSize 修改为 0
7. 将 maxIdleTime 修改为 3000
8. 将 maxWait 修改为 300000
9. 注释掉 username 和 password
云套件默认将iportal-monitor监控数据存储在MYSQL数据库中,iportal-monitor.xml配置MYSQL数据库连接池如下:
<!-- MYSQL数据库连接池设置,监控数据存储-MYSQL数据库 -->
<dbType>MYSQL</dbType>
<driverClass>org.mariadb.jdbc.Driver</driverClass>
<jdbcUrl>jdbc:mysql://iportal-mysql:3306/monitor?useUnicode=true&characterEncoding=UTF-8</jdbcUrl>
<maxPoolSize>30</maxPoolSize>
<initialPoolSize>5</initialPoolSize>
<minPoolSize>5</minPoolSize>
<maxIdleTime>3000</maxIdleTime>
<maxWait>30000</maxWait>
<username>ENC@[5R2M9oluKst4cWFgNfQkXA..]</username>
<password>ENC@[WLSjKn42Xrpc3BwNy6seg-HozU7LriU3AM3jqU0uChU.]</password>
修改后monitor监控数据存储为 SQLITE数据库后,iportal-monitor.xml配置的数据库连接池设置如下:
<!-- SQLITE数据库连接池设置 -->
<dbType>SQLITE</dbType>
<driverClass>org.sqlite.JDBC</driverClass>
<!-- 连接至驱动的url,对于sqlite数据库文件路径,如果使用相对路径,则是相对于iPortal home的路径。-->
<jdbcUrl>jdbc:sqlite:./WEB-INF/iportaldata/monitor.db</jdbcUrl>
<maxPoolSize>1</maxPoolSize>
<initialPoolSize>1</initialPoolSize>
<minPoolSize>0</minPoolSize>
<maxIdleTime>3000</maxIdleTime>
<maxWait>30000</maxWait>
<!-- sqlite数据库用户名密码为空, 故注释掉 username 和 password -->
<!-- <username>ENC@[5R2M9oluKst4cWFgNfQkXA..]</username>-->
<!-- <password>ENC@[WLSjKn42Xrpc3BwNy6seg-HozU7LriU3AM3jqU0uChU.]</password>-->
三、修改iPortal数据库配置信息
3.1 修改iPortal门户数据库配置信息
DB_TYPE: 数据库类型
mysql/mariadb: MYSQL
postgresql: POSTGRESQL
DB_USERNAME: 用户名
DB_PASSWORD: 用户密码
DB_JDBC_URL: 存放门户数据的数据库连接地址
mysql/mariadb: jdbc:mysql://iportal-mysql:3306/iportal?useUnicode=true&characterEncoding=UTF-8
postgresql: jdbc:postgresql://localhost:5432/iportal?useUnicode=true&characterEncoding=UTF-8
3.2 修改iPortal安全数据库配置信息
SECURITY_DB_JDBC_URL: 安全信息数据库连接地址
mysql/mariadb: jdbc:mysql://iportal-mysql:3306/ispeco?useUnicode=true&characterEncoding=UTF-8
postgresql: jdbc:postgresql://localhost:5432/ispeco?useUnicode=true&characterEncoding=UTF-8
3.3 修改iPortal编排中容器启动时执行命令
因为已经要将iportal所需数据库修改成外部的PG数据库,对于iportal-mysql数据而言,为了减少不必要的额外资源开销,一般都会将其关闭掉,但是iportal编排中启动时容器指令中要先去连接iportal-mysql数据,且连接参数中的数据库账户信息也均来自于编排中环境变量,账户信息在前两步也已经进行了修改,故需要删除编排里面容器启动时执行命令中相关iportal-mysql的部分。删除iPortal编排中containers.args内容如下:
exec /opt/wait-for-mysql.sh iportal-mysql 3306 root $DB_PASSWORD
修改完成后iPortal编排如下
门户 & 安全数据库配置
删除启动指令中的mysql相关信息
四、修改iportal-proxy数据库配置信息
4.1 修改iportal-proxy门户数据库配置信息
DB_TYPE: 数据库类型
mysql/mariadb: MYSQL
postgresql: POSTGRESQL
DB_JDBC_URL: 存放门户数据的数据库连接地址
mysql/mariadb: jdbc:mysql://iportal-mysql:3306/iportal?useUnicode=true&characterEncoding=UTF-8
postgresql: jdbc:postgresql://localhost:5432/iportal?useUnicode=true&characterEncoding=UTF-8
4.2 修改iportal-proxy安全数据库配置信息
SECURITY_DB_JDBC_URL: 安全信息数据库连接地址
mysql/mariadb: jdbc:mysql://iportal-mysql:3306/ispeco?useUnicode=true&characterEncoding=UTF-8
postgresql: jdbc:postgresql://localhost:5432/ispeco?useUnicode=true&characterEncoding=UTF-8
4.3 修改iportal-proxy编排中容器启动时执行命令
因为已经要将iportal-proxy所需数据库修改成外部的PG数据库,对于iportal-mysql数据而言,为了减少不必要的额外资源开销,一般都会将其关闭掉,但是iportal-proxy编排中启动时容器指令中要先去连接iportal-mysql数据,且连接参数中的数据库账户信息也均来自于编排中环境变量,账户信息在前两步也已经进行了修改,故需要删除编排里面容器启动时执行命令中相关iportal-mysql的部分。删除iportal-proxy编排中containers.args内容如下:
nc -z -w 1 iportal-mysql 3306; result=$?; while [ $result != 0
]; do
echo 'wait for mysql sleep 5s';
sleep 5s;
nc -z -w 1 iportal-mysql 3306;
result=$?;
done; echo "mysql is ok";
修改完成后iportal-proxy编排如下
门户 & 安全数据库配置
删除启动指令中的mysql相关信息
至此,整个将云套件iPortal默认门户和安全数据库替换成外部POSTGRESQL数据库工作已完成。