[英]Query a Google cloud SQL instance in Node.js from a GKE pod with cloud sql proxy running as sidecar
[英]GKE OFBiz pod not connecting to Google Cloud SQL database
按照本教程将 OFBiz 连接到 MySQL 数据库。
我正在尝试使用持久存储创建一个 OFBiz 部署,其中新的 Pod 将从 MySQL 存储和检索数据。
Dockerfile 用于 OFBiz 吊舱
FROM openjdk:8
RUN apt-get update && \
apt-get install -y gradle unzip wget vim
RUN wget https://downloads.apache.org/ofbiz/apache-ofbiz-17.12.05.zip && \
unzip apache-ofbiz-17.12.05
WORKDIR apache-ofbiz-17.12.05
RUN gradle wrapper && \
./gradlew cleanAll loadAll
# Allowing URL $URL
RUN sed -i -e 's/host-headers-allowed=/host-headers-allowed=$URL,/g' /apache-ofbiz-17.12.05/framework/security/config/security.properties
COPY entityengine.xml /apache-ofbiz-17.12.05/framework/entity/config/
CMD ["/apache-ofbiz-17.12.05/gradlew", "ofbiz"]
我在 GCP 上使用 OFBiz 将所有内容托管在 GKE 上运行的 pod 中,并使用 Google Cloud SQL 作为托管 MySQL 服务。 我在 34.75.32.160 使用公共 IP 设置了 Cloud SQL。
初步 SQL 命令在启动 OFBiz 之前,我在我的数据库上运行了以下命令。
create database ofbiz;
create database ofbizolap;
create database ofbiztenant;
use mysql;
select database();
create user ofbiz@localhost;
create user ofbizolap@localhost;
create user ofbiztenant@localhost;
update user set password=PASSWORD("FAKEPASSWORD") where User='ofbiz';
update user set password=PASSWORD("FAKEPASSWORD") where User='ofbizolap';
update user set password=PASSWORD("FAKEPASSWORD") where User='ofbiztenant';
grant all privileges on *.* to 'ofbiz'@localhost identified by 'ofbiz';
grant all privileges on *.* to 'ofbizolap'@localhost identified by 'ofbizolap';
grant all privileges on *.* to 'ofbiztenant'@localhost identified by 'ofbiztenant';
使用entityengine.xml
配置entityengine.xml
数据源声明我声明了三个不同的数据源localmysql
、 localmysqlolap
和localmysqltenant
,每个都使用 JDBC 连接到我的云 SQL 服务器。
<datasource name="localmysql"
helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO"
field-type-name="mysql"
check-on-start="true"
add-missing-on-start="true"
check-pks-on-start="false"
use-foreign-keys="true"
join-style="ansi-no-parenthesis"
alias-view-columns="false"
drop-fk-use-foreign-key-keyword="true"
table-type="InnoDB"
character-set="utf8"
collate="utf8_general_ci">
<read-data reader-name="tenant"/>
<read-data reader-name="seed"/>
<read-data reader-name="seed-initial"/>
<read-data reader-name="demo"/>
<read-data reader-name="ext"/>
<read-data reader-name="ext-test"/>
<read-data reader-name="ext-demo"/>
<inline-jdbc
jdbc-driver="com.mysql.jdbc.Driver"
jdbc-uri="jdbc:mysql://34.75.32.160/ofbiz?autoReconnect=true&characterEncoding=UTF-8"
jdbc-username="ofbiz"
jdbc-password="<password>"
isolation-level="ReadCommitted"
pool-minsize="2"
pool-maxsize="250"
time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL
and had to set it to -1 in order to avoid this issue.
For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html-->
<!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> -->
</datasource>
<datasource name="localmysqlolap"
helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO"
field-type-name="mysql"
check-on-start="true"
add-missing-on-start="true"
check-pks-on-start="false"
use-foreign-keys="true"
join-style="ansi-no-parenthesis"
alias-view-columns="false"
drop-fk-use-foreign-key-keyword="true"
table-type="InnoDB"
character-set="utf8"
collate="utf8_general_ci">
<read-data reader-name="tenant"/>
<read-data reader-name="seed"/>
<read-data reader-name="seed-initial"/>
<read-data reader-name="demo"/>
<read-data reader-name="ext"/>
<read-data reader-name="ext-test"/>
<read-data reader-name="ext-demo"/>
<inline-jdbc
jdbc-driver="com.mysql.jdbc.Driver"
jdbc-uri="jdbc:mysql://34.75.32.160/ofbizolap?autoReconnect=true&characterEncoding=UTF-8"
jdbc-username="ofbizolap"
jdbc-password="<password>"
isolation-level="ReadCommitted"
pool-minsize="2"
pool-maxsize="250"
time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL
and had to set it to -1 in order to avoid this issue.
For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html-->
<!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> -->
</datasource>
<datasource name="localmysqltenant"
helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO"
field-type-name="mysql"
check-on-start="true"
add-missing-on-start="true"
check-pks-on-start="false"
use-foreign-keys="true"
join-style="ansi-no-parenthesis"
alias-view-columns="false"
drop-fk-use-foreign-key-keyword="true"
table-type="InnoDB"
character-set="utf8"
collate="utf8_general_ci">
<read-data reader-name="tenant"/>
<read-data reader-name="seed"/>
<read-data reader-name="seed-initial"/>
<read-data reader-name="demo"/>
<read-data reader-name="ext"/>
<read-data reader-name="ext-test"/>
<read-data reader-name="ext-demo"/>
<inline-jdbc
jdbc-driver="com.mysql.jdbc.Driver"
jdbc-uri="jdbc:mysql://34.75.32.160/ofbiztenant?autoReconnect=true&characterEncoding=UTF-8"
jdbc-username="ofbiztenant"
jdbc-password="<password>"
isolation-level="ReadCommitted"
pool-minsize="2"
pool-maxsize="250"
time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL
and had to set it to -1 in order to avoid this issue.
For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html-->
<!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> -->
</datasource>
委托者委托者告诉 OFBiz 哪个数据源用于哪些功能(在这种情况下:功能是正常的、olap 和租户)。 我们可以运行 OFBiz 的不同方式有一个条目: default
、 default-no-eca
和test
。
我在这里设置它以使用我在上面定义的 MySQL 数据源。
<delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
<group-map group-name="org.apache.ofbiz" datasource-name="localmysql"/>
<group-map group-name="org.apache.ofbiz.olap" datasource-name="localmysqlolap"/>
<group-map group-name="org.apache.ofbiz.tenant" datasource-name="localsqltenant"/>
</delegator>
<!-- May be used when you create a service that manages many data for massive imports, this for performance reason or to escape functional cases -->
<delegator name="default-no-eca" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" entity-eca-enabled="false" distributed-cache-clear-enabled="false">
<group-map group-name="org.apache.ofbiz" datasource-name="localmysql"/>
<group-map group-name="org.apache.ofbiz.olap" datasource-name="localmysqlolap"/>
<group-map group-name="org.apache.ofbiz.tenant" datasource-name="localmysqltenant"/>
</delegator>
<!-- Be sure that your default delegator (or the one you use) uses the same datasource for test. You must run "gradlew loadAll" before running "gradlew testIntegration" -->
<delegator name="test" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main">
<group-map group-name="org.apache.ofbiz" datasource-name="localmysql"/>
<group-map group-name="org.apache.ofbiz.olap" datasource-name="localmysqlolap"/>
<group-map group-name="org.apache.ofbiz.tenant" datasource-name="localmysqltenant"/>
</delegator>
错误当我使用此配置运行 OFBiz 时,我收到以下HTTP 500
错误:
java.lang.IllegalArgumentException: Could not get next sequenced ID for sequence name: Visit
org.apache.ofbiz.entity.GenericDelegator.getNextSeqId(GenericDelegator.java:2280)
org.apache.ofbiz.entity.GenericDelegator.getNextSeqId(GenericDelegator.java:2268)
org.apache.ofbiz.entity.GenericEntity.setNextSeqId(GenericEntity.java:657)
org.apache.ofbiz.entity.GenericDelegator.createSetNextSeqId(GenericDelegator.java:771)
org.apache.ofbiz.webapp.stats.VisitHandler.getVisit(VisitHandler.java:187)
org.apache.ofbiz.webapp.stats.VisitHandler.getVisitId(VisitHandler.java:100)
org.apache.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:201)
javax.servlet.http.HttpServlet.service(HttpServlet.java:686)
javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.ofbiz.webapp.control.SameSiteFilter.doFilter(SameSiteFilter.java:44)
org.apache.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:191)
org.apache.ofbiz.webapp.control.ControlFilter.doFilter(ControlFilter.java:157)
org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
Kubernetes 错误日志使用 kubectl logs $POD,这是显示的错误之一。 所有错误似乎都与 jdbc 驱动程序有关。
2021-03-27 23:33:50,408 |OFBiz-JobPoller |DBCPConnectionFactory |E| null
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[?:1.8.0_282]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_282]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_282]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_282]
at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_282]
at org.apache.ofbiz.entity.connection.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:90) [ofbiz.jar:?]
at org.apache.ofbiz.entity.transaction.GeronimoTransactionFactory.getConnection(GeronimoTransactionFactory.java:79) [ofbiz.jar:?]
at org.apache.ofbiz.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:261) [ofbiz.jar:?]
at org.apache.ofbiz.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:367) [ofbiz.jar:?]
at org.apache.ofbiz.entity.datasource.GenericDAO.selectCountByCondition(GenericDAO.java:1049) [ofbiz.jar:?]
at org.apache.ofbiz.entity.datasource.GenericHelperDAO.findCountByCondition(GenericHelperDAO.java:157) [ofbiz.jar:?]
at org.apache.ofbiz.entity.GenericDelegator.findCountByCondition(GenericDelegator.java:1694) [ofbiz.jar:?]
at org.apache.ofbiz.entity.GenericDelegator.findCountByCondition(GenericDelegator.java:1653) [ofbiz.jar:?]
at org.apache.ofbiz.service.job.JobManager.isAvailable(JobManager.java:154) [ofbiz.jar:?]
at org.apache.ofbiz.service.job.JobPoller$JobManagerPoller.run(JobPoller.java:223) [ofbiz.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_282]```
${ofbiz install dir}/framework/entity/lib/jdbc
; 在那里更换旧的或不正确的驱动程序版本
JDBC 驱动程序用于 MySQL(连接器/J):https://www.Z81C3B080DAD54BFor/5EZEZ.com/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.