Estoy ejecutando una aplicación web PHP que usa PDO para conectarse a postgres ( https://github.com/fusionpbx/fusionpbx/blob/bc1e163c898ea2e410787f8e938ccbead172aa5a/resources/classes/database.php#L202 ).
Estoy ejecutando un clúster de conmutación por error y, básicamente, solo pongo 2 nombres de host y mi cadena de conexión se ve así:
"pgsql:host=host1,host2 port=5432 dbname=fusionpbx user=fusionpbx password=contraseña target_session_attrs=lectura-escritura"
Esto funciona bien, si el host1 está en espera, el host2 se selecciona con muy poca demora. El único problema es que no se puede acceder al host1 o está inactivo. En este caso, PDO/controlador (?) siempre prueba host1 primero, espera 30 segundos hasta que se agota el tiempo de espera y va a host2. Parece que no se recuerda el hecho de que host1 no está disponible. Encontré 3 soluciones:
Tal vez alguien podría compartir su experiencia? Estoy bastante sorprendido de lo poco que se puede encontrar sobre esto en la red. Además, en el mismo cuadro estoy ejecutando secuencias de comandos lua, también conectándome a los mismos postgres de la misma manera, y parece que no tengo problemas para manejar este escenario. Es la misma versión de libpq ya que es la misma caja de Linux y no estoy agregando nada específico a la cadena de conexión.