Today we are happy to announce that Portworx has entered the HashiCorp partner program to provide cloud native storage for HashiCorp Nomad.
Portworx is already the leading storage provider for Kubernetes and DC/OS with customers like GE, Comcast, NIO and many more. Now we’re proud to provide Dynamic Provisioning, HA, snapshots, backups, encryption, and more to Nomad users.
Portworx is a software-defined persistent storage solution for container workloads, that provides a highly-available cloud native storage layer. Portworx cloud native storage allows jobs to seamlessly run hyper-converged with the storage layer for best performance — and also provides a rich spectrum of options for data availability.
Storage on Demand on HashiCorp Nomad
Using Portworx with Nomad is easy. Here is an example of how to declaratively run an HA MySQL task on Nomad.
task "mysql-server" {
driver = "docker"
config {
image = "mysql/mysql-server:8.0"
port_map {
db = 3306
}
volumes = [
"name=mysqlvol,size=10,repl=3/:/var/lib/mysql",
]
volume_driver = "pxd"
}
[...]
As the ‘mysql’ task is launched, a volume named ‘mysqlvol’ is dynamically created with a size of 10GB and a replication factor of 3, ensuring that data will be replicated on 3 different nodes.
No separate storage provisioning cycle needed. Container-granular virtual volumes are created on demand.
Portworx uses a ‘kvdb’ like Consul for cluster/node topology discovery and control-path operations — but not for any data-path operations, thereby addressing major concerns around both scalability and I/O performance.
As for Nomad, Portworx runs under the “system” scheduler, meaning that if new Nomad clients are added to the cluster, then Portworx will automatically run on those as well. The “system” scheduler aligns well with the notion of elastic Auto Scaling Groups (ASGs), allowing Portworx to automatically spin up on new client nodes, without manual installation.
Portworx runs on the Nomad clients (not the servers). Here are the relevant options needed on the Nomad clients:
client {
enabled = true
options {
"driver.raw_exec.enable" = "1"
"docker.privileged.enabled" = "true"
}
}
If you want to dig in yourself, it’s pretty easy. The Portworx doc site has been updated to include detailed (and easy) instructions for how to Install Portworx under Nomad.