Neo4j 3.5.1 available on Azure Marketplace (single instance and cluster)

Hi everybody,

Neo4j 3.5.1 is now available on Azure Marketplace.

This is a self-managed option, meaning that if you launch Neo4j using these templates, you'll have new VMs spun up within your Azure account, and you'll be granted administrative access to those VMs, so you'll have the ability to add any plugins or change any aspect of configuration you'd like.

Documentation

We've provided on our site walk-throughs of how to use the marketplace entries here:

As with our other cloud platforms (AWS and Google Cloud ), you can read about how the virtual machines work and can be configured in this article, Neo4j Cloud VMs .

Seems to be some issue with the Azure Marketplace template. Once the VM is up, Neo4j isn't starting. I get this when I SSH and check the status:

● neo4j.service - Neo4j Graph Database
Loaded: loaded (/etc/systemd/system/neo4j.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-02-14 22:49:34 UTC; 20s ago
Main PID: 28081 (pre-neo4j.sh)
Tasks: 58
Memory: 543.8M
CPU: 49.226s
CGroup: /system.slice/neo4j.service
├─28081 /bin/bash /etc/neo4j/pre-neo4j.sh
└─28106 /usr/bin/java -cp /var/lib/neo4j/plugins:/etc/neo4j:/usr/share/neo4j/lib/:/var/lib/neo4j/plugins/ -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+Unlo

Feb 14 22:49:34 vmNeo4jDev pre-neo4j.sh[28081]: run: /var/run/neo4j
Feb 14 22:49:34 vmNeo4jDev pre-neo4j.sh[28081]: Starting Neo4j.
Feb 14 22:49:36 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:36.937+0000 WARN ha.pull_interval is deprecated.
Feb 14 22:49:36 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:36.979+0000 INFO ======== Neo4j 3.5.1 ========
Feb 14 22:49:36 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:36.988+0000 INFO Starting...
Feb 14 22:49:39 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:39.141+0000 INFO Initiating metrics...
Feb 14 22:49:51 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:51.477+0000 INFO Sending metrics to CSV file at /var/lib/neo4j/metrics
Feb 14 22:49:52 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:52.135+0000 INFO Bolt enabled on 0.0.0.0:7687.
Feb 14 22:49:54 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:54.507+0000 WARN Server thread metrics not available (missing neo4j.server.threads.jetty.all)
Feb 14 22:49:54 vmNeo4jDev pre-neo4j.sh[28081]: 2019-02-14 22:49:54.508+0000 WARN Server thread metrics not available (missing neo4j.server.threads.jetty.idle)

Happy to pull logs or whatever you need for more info.

Logs led me to lot of warnings, like:

2-20 20:28:57.595+0000 WARN [o.n.k.i.p.Procedures] apoc.cluster.graph is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.

2018-12-20 20:28:57.708+0000 WARN [o.n.k.i.p.Procedures] apoc.static.getAll is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.

2018-12-20 20:28:57.708+0000 WARN [o.n.k.i.p.Procedures] apoc.static.get is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.

2018-12-20 20:28:57.709+0000 WARN [o.n.k.i.p.Procedures] apoc.static.list is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.

I found this: Explanation of error: procedure is not available due to having restricted access rights, check configuration - Knowledge Base

But my neo4j.conf and the neo4j.template files both have the right data in them: dbms.security.procedures.unrestricted="apoc.*,algo.*"

Then I figured it was just not listening on the right IP, as I didn't face this to a public IP. Sure enough, the /etc/neo4j/neo4j.template file has the following line:
dbms.connectors.default_advertised_address=$EXTERNAL_IP_ADDR

Changed to:
dbms.connectors.default_advertised_address=$INTERNAL_IP_ADDR

And it works.

Thanks for reporting these. So some of the logs and warnings you saw are pretty typical. There is one small error in the config for the plugins which we've been told about and are fixing in 3.5.3 which should be available soon.

I'm not sure what you mean by it wasn't listening on the right IP though - you changed it to listen on the internal IP, did you deploy this in a network without an external IP, or how was it that you were trying to connect? Typically advertising for the external IP is the right way to go so I'd just like to understand what wasn't working here.

Yes, I phrased that poorly. There was no public IP. It is in a private Vnet and I VPN in. Perhaps in the config script there could be a check that if there is no public IP, use the internal. Is that script part of some public repo? Would be happy contribute.

I'm in the process of working on releases for 3.5.3 on the various cloud platforms. This particular issue also cropped up on AWS and was being fixed in this release so I'll make sure the same gets in on the Azure side. Thanks for reporting!