tomcat - Docker 和 Kubernetes 上的 symmetryds 用于 Google 容器引擎部署

标签 tomcat docker kubernetes google-cloud-platform symmetricds

我正在 google 容器引擎 上部署 symmetryds,因此我构建了 symmetryds 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

我有两个问题正在寻找解决方案:-

  1. 由于docker图像仅读取我在symmetryds.properties中定义的任何属性(这将是war文件的一部分,并且war文件位于 >tomcat 和我将 tomcat 图像命名为 dockersymserver )文件是固定且只读的。就像

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

当我将其部署到谷歌云时,我获得了不同的 Pod 和服务外部链接 IP。那么如何解决这个问题呢?因为我必须在 symmetryds.properties 文件中设置此 IP,以便我的其他存储节点可以连接到它。当我重新启动服务器时,它“对称”将再次从文件中获取新的 IP 或相同的 IP。

  • 如何在 docker 和 kubernetes 的情况下使用 JMX,我在构建文件中添加了 JMX 选项,但不知何故我无法使用jconsole连接它。我已使用端口转发命令将端口 1109 暴露给本地计算机。
  • 最佳答案

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

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

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

    将文件存储在文件系统上的某个目录中,例如 /opt/symm/ 并将 java 系统属性 symmetry.engines.dir 设置为以下值目录路径

    关于tomcat - Docker 和 Kubernetes 上的 symmetryds 用于 Google 容器引擎部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961545/

    相关文章:

    tomcat - 使用 pem 文件在 tomcat 上启用 SSL

    docker - 在 Docker 中从 Github 运行 go 文件

    c - 在 docker 容器内使用 membarrier

    kubernetes - 使用 kubectl 查找有关 Kubernetes master 的详细信息的命令是什么?

    kubernetes - 在 Kubernetes 中,可以暂时耗尽一个节点来扩展部署吗?

    java - 查找请求的服务器主机 IP?

    java - 如何在 JBoss AS 5.1.0.GA 中配置 JDBC 数据源?

    java - 使用端口转发调试在 Vagrant 中运行的 Tomcat

    php - GitLab PHP docker 镜像 - 您的系统中缺少请求的 PHP 扩展 gd

    kubernetes - k8s中admission webhook和controller manager的优先级是什么?