2016-10-10 34 views
2

我部署上google container enginesymmetricds,所以我必須建立symmetricdswar文件,並創建dockertomcat圖像象下面這樣: -symmetricds在泊塢窗和Kubernetes爲谷歌集裝箱引擎部署

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來部署它。 我kubernetesyml文件如下: -

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圖像是隻讀的任何屬性我symmetricds.properties定義(這將是戰爭文件和戰爭文件的一部分在tomcat之內,並且我將命名爲tomcat圖像爲docker)文件是固定的和只讀的。像

    sync.url = HTTP:// $(主機名):8080/symmtric-DS /同步/ $(引擎名)

當我部署到Google雲我得到莢不同的ip和服務外部鏈接。那麼如何解決這個問題呢?因爲我必須在symmetricds.properties文件中設置此ip,以便我的其他存儲節點可以連接到它。當我重新啓動服務器時,它'對稱'將再次從文件中獲取新的IP或相同的IP。

  • 如何在泊塢窗和kubernetes的情況下使用JMX,我已經添加在構建文件JMX選項,但不知何故,我不能夠使用jconsole將其連接。我使用端口轉發命令將端口1109暴露給本地機器。
  • 回答

    2

    symmetricds.properties的文件已被打包war文件外,然後操縱啓動服務器,因此佔位符可以用具體的數值進行更換或使用符號${env.variable.value}和嘗試看是否春與環境變量替換它們之前

    外部化文件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設置爲目錄路徑的值

    +0

    因爲我正在使用谷歌雲與kubernetes我不知道如何才能獲得IP地址前的豆莢或服務啓動?我不知道在開始服務之前是否有辦法解決這個問題。 我如何將symmetricds.properties指向戰爭的一面?這個怎麼做 ? 你能爲我指出任何文件嗎? –

    +0

    我已經嘗試過,但沒有工作。我已經用'symadmin -p symmtricds.properties create-war symmetric-ds.war'建立了戰爭,並把它放在tomcat中,並通過設置環境開始。它給出'AbstractCommandLauncher - 無法加載./conf/symmetric-server.properties。文件不存在.' 及其從用於生成war文件的文件中拾取數據而不是存在於環境變量位置中的文件,我錯過了什麼。我已啓用設置網絡。xml以及 –

    +0

    也許你應該建立你自己的maven戰爭項目來正確地構建它 –

    相關問題