@antonio2368 , after https://github.com/ClickHouse/ClickHouse/pull/36258 and https://github.com/ClickHouse/ClickHouse/issues/35465

I tried to test your --force-recovery implementation and failed, totally

when we try to scale down zookeeper cluster from 3 nodes to 1 nodes we need only one keeper node 
`clickhouse-keeper --force-recovery` can't start properly, cause still wait 2 other nodes, even when have only one node in peer list in XML config

```
 <Information> KeeperDispatcher: Server is recovering, will not apply configuration until recovery is finished
```

> Again, keep in mind that such configuration changes are already possible with the Keeper if there is a quorum by just changing the XML.

I can't to do it inside all other keeper nodes, inside Kubernetes

kubernetes operates pods and containers in declarative manner, I see only one opportunity to use
```yaml
          lifecycle:
            preStop: |
              shell script which will rewrite XML config
```
but it doesn't allow us to change XML configs on other pods during scale down

Moreover, we don't have support `reconfigure add` and `reconfigure remove` zookeeper commands and can't remove Pod from Quorum peer list dynamic

So, it makes --force-recovery useless in Kubernetes ;(

@alesapin maybe you could suggest how to run clickhouse-keeper in Kubernetes with scale down operation support?

= new nuraft::context(casted_state_manager, casted_state_machine, asio_listener, logger, rpc_cli_factory, scheduler, params);
    raft_instance = nuraft::cs_new<KeeperRaftServer>(ctx, init_options);
    raft_instance->start_server(init_options.skip_initial_election_timeout_);
    nuraft::ptr<nuraft::raft_server> casted_raft_server = raft_instance;
    asio_listener->listen(casted_raft_server);
    if (!raft_instance)
        throw Exception(ErrorCodes::RAFT_ERROR, "Cannot allocate RAFT instance");
}
void KeeperServer::startup(const Poco::Util::AbstractConfiguration & config, bool enable_ipv6)
{
    state_machine->init();
    state_manager->loadLogStore(state_machine->last_commit_index() + 1, coordination_settings->reserved_log_items);
    auto log_store = state_manager->load_log_store();
    auto next_log_idx = log_store->next_slot();
    if (next_log_idx > 0 && next_log_idx > state_machine->last_commit_index())
    {
        auto log_entries = log_store->log_entries(state_machine->last_commit_index() + 1, next_log_idx);
        auto idx = state_machine->last_commit_index() + 1;
        for (const auto & entry : *log_entries)
        {
            if (entry && entry->get_val_type() == nuraft::log_val_type::app_log)
                state_machine->preprocess(idx, entry->get_buf());
            ++idx;
        }
    }
    loadLatestConfig();
    last_local_config = state_manager->parseServersConfiguration(config, true).cluster_config;
    launchRaftServer(enable_ipv6);
}
void KeeperServer::shutdownRaftServer()