簡體   English   中英

在使用Kubernetes的OrientDB集群中未發現節點

[英]Nodes are not discovered in OrientDB cluster with Kubernetes

我使用本指南在Kubernetes中設置OrientDB集群。 但是,似乎每個Pod上的每個節點都創建自己的群集,而不是加入共享的群集。 因此,每個Pod上的日志顯示如下消息:

Members [1] {
    Member [pod-ip]:5701 - generated id
}

什么會引起這樣的問題?

我的orientdb-server-config文件看起來是這樣的:

<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
     <parameters>
          <parameter value="true" name="enabled"/>
          <parameter value="orientdb/config/default-distributed-db-config.json" name="configuration.db.default"/>
          <parameter value="orientdb/config/hazelcast.xml" name="configuration.hazelcast"/>
          <parameter name="nodeName" value="$pod_dns" />
     </parameters>
</handler>

我的hazelcast.xml文件如下所示(pod_dns是存儲在env中的pod的名稱):

 </network>
    <properties>
        <property name="hazelcast.discovery.enabled">true</property>
    </properties>
    <network>
        <join>
            <multicast enabled="false"/>
            <tcp-ip enabled="false"/>
            <discovery-strategies>
                <discovery-strategy enabled="true"
                                    class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">
                    <properties>
                        <property name="service-dns">pod_dns.default.svc.cluster.local</property>
                        <property name="service-dns-timeout">10</property>
                    </properties>
                </discovery-strategy>
            </discovery-strategies>
        </join>
    </network>

Kubernetes StatefulSet。 將安裝並執行用於hazelcast和orientdb-server-config文件的Bash腳本(用於根據每個Pod上的env值進行設置更新):

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: orientdbservice
spec:
  serviceName: orientdbservice
  replicas: 3
  podManagementPolicy: Parallel
  selector:
    matchLabels:
      service: orientdb
      type: container-deployment
  template:
    metadata:
      labels:
        service: orientdb
        type: container-deployment
    spec:
      containers:
      - name: orientdbservice
        image: orientdb:2.2.36
        command: ["/bin/sh","-c", " cp /configs/* /orientdb/config/ ; chmod +x /orientdb/config/hazelcast_template.sh ; chmod +x /orientdb/config/server_config_template.sh ; sh /orientdb/config/hazelcast_template.sh ; sh /orientdb/config/server_config_template.sh ; /orientdb/bin/server.sh -Ddistributed=true" ]
        env:
        - name: ORIENTDB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: orientdb-password
              key: password.txt
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        ports:
        - containerPort: 2424
          name: port-binary
        - containerPort: 2480
          name: port-http
        - containerPort: 5701
          name: hazelcast
        volumeMounts:
        - name: config
          mountPath: /orientdb/config
        - name: orientdb-config-template-hazelcast
          mountPath: /configs/hazelcast_template.sh
          subPath: hazelcast_template.sh
        - name: orientdb-config-template-server
          mountPath: /configs/server_config_template.sh
          subPath: server_config_template.sh
        - name: orientdb-config-distributed
          mountPath: /configs/default-distributed-db-config.json
          subPath: default-distributed-db-config.json
        - name: orientdb-databases
          mountPath: /orientdb/databases
        - name: orientdb-backup
          mountPath: /orientdb/backup
      volumes:
      - name: config
        emptyDir: {}
      - name: orientdb-config-template-hazelcast
        configMap:
          name: orientdb-configmap-template-hazelcast
      - name: orientdb-config-template-server
        configMap:
          name: orientdb-configmap-template-server
      - name: orientdb-config-distributed
        configMap:
          name: orientdb-configmap-distributed
  volumeClaimTemplates:
  - metadata:
      name: orientdb-databases
      labels:
        service: orientdb
        type: pv-claim
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 20Gi
  - metadata:
      name: orientdb-backup
      labels:
        service: orientdb
        type: pv-claim
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi

問題出在Hazelcast0Kubernetes插件配置中。 首先,必須將OrientDB版本更新為最新版本-具有嵌入式最新的Hazelcast版本的3.0.10。 另外,我已經將hazelcast-kubernetes.jar依賴文件直接安裝到/ orientdb / lib文件夾中,並且開始正常工作。 問題不在於配置文件,而是與OrientDB的依賴項設置有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM