Hi,
We are having an application connection issue. So, we are trying to lower down the application connection to the database
What is the nature of the connection issues? Can you elaborate?
So, it is possible to make arbiter as a hidden member
It is possible, but without knowing your actual issue, it’s hard to say what is the solution. Since arbiters do not carry data and do not participate in insert/update/find operations, I’d like to understand what the actual issue is.
If yes, then will there be any impact like failover will not work, etc.
It shouldn’t affect failovers.
Having said that, a better understanding of your issue could probably lead to a better solution. Could you post:
rs.conf()If this is a production environment, please also ensure that your setup follows the recommendations in the production notes.
Best regards,
Kevin
Hi Ritesh,
Any thoughts over below behavior and making Arbiter as hidden member?
In my limited testing, I haven’t found any detrimental effect on using hidden arbiters using simple failure scenarios (e.g. killing a couple of nodes and ensuring that a new primary is still elected). However please continue testing with your own failure scenarios just in case you have a more complex scenario that my simple tests didn’t anticipate.
Each of these replica-set has around 7 members (PSSSAAA - 4 data-bearing and 3 arbiters)
Having said that, I’d like to understand why you’re using this setup. Do you have a specific deployment that requires the use of that many arbiters? I’m asking because arbiters are part of the voting nodes, and would therefore asked to confirm writes with majority write concern. Having that many in your replica set would result in non-intuitive majority write concern behaviour. For example, if I kill one node in the replica set (1 data-bearing node down out of 7 nodes) and do a majority write, it will result in this:
> db.test.insert({a:1}, {writeConcern: {w:'majority', wtimeout:3000}})
Inserted 1 record(s) in 3021ms
WriteResult({
"nInserted": 1,
"writeConcernError": {
"code": 64,
"codeName": "WriteConcernFailed",
"errmsg": "waiting for replication timed out",
"errInfo": {
"wtimeout": true
}
}
})
So the document was inserted (Inserted 1 record(s) in 3021ms) and replicated to online data-bearing node. However the write returns that it failed the majority write (i.e. the write can be rolled back in some situation, so it’s not a safe write). I find this is completely non-intuitive, since the set still has the majority of data-bearing node online. Killing one data-bearing node should not result in a failed majority write. However the write should not be rolled back, since it should be replicated to the online nodes, which still makes up the majority of data-bearing nodes. Thus, the error message doesn’t reflect the reality, and I simply don’t know whether the write is safe or not. This is due to the large number of arbiters in the replica set.
Best regards,
Kevin