Best way to manage Erlang nodes?

I’m wrtinging a game server
I use jenkins to tar and deploy multiple node
But I can’t find a good tool to manager these erlang nodes

From experience, manager need(at least):

  1. show node(linux process) status, start/stop…
  2. running code(svn) version
  3. button or hook to run sh script, start/stop/restart…

As far as I know, different company will implement by themselves
So, if there’s any app design to work with this scenario

4 Likes

I try to use the features of the host-OS to deploy and manage erlang nodes.

Since Linux distributions differ much in their flavor of package-management, service-startup, firewall configuration and system-hardening, i choose the easy-way out and only target Red Hat Enterprise Linux(-clones).

I created this example project to show how to create a RPM that includes:

  • the service implementation
  • its systemd unit file
  • firewalld service configuration
  • selinux module
  • the erlang runtime

When deployed, i can use systemd to start/stop/status the service. The packet filter configuration is handled by firewalld and the selinux module provides some hardening.

Since all files installed are managed by the dnf package manager, i know what version is installed and which config files (if any) where changed after installation.

I can use /usr/lib64/echotcp/bin/echotcp remsh to attach to the erlang shell of the running node if needed.

3 Likes

sorry for late reply, thanks for you code!

First of all
I have never use Red Hat Enterprise, but I think it’s be similar to ubuntu :sweat_smile:
if it look like this?

service xxx start/stop/restart
service --status-all
 [ - ]  apparmor
 [ - ]  apport

we will open multiple node in a machine
but I don’t know if multiple node as service will be conflict

in fact, we use a server id to generate node name and cookie

-name example_1@ip --setcookie example_1
-name example_2@ip --setcookie example_2

we need a website(like jenkins) for other department to use(sorry, I have not mention before)
maybe look like:

name         |pid          |svn version       |operation
example_1    |1111         |222               |start/stop/restart
example_2    |1112         |222               |start/stop/restart

I write some script too(but not in github and it’s confused now)
https://gitee.com/DominicGame/ptolemaios/blob/master/scripts/priv_dev_release
and I am finding a frameworks to work with

3 Likes