The performance and costs of geo-replicated online services depend on which data centers handle user requests, and which wide-area paths carry traffic. To provide good performance at reasonable cost, service providers adapt the mapping of user requests to data centers (e.g., through DNS), and routing of responses back to users (i.e., through multi-homed route control). Mapping and routing are typically managed independently, with mapping having limited visibility into routing decisions, response path latencies, and bandwidth costs. However, poor visibility and uncoordinated decision-making can lead to worse performance and higher costs when compared to a joint decision. In this paper, we argue that mapping and routing should continue to operate modularly, but cooperate towards service-wide performance and cost goals. Our main contribution is a distributed algorithm to steer cooperating, yet functionally separate, mapping and routing provably towards a globally optimal operating point. Trace-based evaluations on an operational CDN show that the algorithm converges to within 1% of optimum in 3-6 iterations.