neo4j 节点显示名称_neo4j 在kubernetes实践
本文结合StatefulSet,Deployment,PVC等技术来实现neo4j分布式搭建主节点采用StatefullSet部署kubectl create -f neo4j-master.yaml -n neo4japiVersion: v1kind: PersistentVolumemetadata:name: task-pv-volumelabels:type: ...
·
本文结合StatefulSet,Deployment,PVC等技术来实现neo4j分布式搭建
主节点采用StatefullSet部署
kubectl create -f neo4j-master.yaml -n neo4j
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
hostPath:
path: /Users/work/code/sample/data/neo4j"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: neo4j-core
namespace: neo4j
labels:
app: neo4j-core
spec:
replicas: 2
selector:
matchLabels:
app: neo4j-core
serviceName: neo4j-core
template:
metadata:
labels:
app: neo4j-core
spec:
containers:
- name: neo4j-core
image: neo4j:3.5.5-enterprise # 官方镜像,3.5.5企业版
imagePullPolicy: IfNotPresent
env: # 这里通过env,配置镜像环境参数,这是因为此镜像是通过这样来进行配置参数的
- name: NEO4J_ACCEPT_LICENSE_AGREEMENT # 接受证书协议,必须的
value: "yes"
- name: NEO4J_dbms_connectors_default__advertised__address # 指定自身pod的ip地址,默认为localhost,在集群中必须注明自身地址,这里直接用ip
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NEO4J_dbms_mode # 节点的模式,选择CORE,就是核心节点
value: "CORE"
- name: NEO4J_AUTH # 一定要自定义初始验证的用户名/密码
value: "neo4j/password"
- name: NEO4J_causal__clustering_minimum__core__cluster__size__at__formation
value: "2"
- name: NEO4J_causal__clustering_minimum__core__cluster__size__at__runtime
value: "2"
- name: NEO4J_causal__clustering_discovery__type # 默认集群发现方式为LIST,这里写不写都行
value: "LIST"
- name: NEO4J_causal__clustering_initial__discovery__members # 手动写明集群中所有成员的ip:port,5000端口为集群发现端口
value: "neo4j-core-0.neo4j-core.neo4j.svc.cluster.local:5000,neo4j-core-1.neo4j-core.neo4j.svc.cluster.local:5000"
- name: NEO4J_causal__clustering_discovery__advertised__address # 下面这三个必须定义,为节点自身的ip:port,相当于节点自身的名称,因为默认是会用自身hostname,但是在k8s中,无法单单通过hostname解析到ip地址,这样定义的自身地址会无法识别
value: $(NEO4J_dbms_connectors_default__advertised__address):5000
- name: NEO4J_causalClustering_transactionAdvertisedAddress
value: $(NEO4J_dbms_connectors_default__advertised__address):6000
- name: NEO4J_causalClustering_raftAdvertisedAddress
value: $(NEO4J_dbms_connectors_default__advertised__address):7000
volumeMounts:
- name: neo4j-core
mountPath: /data/neo4j
volumes:
- name: neo4j-core
persistentVolumeClaim:
claimName: task-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: neo4j-core
namespace: neo4j
spec:
selector:
app: neo4j-core
type: NodePort
ports:
- protocol: TCP
name: http
port: 7474
nodePort: 31474
targetPort: 7474
- protocol: TCP
name: blot
port: 7687
nodePort: 31687
targetPort: 7687
从节点采用的Deployment来部署
neo4j-master.yaml -f neo4j-slave.yaml neo4j-master.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: neorj-read-replica
namespace: neo4j
labels:
app: neorj-read-replica
spec:
replicas: 2
selector:
matchLabels:
app: neorj-read-replica
template:
metadata:
labels:
app: neorj-read-replica
spec:
containers:
- name: neorj-read-replica
image: neo4j:3.5.5-enterprise
imagePullPolicy: IfNotPresent
env:
- name: NEO4J_ACCEPT_LICENSE_AGREEMENT
value: "yes"
- name: NEO4J_dbms_connectors_default__advertised__address
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NEO4J_dbms_mode # 指定模式为只读节点模式
value: "READ_REPLICA"
- name: NEO4J_AUTH
value: "neo4j/password"
- name: NEO4J_causal__clustering_discovery__type
value: "LIST"
- name: NEO4J_causal__clustering_initial__discovery__members
value: "neo4j-core-0.neo4j-core.neo4j.svc.cluster.local:5000,neo4j-core-1.neo4j-core.neo4j.svc.cluster.local:5000"
---
apiVersion: v1
kind: Service
metadata:
name: neorj-read-replica
namespace: neo4j
spec:
selector:
app: neorj-read-replica
ports:
- protocol: TCP
port: 7687
targetPort: 7687
创建成功
测试 http://localhost:31474/browser/
CREATE (n:Person {name:'John'}) RETURN n
CREATE (n:Person {name:'Sally'}) RETURN n
CREATE (n:Person {name:'Steve'}) RETURN n
CREATE (n:Person {name:'Mike'}) RETURN n
CREATE (n:Person {name:'Liz'}) RETURN n
CREATE (n:Person {name:'Shawn'}) RETURN n
CREATE (n:Location {city:'Miami', state:'FL'})
CREATE (n:Location {city:'Boston', state:'MA'})
CREATE (n:Location {city:'Lynn', state:'MA'})
CREATE (n:Location {city:'Portland', state:'ME'})
CREATE (n:Location {city:'San Francisco', state:'CA'})
MATCH (a:Person {name:'Liz'}),
(b:Person {name:'Mike'})
MERGE (a)-[:FRIENDS]->(b)
查看效果
更多推荐
所有评论(0)