Healthcheck of Trilio

Trilio is composed of multiple services, which can be checked in case of any errors.

Verify the Trilio Appliance

Verify the services are up

Trilio is using 4 main services on the Trilio Appliance:

  • wlm-api

  • wlm-scheduler

  • wlm-workloads

  • wlm-cron

systemctl | grep wlm
  wlm-api.service          loaded active running   workloadmanager api service
  wlm-cron.service         loaded active running   Cluster Controlled wlm-cron
  wlm-scheduler.service    loaded active running   Cluster Controlled wlm-scheduler
  wlm-workloads.service    loaded active running   workloadmanager workloads service

Those can be verified to be up and running using the systemctl status command.

systemctl status wlm-api
######
 wlm-api.service - workloadmanager api service
   Loaded: loaded (/etc/systemd/system/wlm-api.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-11-02 19:41:19 UTC; 2 months 21 days ago
 Main PID: 4688 (workloadmgr-api)
   CGroup: /system.slice/wlm-api.service
           ├─4688 /home/stack/myansible/bin/python3 /home/stack/myansible/bin/workloadmgr-api --config-file=/etc/workloadmgr/workloadmgr.conf
systemctl status wlm-scheduler
######
 wlm-scheduler.service - Cluster Controlled wlm-scheduler
   Loaded: loaded (/etc/systemd/system/wlm-scheduler.service; disabled; vendor preset: disabled)
  Drop-In: /run/systemd/system/wlm-scheduler.service.d
           └─50-pacemaker.conf
   Active: active (running) since Sat 2022-01-22 13:49:28 UTC; 1 day 23h ago
 Main PID: 9342 (workloadmgr-sch)
   CGroup: /system.slice/wlm-scheduler.service
           └─9342 /home/stack/myansible/bin/python3 /home/stack/myansible/bin/workloadmgr-scheduler --config-file=/etc/workloadmgr/workloadmgr.conf
systemctl status wlm-workloads
######
 wlm-workloads.service - workloadmanager workloads service
   Loaded: loaded (/etc/systemd/system/wlm-workloads.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-11-02 19:51:05 UTC; 2 months 21 days ago
 Main PID: 606 (workloadmgr-wor)
   CGroup: /system.slice/wlm-workloads.service
           ├─ 606 /home/stack/myansible/bin/python3 /home/stack/myansible/bin/workloadmgr-workloads --config-file=/etc/workloadmgr/workloadmgr.conf
systemctl status wlm-cron
######
● wlm-cron.service - Cluster Controlled wlm-cron
   Loaded: loaded (/etc/systemd/system/wlm-cron.service; disabled; vendor preset: disabled)
  Drop-In: /run/systemd/system/wlm-cron.service.d
           └─50-pacemaker.conf
   Active: active (running) since Sat 2022-01-22 13:49:28 UTC; 1 day 23h ago
 Main PID: 9209 (workloadmgr-cro)
   CGroup: /system.slice/wlm-cron.service
           ├─9209 /home/stack/myansible/bin/python3 /home/stack/myansible/bin/workloadmgr-cron --config-file=/etc/workloadmgr/workloadmgr.conf

Check the Trilio pacemaker and nginx cluster

The second component to check the Trilio Appliance's health is the nginx and pacemaker cluster.

pcs status
######
Cluster name: triliovault

WARNINGS:
Corosync and pacemaker node names do not match (IPs used in setup?)

Stack: corosync
Current DC: TVM1 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Mon Jan 24 13:42:01 2022
Last change: Tue Nov  2 19:07:04 2021 by root via crm_resource on TVM2

3 nodes configured
9 resources configured

Online: [ TVM1 TVM2 TVM3 ]

Full list of resources:

 virtual_ip     (ocf::heartbeat:IPaddr2):       Started TVM2
 virtual_ip_public      (ocf::heartbeat:IPaddr2):       Started TVM2
 virtual_ip_admin       (ocf::heartbeat:IPaddr2):       Started TVM2
 virtual_ip_internal    (ocf::heartbeat:IPaddr2):       Started TVM2
 wlm-cron       (systemd:wlm-cron):     Started TVM2
 wlm-scheduler  (systemd:wlm-scheduler):        Started TVM2
 Clone Set: lb_nginx-clone [lb_nginx]
     Started: [ TVM2 ]
     Stopped: [ TVM1 TVM3 ]

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Verify API connectivity of the Trilio Appliance

Checking the availability of the Trilio API on the chosen endpoints is recommended.

The following example curl command lists the available workload-types and verifies that the connection is available and working:

curl http://10.10.2.34:8780/v1/8e16700ae3614da4ba80a4e57d60cdb9/workload_types/detail -X GET -H "X-Auth-Project-Id: admin" -H "User-Agent: python-workloadmgrclient" -H "Accept: application/json" -H "X-Auth-Token: gAAAAABe40NVFEtJeePpk1F9QGGh1LiGnHJVLlgZx9t0HRrK9rC5vqKZJRkpAcW1oPH6Q9K9peuHiQrBHEs1-g75Na4xOEESR0LmQJUZP6n37fLfDL_D-hlnjHJZ68iNisIP1fkm9FGSyoyt6IqjO9E7_YVRCTCqNLJ67ZkqHuJh1CXwShvjvjw

Please check the API guide for more commands and how to generate the X-Auth-Token.

Verify Trilio components on OpenStack

On OpenStack Ansible

Datamover-API service (dmapi)

The dmapi service has its own Keystone endpoints, which should be checked in addition to the actual service status.

root@ansible:~# openstack endpoint list | grep dmapi
| 190db2ce033e44f89de73abcbf12804e | US-WEST-2 | dmapi          | datamover    | True    | public    | https://osa-victoria-ubuntu20-2.triliodata.demo:8784/v2                    |
| dec1a323791b49f0ac7901a2dc806ee2 | US-WEST-2 | dmapi          | datamover    | True    | admin     | http://10.10.10.154:8784/v2                                                |
| f8c4162c9c1246ffb0190d0d093c48af | US-WEST-2 | dmapi          | datamover    | True    | internal  | http://10.10.10.154:8784/v2                                                |

root@ansible:~# curl http://10.10.10.154:8784
{"versions": [{"id": "v2.0", "status": "SUPPORTED", "version": "", "min_version": "", "updated": "2011-01-21T11:33:21Z", "links": [{"rel": "self", "href": "h

In order to check the dmapi service go to dmapi container which is residing on controller nodes and run below command

lxc-attach -n <dmapi-container-name>  (go to dmapi conatiner)
root@controller-dmapi-container-08df1e06:~# systemctl status tvault-datamover-api.service
● tvault-datamover-api.service - TrilioData DataMover API service
     Loaded: loaded (/lib/systemd/system/tvault-datamover-api.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-01-12 11:53:39 UTC; 1 day 17h ago
   Main PID: 23888 (dmapi-api)
      Tasks: 289 (limit: 57729)
     Memory: 607.7M
     CGroup: /system.slice/tvault-datamover-api.service
             ├─23888 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23893 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23894 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23895 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23896 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23897 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23898 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23899 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23900 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23901 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23902 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23903 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23904 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23905 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23906 /usr/bin/python3 /usr/bin/dmapi-api
             ├─23907 /usr/bin/python3 /usr/bin/dmapi-api
             └─23908 /usr/bin/python3 /usr/bin/dmapi-api

Jan 12 11:53:39 controller-dmapi-container-08df1e06 systemd[1]: Started TrilioData DataMover API service.
Jan 12 11:53:40 controller-dmapi-container-08df1e06 dmapi-api[23888]: Could not load
Jan 12 11:53:40 controller-dmapi-container-08df1e06 dmapi-api[23888]: Could not load

Datamover service (tvault-contego)

The datamover service is running on each compute node. Logging to compute node and run below command

root@compute:~# systemctl status tvault-contego
● tvault-contego.service - Tvault contego
     Loaded: loaded (/etc/systemd/system/tvault-contego.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-01-14 05:45:19 UTC; 2s ago
   Main PID: 1489651 (python3)
      Tasks: 19 (limit: 67404)
     Memory: 6.7G (max: 10.0G)
     CGroup: /system.slice/tvault-contego.service
             ├─ 998543 /bin/qemu-nbd -c /dev/nbd45 --object secret,id=sec0,data=payload-1234 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,file>
             ├─ 998772 /bin/qemu-nbd -c /dev/nbd73 --object secret,id=sec0,data=payload-1234 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,file>
             ├─ 998931 /bin/qemu-nbd -c /dev/nbd100 --object secret,id=sec0,data=payload-1234 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,fil>
             ├─ 999147 /bin/qemu-nbd -c /dev/nbd35 --object secret,id=sec0,data=payload-1234 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,file>
             ├─1371322 /bin/qemu-nbd -c /dev/nbd63 --object secret,id=sec0,data=payload-test1 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,fil>
             ├─1371524 /bin/qemu-nbd -c /dev/nbd91 --object secret,id=sec0,data=payload-test1 --image-opts driver=qcow2,encrypt.format=luks,encrypt.key-secret=sec0,fil>
             └─1489651 /openstack/venvs/nova-22.3.1/bin/python3 /usr/bin/tvault-contego --config-file=/etc/nova/nova.conf --config-file=/etc/tvault-contego/tvault-cont>

Jan 14 05:45:19 compute systemd[1]: Started Tvault contego.
Jan 14 05:45:20 compute sudo[1489653]:     nova : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/openstack/venvs/nova-22.3.1/bin/nova-rootwrap /etc/nova/rootwrap.conf umou>
Jan 14 05:45:20 compute sudo[1489653]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 14 05:45:21 compute python3[1489655]: umount: /var/triliovault-mounts/VHJpbGlvVmF1bHQ=: no mount point specified.
Jan 14 05:45:21 compute sudo[1489653]: pam_unix(sudo:session): session closed for user root
Jan 14 05:45:21 compute tvault-contego[1489651]: 2022-01-14 05:45:21.499 1489651 INFO __main__ [req-48c32a39-38d0-45b9-9852-931e989133c6 - - - - -] CPU Control group m>
Jan 14 05:45:21 compute tvault-contego[1489651]: 2022-01-14 05:45:21.499 1489651 INFO __main__ [req-48c32a39-38d0-45b9-9852-931e989133c6 - - - - -] I/O Control Group m>
lines 1-22/22 (END)

On Kolla Ansible OpenStack

Datamover-API service (dmapi)

The dmapi service has its own Keystone endpoints, which should be checked in addition to the actual service status.

root@ansible:~# openstack endpoint list | grep dmapi
| 190db2ce033e44f89de73abcbf12804e | US-WEST-2 | dmapi          | datamover    | True    | public    | https://osa-victoria-ubuntu20-2.triliodata.demo:8784/v2                    |
| dec1a323791b49f0ac7901a2dc806ee2 | US-WEST-2 | dmapi          | datamover    | True    | admin     | http://10.10.10.154:8784/v2                                                |
| f8c4162c9c1246ffb0190d0d093c48af | US-WEST-2 | dmapi          | datamover    | True    | internal  | http://10.10.10.154:8784/v2                                                |

root@ansible:~# curl http://10.10.10.154:8784
{"versions": [{"id": "v2.0", "status": "SUPPORTED", "version": "", "min_version": "", "updated": "2011-01-21T11:33:21Z", "links": [{"rel": "self", "href": "h

Run the following command on “nova-api” nodes and make sure “triliovault_datamover_api” container is in started state.

[root@controller ~]# docker ps | grep triliovault_datamover_api
3f979c15cedc   trilio/centos-binary-trilio-datamover-api:4.2.50-victoria                     "dumb-init --single-…"   3 days ago    Up 3 days                         triliovault_datamover_api

Datamover service (tvault-contego)

Run the following command on "nova-compute" nodes and make sure the container is in a started state.

[root@compute1 ~]# docker ps | grep triliovault_datamover
2f1ece820a59   trilio/centos-binary-trilio-datamover:4.2.50-victoria                        "dumb-init --single-…"   3 days ago    Up 3 days                        triliovault_datamover

Trilio Horizon integration

Run the following command on horizon nodes and make sure the container is in a started state.

[root@controller ~]# docker ps | grep horizon
4a004c786d47   trilio/centos-binary-trilio-horizon-plugin:4.2.50-victoria                    "dumb-init --single-…"   3 days ago    Up 3 days (unhealthy)             horizon

On Canonical OpenStack

Run the following command on MAAS nodes and make sure all trilio units like trilio-data-mover, trilio-dm-api, trilio-horizon-plugin, trilio-wlmare in active state

root@jujumaas:~# juju status | grep trilio
trilio-data-mover       4.2.51   active       3  trilio-data-mover       jujucharms    9  ubuntu
trilio-dm-api           4.2.51   active       1  trilio-dm-api           jujucharms    7  ubuntu
trilio-horizon-plugin   4.2.51   active       1  trilio-horizon-plugin   jujucharms    6  ubuntu
trilio-wlm              4.2.51   active       1  trilio-wlm              jujucharms    9  ubuntu
  trilio-data-mover/8        active    idle            172.17.1.5                         Unit is ready
  trilio-data-mover/6        active    idle            172.17.1.6                         Unit is ready
  trilio-data-mover/7*       active    idle            172.17.1.7                         Unit is ready
  trilio-horizon-plugin/2*   active    idle            172.17.1.16                        Unit is ready
trilio-dm-api/2*             active    idle   1/lxd/4  172.17.1.27     8784/tcp           Unit is ready
trilio-wlm/2*                active    idle   7        172.17.1.28     8780/tcp           Unit is ready

On Red Hat OpenStack and TripleO

On controller node

Make sure the Trilio dmapi and horizon containers (shown below) are in a running state and no other Trilio container is deployed on controller nodes. If the containers are in restarting state or not listed by the following command then your deployment is not done correctly. Please note that the 'Horizon' container is replaced with the Trilio Horizon container. This container will have the latest OpenStack horizon + Trilio's horizon plugin.

On rhosp13 OS:	docker ps | grep trilio-
On other (rhosp16 onwards/tripleo) :	podman ps | grep trilio-

[root@overcloudtrain1-controller-0 heat-admin]# podman ps | grep trilio-
e3530d6f7bec  ucqa161.ctlplane.trilio.local:8787/trilio/trilio-datamover-api:4.2.47-rhosp16.1           kolla_start           2 weeks ago   Up 2 weeks ago          trilio_dmapi
f93f7019f934  ucqa161.ctlplane.trilio.local:8787/trilio/trilio-horizon-plugin:4.2.47-rhosp16.1          kolla_start           2 weeks ago   Up 2 weeks ago          horizon

On compute node

Make sure the Trilio datamover container (shown below) is in a running state and no other Trilio container is deployed on compute nodes. If the containers are in restarting state or not listed by the following command then your deployment is not done correctly.

On rhosp13 OS:	docker ps | grep trilio-
On other (rhosp/tripleo) :	podman ps | grep trilio-

[root@overcloudtrain3-novacompute-1 heat-admin]# podman ps | grep trilio-
4419b02e075c  undercloud162.ctlplane.trilio.local:8787/trilio/trilio-datamover:dev-osp16.2-1-rhosp16.2       kolla_start  2 days ago   Up 27 seconds ago          trilio_datamover

On overcloud

Please check dmapi endpoints on overcloud node.

 (overcloudtrain1) [stack@ucqa161 ~]$ openstack endpoint list | grep datamover
| 218b2f92569a4d259839fa3ea4d6103a | regionOne | dmapi          | datamover      | True    | internal  | https://overcloudtrain1internalapi.trilio.local:8784/v2                    |
| 4702c51aa5c24bed853e736499e194e2 | regionOne | dmapi          | datamover      | True    | public    | https://overcloudtrain1.trilio.local:13784/v2                              |
| c8169025eb1e4954ab98c7abdb0f53f6 | regionOne | dmapi          | datamover      | True    | admin     | https://overcloudtrain1internalapi.trilio.local:8784/v2    

Last updated