Step 6: Start and Configure MariaDB MaxScale
This page is part of MariaDB's Documentation.
The parent of this page is: Deploy Primary/Replica Topology with Enterprise Server 10.4
Topics on this page:
Overview
This page details step 6 of the 7-step procedure "Deploy Primary/Replica Topology".
This step starts and configures MariaDB MaxScale 2.5.
Interactive commands are detailed. Alternatively, the described operations can be performed using automation.
Replace the Default Configuration File
MariaDB MaxScale installations include a configuration file with some example objects. This configuration file should be replaced.
On the MaxScale node, replace the default /etc/maxscale.cnf
with the following configuration:
[maxscale]
threads = auto
admin_host = 0.0.0.0
admin_secure_gui = false
For additional information, see "Global Parameters".
Restart MaxScale
On the MaxScale node, restart the MaxScale service to ensure that MaxScale picks up the new configuration:
$ sudo systemctl restart maxscale
For additional information, see "Start and Stop Services".
Configure Server Objects
On the MaxScale node, use maxctrl create server to create a server object for each MariaDB Enterprise Server:
$ maxctrl create server node1 192.0.2.101
$ maxctrl create server node2 192.0.2.102
$ maxctrl create server node3 192.0.2.103
Configure MariaDB Monitor
MaxScale uses monitors to retrieve additional information from the servers. This information is used by other services in filtering and routing connections based on the current state of the node. For MariaDB Replication, use the MariaDB Monitor (mariadbmon
).
On the MaxScale node, use maxctrl create monitor to create a MariaDB Monitor:
$ maxctrl create monitor mdb_monitor mariadbmon \
--monitor-user mxs \
--monitor-password 'MAXSCALE_USER_PASSWORD' \
replication_user=repl \
replication_password='REPLICATION_USER_PASSWORD' \
--servers node1 node2 node3
In this example:
mdb_monitor
is an arbitrary name that is used to identify the new monitor.mariadbmon
is the name of the module that implements the MariaDB Monitor.--monitor-user MAXSCALE_USER
sets theuser
parameter to the database user account that MaxScale uses to monitor the ES nodes.--monitor-password 'MAXSCALE_USER_PASSWORD'
sets thepassword
parameter to the password used by the database user account that MaxScale uses to monitor the ES nodes.replication_user=REPLICATION_USER
sets thereplication_user
parameter to the database user account that MaxScale uses to setup replication.replication_password='REPLICATION_USER_PASSWORD'
sets thereplication_password
parameter to the password used by the database user account that MaxScale uses to setup replication.--servers
sets theservers
parameter to the set of nodes that MaxScale should monitor. All non-option arguments after--servers
are interpreted as server names.Other Module Parameters supported by
mariadbmon
in MaxScale 2.5 can also be specified.
Choose a MaxScale Router
Routers control how MaxScale balances the load between Enterprise Server nodes. Each router uses a different approach to routing queries. Consider the specific use case of your application and database load and select the router that best suits your needs.
Router | Configuration Procedure | Description |
---|---|---|
| ||
|
Configure Read Connection Router
Use MaxScale Read Connection Router (readconnroute) to route connections to replica servers for a read-only pool.
On the MaxScale node, use maxctrl create service to create a router:
$ maxctrl create service connection_router_service readconnroute \
user=mxs \
password='MAXSCALE_USER_PASSWORD' \
router_options=slave \
--servers node1 node2 node3
In this example:
connection_router_service
is an arbitrary name that is used to identify the new service.readconnroute
is the name of the module that implements the Read Connection Router.user=MAXSCALE_USER
sets theuser
parameter to the database user account that MaxScale uses to connect to the ES nodes.password=MAXSCALE_USER_PASSWORD
sets thepassword
parameter to the password used by the database user account that MaxScale uses to connect to the ES nodes.router_options=slave
sets therouter_options
parameter parameter toslave
, so that MaxScale only routes connections to the replica nodes.--servers
sets theservers
parameter to the set of nodes to which MaxScale should route connections. All non-option arguments after--servers
are interpreted as server names.Other Module Parameters supported by
readconnroute
in MaxScale 2.5 can also be specified.
Configure Listener for the Read Connection Router
These instructions reference TCP port 3308
. You can use a different TCP port. The TCP port used must not be bound by any other listener.
On the MaxScale node, use the maxctrl create listener command to configure MaxScale to use a listener for the Read Connection Router (readconnroute):
$ maxctrl create listener connection_router_service connection_router_listener 3308 \
--protocol=MariaDBClient
In this example:
connection_router_service
is the name of thereadconnroute
service that was previously created.connection_router_listener
is an arbitrary name that is used to identify the new listener.3308
is the TCP port.--protocol=MariaDBClient
sets theprotocol
parameter.Other Module Parameters supported by listeners in MaxScale 2.5 can also be specified.
Configure Read/Write Split Router for Queries
MaxScale Read/Write Split Router (readwritesplit) performs query-based load balancing. The router routes write queries to the primary and read queries to the replicas.
On the MaxScale node, use the maxctrl create service command to configure MaxScale to use the Read/Write Split Router (readwritesplit):
$ maxctrl create service query_router_service readwritesplit \
user=mxs \
password='MAXSCALE_USER_PASSWORD' \
--servers node1 node2 node3
In this example:
query_router_service
is an arbitrary name that is used to identify the new service.readwritesplit
is the name of the module that implements the Read/Write Split Router.user=MAXSCALE_USER
sets theuser
parameter to the database user account that MaxScale uses to connect to the ES nodes.password=MAXSCALE_USER_PASSWORD
sets thepassword
parameter to the password used by the database user account that MaxScale uses to connect to the ES nodes.--servers
sets theservers
parameter to the set of nodes to which MaxScale should route queries. All non-option arguments after--servers
are interpreted as server names.Other Module Parameters supported by
readwritesplit
in MaxScale 2.5 can also be specified.
Configure a Listener for the Read/Write Split Router
These instructions reference TCP port 3307
. You can use a different TCP port. The TCP port used must not be bound by any other listener.
On the MaxScale node, use the maxctrl create listener command to configure MaxScale to use a listener for the Read/Write Split Router (readwritesplit):
$ maxctrl create listener query_router_service query_router_listener 3307 \
--protocol=MariaDBClient
In this example:
query_router_service
is the name of thereadwritesplit
service that was previously created.query_router_listener
is an arbitrary name that is used to identify the new listener.3307
is the TCP port.--protocol=MariaDBClient
sets theprotocol
parameter.Other Module Parameters supported by listeners in MaxScale 2.5 can also be specified.
Start Services
To start the services and monitors, on the MaxScale node use maxctrl start services:
$ maxctrl start services