
**Bug description**
Unlike `cluster()`, `clusterAllReplicas()` does not implement `_shard_num`. 

I would expect
```
SELECT _shard_num
FROM clusterAllReplicas(prod, system.one)
ORDER BY _shard_num ASC
FORMAT PrettyCompactMonoBlock

┌─_shard_num─┐
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
│          0 │
└────────────┘
```
to have an output more useful like
```
SELECT _shard_num
FROM cluster(prod, system.one)
ORDER BY _shard_num ASC
FORMAT PrettyCompactMonoBlock

┌─_shard_num─┐
│          1 │
│          2 │
│          3 │
│          4 │
│          5 │
│          6 │
│          7 │
│          8 │
│          9 │
│         10 │
│         11 │
│         12 │
│         13 │
│         14 │
│         15 │
└────────────┘
```

**Releases where this has been tested**

* v20.3.12.112-stable

**References**

[cluster, clusterAllReplicas documentation](https://clickhouse.tech/docs/en/sql-reference/table-functions/cluster/)

[_shard_num documentation](https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/#virtual-columns)

}
        else
            throw Exception("Unknown element in config: " + key, ErrorCodes::UNKNOWN_ELEMENT_IN_CONFIG);
        ++current_shard_num;
    }
    if (addresses_with_failover.empty())
        throw Exception("There must be either 'node' or 'shard' elements in config", ErrorCodes::EXCESSIVE_ELEMENT_IN_CONFIG);
    initMisc();
}
Cluster::Cluster(const Settings & settings, const std::vector<std::vector<String>> & names,
                 const String & username, const String & password, UInt16 clickhouse_port, bool treat_local_as_remote,
                 bool secure, Int64 priority)
{
    UInt32 current_shard_num = 1;
    for (const auto & shard : names)
    {
        Addresses current;
        for (const auto & replica : shard)
            current.emplace_back(replica, username, password, clickhouse_port, secure, priority, current_shard_num, current.size() + 1);
        addresses_with_failover.emplace_back(current);
        Addresses shard_local_addresses;
        ConnectionPoolPtrs all_replicas;
        all_replicas.reserve(current.size());
        for (const auto & replica : current)
        {
            auto replica_pool = std::make_shared<ConnectionPool>(
                        settings.distributed_connections_pool_size,
                        replica.host_name, replica.port,
                        replica.default_database, replica.user, replica.password,
                        replica.cluster, replica.cluster_secret,