You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 2
Next »
Prerequisites:
Insights >= v10.5
Insights supports Neo4j (4.4.4) database for this functionality.
Install neo4j streams plugin in all database servers (i.e. master & replicas)
Configure & set up Kafka server.
Only Admin can access this functionality.
Steps to set up Kafka:
Step 1: Download Kafka.
Follow below steps & update the properties:
tar -xzf kafka_2.13-3.6.0.tgz
vi kafka_2.13-3.6.0/config/server.properties
#Properties
listeners=PLAINTEXT://0.0.0.0:9092
advertised.linsteners=PLAINTEXT://[Kafka_Server_IP]:9092
log.dirs=/tmp/kafka-logs
log.retention.hours=5
zookeeper.connect=[Kafka_Server_IP]:2181
Step 2: Start the zookeeper.
Step 3: Start the Kafka.
Step 4: To monitor Kafka, download the Kafka-UI image from docker hub.
For more info click here.
Keep the Master & Replica neo4j credentials same.
Steps to install neo4j streams plugin:
Step 1: Download the neo4j streams plugin.
Step 2: Create a streams.conf file inside $NEO4J_HOME/conf and add the below properties.
Kafka Properties
kafka.bootstrap.servers=[Kafka_Server_IP]:9092
kafka.acks=1
kafka.retries=2
kafka.batch.size=0
kafka.buffer.memory=33554432
kafka.reindex.batch.size=1000
kafka.session.timeout.ms=25000
kafka.connection.timeout.ms=20000
kafka.replication=1
kafka.linger.ms=1
kafka.transactional.id=
kafka.topic.discovery.polling.interval=300000
kafka.streams.log.compaction.strategy=delete
For Master Neo4j Server-
streams.source.topic.nodes.<TOPIC_NAME>=DATA{*}
streams.source.topic.relationships.<TOPIC_NAME>=BRANCH_HAS_COMMITS{*};BRANCH_HAS_PULL_REQUESTS{*};FILE_HAS_COMMITS{*}
streams.source.topic.relationships. insights-topic.key_strategy=all
streams.source.enabled=true
streams.sink.enabled=false
For Replica Neo4j Server-
kafka.group.id=replica1
streams.source.enabled=false
streams.sink.enabled=true
streams.sink.topic.cdc.schema=insights-topic
streams.sink.poll.interval=300
In Neo4j - CREATE INDEX on :DATA(uuid);
For more info click here.
App Server: On which Insights App is running.
Master Server: On which master Neo4j is running.
Replica Server: New server to scale master Neo4j.
Steps to set up SSH:
App Server:
Note: User should have root level access.
# Install netcat
sudo yum install -y nc
su – [user_name]
cd /home/[user_name]/.ssh
# IF THE USER DOESN'T HAVE PUBLIC_KEY (id_rsa.pub). CREATE IT USING BELOW keygen COMMAND ELSE IGNORE.
ssh-keygen -t rsa
cd .ssh/
# CREATE AN App_Server_key FILE & PASTE THE PUBLIC_KEY (id_rsa.pub)
App_Server_key >> authorized_keys
Replica Server:
# Install netcat
sudo yum install -y nc
# CREATE A REPLICA_USER
sudo useradd replica_user
# CREATE A REPLICA_GROUP
sudo groupadd replica_group
usermod -aG replica_group replica_user
su – replica_user
cd/home/[replica_user]
# TO CREATE REPLICA_USER PUBLIC_KEY (id_rsa.pub)
ssh-keygen -t rsa
cd .ssh/
# CREATE A Replica1_Server_key FILE & PASTE PUBLIC_KEY (id_rsa.pub)
cat [App_Server_Key] >> authorized_keys (Copy App Server key)
chmod 600 authorized_keys
exit
# PROVIDING ONLY SPECIFIC PERMISSIONS TO SPECIFIC DIRECTORY & FILE.
sudo chgrp -R replica_group /opt/NEO4J_HOME/neo4j-Insights/data
chmod -R g+rw /opt/NEO4J_HOME/neo4j-Insights/data
sudo chgrp replica_group /opt/NEO4J_HOME/neo4j-Insights/conf/streams.conf
chmod g+rw /opt/NEO4J_HOME/neo4j-Insights/conf/streams.conf
visudo
Cmnd_Alias CUSTOM_SERVICES = /sbin/service Neo4j stop, /sbin/service Neo4j start, /sbin/service Neo4j status
replica_user ALL=NOPASSWD:CUSTOM_SERVICES
Be cautious while doing below steps. This may lead to login issue.
Don’t forget to add master_user (user which you use to login) in AllowUsers.
sudo vi /etc/ssh/sshd_config
AllowUsers root ec2-user replica_user <master_user>
sudo systemctl restart sshd
Master Server:
# Install netcat
sudo yum install -y nc
# CREATE A REPLICA_USER
sudo useradd replica_user
# CREATE A REPLICA_GROUP
sudo groupadd replica_group
usermod -aG replica_group replica_user
su - replica_user
cd /home/[replica_user]/.ssh
# TO CREATE REPLICA_USER PUBLIC_KEY (id_rsa.pub)
ssh-keygen -t rsa
cd .ssh/
# CREATE A Replica1_Server_key FILE & PASTE PUBLIC_KEY (id_rsa.pub)
cat [Replica1_Server_key] >> authorized_keys (Copy Replica Server key)
cat [App_Server_Key] >> authorized_keys (Copy App Server key)
chmod 600 authorized_keys
exit
# PROVIDING ONLY SPECIFIC PERMISSIONS TO SPECIFIC DIRECTORY & FILE.
sudo chgrp replica_group /opt/NEO4J_HOME/neo4j-Insights/data
chmod g+r /opt/NEO4J_HOME/neo4j-Insights/data
sudo chgrp replica_group /opt/NEO4J_HOME/neo4j-Insights/conf/streams.conf
chmod g+rw /opt/NEO4J_HOME/neo4j-Insights/conf/streams.conf
visudo
Cmnd_Alias CUSTOM_SERVICES = /sbin/service Neo4j stop, /sbin/service Neo4j start, /sbin/service Neo4j status
replica_user ALL=NOPASSWD:CUSTOM_SERVICES
Be cautious while doing below steps. This may lead to login issue.
Don’t forget to add master_user (user which you use to login) in AllowUsers.
sudo vi /etc/ssh/sshd_config
AllowUsers root ec2-user replica_user <master_user>
sudo systemctl restart sshd
Step 1: Navigate to Neo4j Scaling screen click on the configure button to configure source & replica details as shown below.
Step 2: After configuring source & replica details, click on the save button to save the configuration. Wait for few minutes & refresh the front screen, replica details will get displayed.
Step 3: To see the status logs, click on the details button. It will display resync status logs as shown below.
Step 4: Once you get “Replica resynced successfully” message in resync status logs.
Step 5: To remove a replica, select that replica & click on the delete button. You can view the delete status log inside the additional details screen as shown below.
Step 6: To resync all replicas, click on the resync button. It will resync all replicas.