Hi Frederic, First of all, have you installed the cloudstack-mysql-ha package? If so, can you look through the logs on cloudstack-management startup, and check to see whether the jar is being loaded?
-Si On Fri, May 26, 2023 at 3:27 AM Frederic Larcher <frederic.larc...@quadris.co.uk.invalid> wrote: > 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 >