Docker 上的 symmetricds 和用于 Google 容器引擎部署的 Kubernetes
symmetricds on Docker and Kubernetes for Google Container Engine Deployment
我正在 google container engine
上部署 symmetricds
,所以我构建了 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
图像命名为 symserver
for docker
)文件是固定的且只读的。喜欢
sync.url=http://$(hostName):8080/symmtric-ds/sync/$(engineName)
当我将它部署到 google 云时,我为 pods 和外部服务 link 获得了不同的 IP。那么如何解决这个问题呢?因为我必须在 symmetricds.properties 文件中设置此 ip,以便我的其他商店节点可以连接到它。当我重新启动服务器时,它 'symmetricds' 将再次从文件中获取新的 ip 或相同的 ip。
- 如何在 docker 和
kubernetes
的情况下使用 JMX
,我在构建文件中添加了 JMX
选项,但不知何故我无法连接它jconsole
。我已经使用 port forward 命令将端口 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
设置为目录路径的值
我正在 google container engine
上部署 symmetricds
,所以我构建了 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
图像命名为symserver
fordocker
)文件是固定的且只读的。喜欢sync.url=http://$(hostName):8080/symmtric-ds/sync/$(engineName)
当我将它部署到 google 云时,我为 pods 和外部服务 link 获得了不同的 IP。那么如何解决这个问题呢?因为我必须在 symmetricds.properties 文件中设置此 ip,以便我的其他商店节点可以连接到它。当我重新启动服务器时,它 'symmetricds' 将再次从文件中获取新的 ip 或相同的 ip。
- 如何在 docker 和
kubernetes
的情况下使用JMX
,我在构建文件中添加了JMX
选项,但不知何故我无法连接它jconsole
。我已经使用 port forward 命令将端口 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
设置为目录路径的值