Multi-process applications on Vorteil.io is here ...

Multi-process applications on Vorteil.io is here ...

Before we even start, the scene needs to be set. It's Tuesday afternoon, which generally means (in Australia at least) that it's time to kick back, open a wheat-based beverage and settle in for a night of reality television a.k.a. mindless entertainment (with or without the wheat-based beverage).

However, for the Vorteil.io team it is release day (which means our minds are now basically blank). Release day implies that we have been testing, verifying and re-testing a new release for the Vorteil.io kernels, developer studio and components supporting the eco-system.

(full disclosure ... there is a wheat-based beverage next to me while typing up this article)

So let's get right into it ... the three most important updates!

  1. Multi-process support: the Vorteil.io compatibility kernel is a newly released kernel which supports forking applications OR running multiple applications on a single kernel!
  2. NFS support: mount network file shares for data reading and writing to persistent storage. Users have the option to have stateless or stateful applications running on Vorteil.io
  3. Configuration and package updates: kernel parameters such as IP addresses, interfaces and other run-time components available as environmental variables to use in the Vorteil.io configuration files and updates to the public repository

Multi-process support

The compatibility kernel now offers a Vorteil.io user the ability to run an application which forks. The capability greatly expands the application footprint for Vorteil.io. Applications such as Cassandra, Elasticsearch, Logstash, Kibana, Grafana, Moodle (you get the drift) can all be configured and deployed from the Developer Studio.

More importantly, it also offers users the ability to run multiple applications as a single Vorteil.io virtual machine. Elasticsearch, Logstash and Kibana (ELK stack) can all run on a single machine, or users can run combinations of applications!

Whilst the compatibility kernel has reduced performance and throughput compared to the single-process kernel, the team has gone to great lengths in to replicate the design and minimise the performance impact (context-switching applications = bad for performance in millisecond environments).

However, security still remains a fundamental feature at the core of the kernel. There is still no shell to exploit, and the kernel still boots directly into the application(s). None of the security features of the performance kernel have been lost!

It's as simple as adding multiple [[program]] directives to the YAML configuration file:

[[program]]
  binary = "/myapp1"
  args   = "--this-argument-is-silly"
  env    = ["APP-ENV1=VORTEIL", "APP-ENV2=IO"]


[[program]]
  binary = "/myapp2"
  args   = "--this-argument-is-silly"
  env    = ["APP-ENV1=VORTEIL", "APP-ENV2=IO"]

NFS support

Mount NFS during start-up, read & write. Need I say more? Well if you're across how NFS works, then some of the following details will make more sense:

  • NFS version 3 & 4 is supported
  • The configuration file allows for the NFS mount arguments to be passed to the kernel

From an implementation perspective, support for NFS on the compatibility kernel opens a raft of deployment architectures. It allows for applications or databases to read stateful data and retain the data written in a stateful manner, whilst still maintaining the stateless nature of the binary / application itself.

So how would this look in our Vorteil.io configuration file (vcfg)?

[[nfs]]
  mount   = "/mnt/myNFS1"
  server  = "172.20.10.2:/srv/nfs4/vorteil1"
  options = "vers=4.0" #"rw,relatime,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=none,local_lock=none"


[[nfs]]
  mount   = "/mnt/myNFS2"
  server  = "172.20.10.2:/srv/nfs4/vorteil2"
  options = "vers=4.0" #"rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=none,local_lock=none"

Vorteil configuration options

I suggest referring to the documentation on this one. There have been enhancements made to the way re-directs (for stdout or log files) are configured which ensures that multiple options can be configured for destination logging. This is exactly the way good applications and micro-services should be built and we make it happen out of the box.

A new public repository is also now available which includes updated multi-process packages our customers have suggested so far. Most of the single-process applications are being migrated to a new repository. We’ve divided the repositories until we can make the configuration files for the performance kernel backwards compatible (Watch this space - we're releasing a migration tool for our current users which will follow shortly for public release).

Check it out at: https://apps.vorteil.io/

That's it for now ...


要查看或添加评论,请登录

Wilhelm Wonigkeit的更多文章

社区洞察

其他会员也浏览了