Hi, I am trying to configure HA with 2 Mysql servers in Cloudstack 4.15.2. Both DB servers are configured as master-master, and the db.properties file has been updated:
-------------------------- # High Availability And Cluster Properties db.ha.enabled=true db.ha.loadBalanceStrategy=com.cloud.utils.db.StaticStrategy # cloud stack Database db.cloud.slaves=10.10.10.20 db.cloud.autoReconnect=true db.cloud.failOverReadOnly=false db.cloud.reconnectAtTxEnd=true db.cloud.autoReconnectForPools=true db.cloud.secondsBeforeRetryMaster=3600 db.cloud.queriesBeforeRetryMaster=5000 db.cloud.initialTimeout=3600 #usage Database db.usage.slaves=10.10.10.20 db.usage.autoReconnect=true db.usage.failOverReadOnly=false db.usage.reconnectAtTxEnd=true db.usage.autoReconnectForPools=true db.usage.secondsBeforeRetryMaster=3600 db.usage.queriesBeforeRetryMaster=5000 db.usage.initialTimeout=3600 ---------------------------------------------------- When I stop the mysql service or disable the NIC to stop connectivity, Cloudstack does not use the second mysql server. The UI keeps loading, and the management service cannot be restarted. I am getting these logs on the management server: ---------------------------------------------------------- Unable to keep the db connection for LockMaster1 java[358521]: java.sql.SQLNonTransientConnectionException: Server shutdown in progress java[358521]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) java[358521]: at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) java[358521]: at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) java[358521]: at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) java[358521]: at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003) java[358521]: at jdk.internal.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) java[358521]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java[358521]: at java.base/java.lang.reflect.Method.invoke(Method.java:566) java[358521]: at com.mysql.cj.jdbc.ha.MultiHostConnectionProxy$JdbcInterfaceProxy.invoke(MultiHostConnectionProxy.java:108) java[358521]: at com.mysql.cj.jdbc.ha.FailoverConnectionProxy$FailoverJdbcInterfaceProxy.invoke(FailoverConnectionProxy.java:98) java[358521]: at com.sun.proxy.$Proxy25.executeQuery(Unknown Source) java[358521]: at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122) java[358521]: at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122) java[358521]: at com.cloud.utils.db.ConnectionConcierge$ConnectionConciergeManager.testValidity(ConnectionConcierge.java:148) java[358521]: at com.cloud.utils.db.ConnectionConcierge$ConnectionConciergeManager$1.runInContext(ConnectionConcierge.java:203) java[358521]: at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:48) java[358521]: at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55) java[358521]: at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102) java[358521]: at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52) java[358521]: at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:45) java[358521]: at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) java[358521]: at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) java[358521]: at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) java[358521]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) java[358521]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) java[358521]: at java.base/java.lang.Thread.run(Thread.java:829) ---------------------------------------------------------------------------------------- We are using Mysql version 8.0.33 on Ubuntu 20.04. I can see on the CS documentation, it has been "Tested with MySQL 5.1 and 5.5.", not sure if it has been tested on newer version as well? Is there something else that need to be configured? Thanks