Постановка задачи -> Я развернул janusgraph на kubernetes с хранилищем как cassandra с использованием рулевой диаграммы. Я получаю сообщение об ошибке: График [graph], настроенный в [conf / gremlin-server / janusgraph.properties], не может быть создан и не будет доступен в Gremlin Server Трассировка стека:
java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory]
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:82)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:70)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:104)
at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.lambda$new$0(DefaultGraphManager.java:57)
at java.util.LinkedHashMap$LinkedEntrySet.forEach(LinkedHashMap.java:671)
at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.<init>(DefaultGraphManager.java:55)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:110)
at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:89)
at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:110)
at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:354)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:78)
... 13 more
Caused by: java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.cql.CQLStoreManager
at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:69)
at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:477)
at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:409)
at org.janusgraph.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1376)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:164)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:133)
at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:113)
... 18 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:58)
... 24 more
**Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: cassandra-0:9042 (com.datastax.driver.core.exceptions.TransportException: [cassandra-0:9042] Cannot connect))**
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:233)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1483)
at com.datastax.driver.core.Cluster.init(Cluster.java:159)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:330)
at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:305)
at com.datastax.driver.core.Cluster.connect(Cluster.java:247)
at org.janusgraph.diskstorage.cql.CQLStoreManager.initializeSession(CQLStoreManager.java:265)
at org.janusgraph.diskstorage.cql.CQLStoreManager.<init>(CQLStoreManager.java:149)
... 29 more
Сведения о настройке среды ->
Развернутая Cassandra в качестве службы с сохранением состояния на kubernetes и она работает и работает
Состояние модуля Cassandra
[root@svpod7mgmt002 cassandra]# kubectl get pods -l app=cassandra -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cassandra-0 1/1 Running 0 144m 10.233.120.212 bay10 <none> <none>
cassandra-1 1/1 Running 0 143m 10.233.85.119 bay7 <none> <none>
Состояние звонка Кассандры
root@cassandra-0:/# nodetool status
Datacenter: DC1-K8Demo
======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.233.120.146 104.42 KiB 32 100.0% 2b9e4f04-891d-46b1-ab2d-900d88b24739 Rack1-K8Demo
UN 10.233.85.116 94.98 KiB 32 100.0% c6d1b6f1-1855-4161-9875-997f56bd53fe Rack1-K8Demo
Включен порт 9042 и 9160 на cassandra-statefulset, а также служба без заголовка
containers:
- name: cassandra
image: gcr.io/google-samples/cassandra:v11
imagePullPolicy: IfNotPresent
ports:
- containerPort: 7000
name: intra-node
- containerPort: 7001
name: tls-intra-node
- containerPort: 7199
name: jmx
- containerPort: 9042
name: cql
- containerPort: 9160
name: thrift
[root@svpod7mgmt002 cassandra]# kubectl get ep cassandra
NAME ENDPOINTS AGE
cassandra 10.233.120.146:9160,10.233.85.116:9160,10.233.120.146:9042 + 1 more... 2d2h
Подключение к кластеру Cassandra
Connect to Cassandra cluster
root@cassandra-0:/# cqlsh
Connected to K8Demo at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
Таблица значений Helm.yaml для Janusgraph
# Default values for JanusGraph chart.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
image:
repository: gcr.io/cloud-solutions-images/janusgraph
tag: v2
pullPolicy: IfNotPresent
replicaCount: 1
## set any pod specific resource requests here
resources: {}
extraEnvs: {}
service:
type: LoadBalancer # Change to LoadBalancer if you plan to access JanusGraph outside k8s cluster
port: 8182
serviceAnnotations:
# the following line is ignored unless unless using a LoadBalancer with GCP
# cloud.google.com/load-balancer-type: "Internal"
elasticsearch:
deploy: true # change to true if you want to deploy Elasticsearch as a requirement along with this chart
rbac:
create: true # required for kubernetes >1.7
properties:
## use this section to add or adjust JanusGraph properties as needed
## all uncommented values in this section will be placed in the janusgraph.properties file
storage.backend: cql
storage.directory: /db/cassandra
storage.hostname: cassandra-0
## when using local storage and indexing, choose whether to persist day
persistence:
enabled: true # set to false if you are testing and do not want to persist data
path: /db
accessMode: ReadWriteOnce
size: 10Gi
existingClaim:
storageClass: cassandra-local-storage
## To make adjustments to janusgraph.properties and gremlin-server.yaml, provide a
## custom ConfigMap in your k8s cluster (using the helm created ConfigMap as a base).
configMapOverrideName: ""