SAXParseException в кластере OrientDB Kubernetes - PullRequest
0 голосов
/ 07 ноября 2018

У меня база данных OrientDB настроена в распределенном режиме с Kubernetes. Я определил PersistentVolumeClaims в StatefulSet таким образом:

volumeClaimTemplates:
  - metadata:
      name: orientdb-databases
      labels:
        service: orientdb
        type: pv-claim
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 40Gi
  - metadata:
      name: orientdb-backup
      labels:
        service: orientdb
        type: pv-claim
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 20Gi

Когда я не определяю PersistentVolumes, они создаются с общим именем, и кластер работает как ожидалось. Однако, когда я определяю свои собственные модули PersistentVolumes, происходит сбой, и я получаю такие ошибки:

[org.xml.sax.SAXParseException; systemId: file:/orientdb/config/orientdb-server-config.xml; lineNumber: 89; columnNumber: 22; The processing instruction target matching "[xX][mM][lL]" is not allowed.]

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<orient-server>
    <network>
        <protocols>
            <protocol implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" name="binary"/>
        </protocols>
        <listeners>
            <listener protocol="binary" socket="default" port-range="2424-2430" ip-address="127.0.0.1"/>
        </listeners>
    </network>
    <storages/>
    <security>
        <users/>
        <resources/>
    </security>
    <isAfterFirstTime>false</isAfterFirstTime>
</orient-server>

Я проверил свой файл orient-server-config.xml и вижу причину такого поведения. Я создаю этот файл конфигурации с помощью скрипта bash:

  </network>
    <storages>
    </storages>
    <users>
    </users>
    <properties>
        <entry value=\"1\" name=\"db.pool.min\"/>
        <entry value=\"50\" name=\"db.pool.max\"/>
        <entry value=\"true\" name=\"profiler.enabled\"/>
    </properties>
</orient-server>

И вот как это выглядит на стручке:

    <storages/>                                                                               
    <users>                                                                                   
        <user resources="*" password="{password}" name="root"/>
        <user resources="connect,server.listDatabases,server.dblist" password="{password}" name="guest"/>
    </users>                                                                                  
    <properties>                                                                              
        <entry value="1" name="db.pool.min"/>                                                 
        <entry value="50" name="db.pool.max"/>                                                
        <entry value="true" name="profiler.enabled"/>                                         
    </properties>                                                                             
    <isAfterFirstTime>true</isAfterFirstTime>                                                 
</orient-server>

Как я могу исправить эту ошибку?

Вот как я определил PersistentVolumes. Поскольку у меня есть 3 узла и 2 тома для каждого из них, имя тома и имя каталога пути к хосту изменяется только на число (от 1 до 6):

 apiVersion: v1
kind: PersistentVolume
metadata:
  name: "pv-db-1"
  labels:
    service: orientdb
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: "40Gi"
  accessModes:
  - "ReadWriteOnce"
  hostPath:
    path: /orientdb-volumes/databases-1
  persistentVolumeReclaimPolicy: Delete
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: "pv-backup-1"
  labels:
    service: orientdb
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: "20Gi"
  accessModes:
  - "ReadWriteOnce"
  hostPath:
    path: /orientdb-volumes/databases-2
  persistentVolumeReclaimPolicy: Delete
...