Cloud computing is one of the most important technologies for delivering on-demand services over the internet and has grown very fast over the last few years. Based on the virtualization technology, cloud consumer have access to seemingly 'unlimited' computing power in a pay-as-you-go manner. The cloud resource scheduling problem, where tasks from cloud users are mapped to cloud resources is known to be NP-hard. The aim of each cloud provider is to deliver high QoS (cost, availability, deadlines) to their users. Because cloud users could be from anywhere in the world, it would be inefficient to schedule for example resources in Asian data centers to European users. Also the QoS requirement of meeting application deadlines could not be met if response times are high. Hence, cloud resources from different locations (e.g. data centers) must be utilized to fulfill adequate response times for geographically-dispersed cloud consumers. In order to tackle these challenges, scheduling approaches should consider distributed cloud resources among different data centers using distributed processes. This work proposes a distributed approach to QoS-aware cloud resource scheduling. The overall approach is divided into two phases: (i) local scheduling phase and (ii) resource discovery phase. In the scheduling phase workloads are mapped to available resources using a Particle Swarm Optimization heuristic. This is done within a single data center. In the resource discovery phase, an incoming task (workload) is forwarded to adjacent data centers in order to determine if the have available resources which can handle the workload. If they are capable of processing the workload they send back a message to the requesting data center with their resource information. In this way, the local available resources within a single data center can be extended by remote resources from other data centers. They are then considered during the scheduling phase and are treated as local resources. An experimental simulation of the approach was conducted in the CloudSim framework. The observed results showed that the execution cost of submitted task are significantly lower for the distributed scheduling approach compared to a centralized one where only a single data center exists. Also the deadline violation rates and task completion rates are better when using the distributed approach. This is especially the case for very tight deadlines and large scale environments with many tasks. Because the distributed approach can utilize more resources from other data centers the results are better.