我正在symmetricds上部署google container engine,所以我已经建立了symmetricds war文件并创建了docker tomcat图像,如下所示:-

FROM tomcat
ENV JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1109 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
ENV CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=1109 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

ADD ./symmetric-ds.war /usr/local/tomcat/webapps/
ADD ./mysql-connector-java-5.1.30.jar /usr/local/tomcat/lib/
COPY ./context.xml /usr/local/tomcat/conf/context.xml
COPY ./server.xml /usr/local/tomcat/conf/server.xml
COPY ./tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml

RUN sh -c 'touch /usr/local/tomcat/webapps/symmetric-ds.war'
VOLUME /usr/local/tomcat/webapps/
EXPOSE 8080 1109

之后,我将其推送到存储库,并使用kubernetes对其进行部署。
我的kubernetes yml文件如下:-
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: symserver
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: symserver
    spec:
      containers:
      - name: symserver
        image: symserver:v1
        ports:
        - containerPort: 8080
        - containerPort: 1109
---
apiVersion: v1
kind: Service
metadata:
  name: symserver
spec:
  selector:
    app: symserver
  type: LoadBalancer
  ports:
  - port: 8080
  - port: 1109

我在寻找解决方案的两个问题:-
  • 由于只读取docker图像,因此我固定了symmetricds.properties(它将成为war文件的一部分,而war文件位于tomcat内,并且我将tomcat图像称为symserverdocker)定义的任何属性都是固定的,并且只读的。喜欢

    sync.url = http:// $(主机名):8080 / symmtric-ds / sync / $(engineName)

  • 当我将其部署到Google Cloud时,我会获得用于Pod和服务外部链接的不同IP。那么如何解决这个问题呢?因为我必须在symmetricds.properties文件中设置此ip,以便我的其他商店节点可以连接到它。当我重新启动服务器时,它“对称”将再次从文件中提取新的IP或相同的IP。
  • 在docker和JMX的情况下如何使用kubernetes,我已在构建文件中添加了JMX选项,但以某种方式我无法使用jconsole进行连接。我已使用端口转发命令将端口1109暴露给本地计算机。
  • 最佳答案

    symmetricds.properties文件必须打包在war文件之外,然后在启动服务器之前进行操作,以便可以使用具体值替换占位符,或者使用${env.variable.value}表示法并尝试查看Spring是否用环境变量替换了它们

    要外部化文件symmetricds.properties,请将此部分添加到文件WEB-INF\web.xml

    <context-param>
        <param-name>multiServerMode</param-name>
        <param-value>true</param-value>
    </context-param>
    

    将文件存储在文件系统中的目录中,假设为/opt/symm/并将java系统属性symmetric.engines.dir设置为目录路径的值

    10-06 04:34