Distributed Worker is not being able to configure correctly

Hi Morpheus Community,
I have install Distributed Worker package on a VM and the Hypervisor is EXSI, and my Morpheus is deployed on another VM and that is hosted on different EXSI.
I have created Distributed Worker in the Morpheus and I get a API key which I placed in the .rb file of the worker along with the Morpheus Appliance URL and worker URL and reconfigure.
I have added a cloud vmware in the Morpheus, when I edit the cloud and add the Distributed Worker it gives me the Following Error.

OFFLINE - vcenter host not reachable

The point where I am confusing is that which IP address I should use in the Proxy Hosts of the Distributed Worker?
I used the IP address of Worker and IP addresses of both the EXSI hosts mentioned above, but the error is same.
Screenshot 2023-12-21 152617

Any one here to guide me Please.

Thank you,
Basharat.

Hello @basharat.hussain,

Here are some examples from my distributed worker.

Here is the configuration in Morpheus:

This is the configuration on the distributed worker:

## Url on which Morpheus Worker will be reachable.
## For more details on configuring worker_url see:
## https://docs.morpheusdata.com
worker_url 'https://192.168.1.10'
worker['appliance_url'] = 'https://morpheusaio.example.local'
worker['worker_key'] = '7f84b7f0-xxxx-xxxx-xxxx-2eb735423731'
worker['apikey'] = 'fakekey' #used to make the worker be in worker only mode

URL configuration from my cloud:

Some items to note:

  • Your appliance should have a trusted certificate, either a public certificate or the certificate and it’s chain needs to be added to the distributed worker’s OS trusts location
  • The worker['apikey'] is required in the configuration above, even though it won’t be used, unless you intent to use it for VDI workloads as well
  • worker_url is the IP address of my worker. This could have been a DNS name if I had one setup but I am just using the IP for now
  • For the Proxy Hosts, I have my vCenter URL listed above, which you would want to use the URLs for your vCenter (comma separated). If it is just IPs, you can use that too. Essentially, whatever the URL is that you used when setting up your cloud in Morpheus, that is the one you want to use in Proxy Hosts. The URL is looked up in that list first to see if it is a host that the distributed proxy should be used to communicate with
  • Of course, make sure DNS is working correctly on the Distributed Worker as well, that it can resolve your vCenter. Maybe a ping or a curl to the primary page, just to see if you get some data back

Hope that helps!

1 Like

Hello @kgawronski , Thank You, for this Explanation.
It cleared lots of my confusions. But I couldn’t this point " * Your appliance should have a trusted certificate, either a public certificate or the certificate and it’s chain needs to be added to the distributed worker’s OS trusts location."
Which Certificate I don’t understand.
Please elaborate this point.

Thank You.

Hi @kgawronski ,

This is my Distributed Worker Configuration.

And this is the Configuration in the .rb file of Worker

And this is the Cloud Configuration.

Screenshot 2023-12-22 113402

When I edit cloud and add the worker and save it gives me this error.

Screenshot 2023-12-22 114513

Please Guide me where I’m making mistake.

Thank You.

Hello @basharat.hussain,

For the certificate comment I made, this is regards to your Morpheus appliance. The SSL/TLS certificate should be a public/trusted certificate. That is, either a certificate from a well known certificate authority or an internal certificate that is trusted by VMs internally. If it is an internal certificate, then you’d need to have the worker VM trust your internal certificate authority (CA) on the OS.

Here is more information on configuring the Morpheus appliance to use a certificate other than the self-signed that is generated by default:
https://docs.morpheusdata.com/en/latest/getting_started/additional/morpheusSslCerts.html

Note that the Distributed Worker is also known as the VDI Gateway. It can serve both purposes, depending on how it is configured.

Distributed Worker Documentation

VDI Gateway Documentation

worker_url and worker['appliance_url'] will be used in both configurations.

If you are creating a Distributed Worker, worker['worker_key'] is required and should be set to the API key provided from creating a Distributed Worker in Administration > Integrations > Distributed Workers.

If this will also be used for the VDI Gateway, also set worker['apikey'] to the API key provided from creating a VDI Gateway in Tools > VDI Pools > VDI Gateways.

:exclamation: If you will not be using it for the VDI Gateway, you still need to enter a value for worker['apikey'], which in my example, I set 'fakekey' as the value does not matter.

In your example you provided, I think you have the keys switched, you need to be sure to have the worker['worker_key'] filled in for the Distributed Worker to function but it is commented out in your example.

Hope that helps!

1 Like

Thank You @kgawronski, for this detail explanation.

I placed API Key generated from worker configuration in worker['worker_key'] and in the worker['apikey'] I filled with a fake value but the Error is still same.
I think its a certificate issue.
I copy the certificate from /etc/morpheus/ssl/certificate.crt from appliance machine and placed it in the /usr/local/share/ca-certificates/ in the distributed worker machine.
Is it correct?

@basharat.hussain

You’ll want to place them in /etc/morpheus/ssl/trusted_certs, which when you perform a morpheus-worker reconfigure it will add those to the trusts for Morpheus. You can also see logs by using morpheus-worker tail or tail -f /var/log/morpheus-worker/worker/current, in case you are having SSL issues.

After making any changes with reconfigures or otherwise, you may need to restart the Morpheus services, specifically nginx if we are talking about SSL certificates.

Restart Morpheus appliance nginx:
morpheus-ctl restart nginx

Restart Distributed Worker nginx or all services:
morpheus-worker restart nginx
morpheus-worker restart

However, that said, I noticed a slight issue with the self-signed certificates that Morpheus generates and I’m not sure if you’d be able to use the Morpheus certificate as-is. I plan to add a note internally to resolve it but for now, I’d recommend generating your own self-signed certificate or purchase a public certificate. You can configure it on your Morpheus appliance and then copy the .crt to your distributed worker. Adding the .crt to the OS locations is not necessary but might be a good idea, just to keep it consistent if there are other tools you’d use later that are non-Morpheus.

If you continue to have issues, opening a support case might be best as well, to be able to share some additional details, configs. logs, etc.

Hope that helps!

1 Like