but it doesn’t look like chirpstack is mirroring the keys on both instances, so if I lose the “active” instance then I’ve lost the keys/activations until the device reactivates. Is that correct?
Do I need to make sure to externally sync the keys between the two instances or is this something that chirpstack can do? If yes, this would be a great feature addition to mirror all keys in environments that don’t support true clustering.
Why are you trying to have two redis instances? I think you should try with the amount of databases you need but in postgreSQL not in redis. Services provided by this two are quite different.
PD: Maybe I missunderstood your issue. Hope this helps.
For HA purposes. If one redis instance goes down I would like the other one to pick up where the first left off. Otherwise mm y devices will have to renegotiate with the server
Unfortunately, currently Redis Sentinel isn’t supported yet. I believe it would require a wrapper around the Redis connection object, which before performing any action polls which node is the master node. But this hasn’t been implemented yet.
Unfortunately I’m not using sentinel. Just using two independent Redis instances for basic HA capability should one instance go down, the other could continue to serve but unfortunately the keys aren’t mirrored.
I believe the connection-pooling is still lacking in the Redis client. Let me look into if this has been added since the last time I looked at it, or if it is simple to propose a pull-request for this.
Yes, but I believe what is still missing is a connection-pool implementation for this part of the code. ChirpStack uses deadpool, e.g. this is the implementation of a regular Redis connection pool: