Public providers around the world offer computing, storage, and communication services as virtual machines in a pay-per-use model. From the user perspective, it is important to choose providers and charging models to run distributed applications with quality of service at lower costs. In this work, we introduce an innovative strategy to decrease the cost of VM requests scheduling on different public cloud providers. The mechanism is based on redundancy with a mixed utilization of reserved and spot virtual machine (VM) instances, and it allows the balancing between cost and availability. We implemented a QoS-aware architecture that allows the scheduling of applications considering different VM charging models. Then, we propose an integer linear program (ILP) and a heuristic algorithm to compute the QoS-aware scheduling. Experimental results show that the proposed approach computes schedules with smaller costs than alternative approaches.