@ulim, that’s right: you can direct your reads/writes to any node in the cluster. You’ll pay a latency cost, of course, for accessing nodes in distant data centers. See Multi-Datacenter Fast Read Setup for some additional considerations.
Anyway, I assume you’re asking because our deployment documentation suggests using a separate load balancer? Most existing database drivers—at least the ones we’ve seen—don’t support sending requests round-robin to multiple hosts. That, in turn, means that most app frameworks (like Rails) want a single database URL. Putting a load balancer out front of your Cockroach cluster is the shortest path to balancing traffic across your cluster, since you can just specify the address of the load balancer in your existing app.
What you’re suggesting amounts to baking a simple load balancer into your app, I think. You’ll need some way of communicating to every client which Cockroach nodes are healthy and which aren’t. (Alternatively, you can have each client pay the cost of discovering that a Cockroach node is offline and trying the next one.) What if you want to do something more complicated than round-robin, like routing traffic to the server with the fewest active connections? So the two benefits of standalone load balancers that I see are a) you don’t have to write them yourself, and b) they can make better decisions about routing traffic than any individual instance of your client app can.
That said, your strategy is totally valid, provided you’re happy with whatever solution you engineer to update the list of hosts on every client app as nodes come in and out of service.