- Lab
- A Cloud Guru
Creating a Galera Cluster with LXD
LXD offers a quick-to-deploy, highly-efficient environment in which we can host a fault-resistant Galera cluster. In this hands-on lab, we'll do just that by creating and configuring an initial container, then using that as a basis for a three-node Galera cluster.
Path Info
Table of Contents
-
Challenge
Configure the Initial Cluster Containers
Create the container:
lxc launch ubuntu:18.04 galera01
Access the container and run initial updates:
lxc exec galera01 -- bash apt update apt upgrade
Add the MariaDB repository:
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 add-apt-repository 'deb [arch=amd64,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu bionic main' apt update
Install MariaDB:
apt install mariadb-server -y
Run
mysql_secure_installation
:mysql_secure_installation
Update the
innodb_buffer_pool_size
for the MariaDB configuration:vim /etc/mysql/my.cnf
innodb_buffer_pool_size = 16M
Configure the firewall:
ufw enable ufw allow 3306/tcp ufw allow 4444/tcp ufw allow 4567/tcp ufw allow 4568/tcp ufw allow 4567/udp ufw status
Exit the container and take a snapshot:
exit lxc snapshot galera01 init
Create the two additional containers and start them:
lxc copy galera01/init galera02 lxc copy galera01/init galera03 lxc start galera02 lxc start galera03
-
Challenge
Configure Galera
View all containers and make note of each IP address:
lxc list
Open the
galera.cnf
configuration in thecloud_user
's home directory and update thewsrep_cluster_address
to list all IP addresses. Update thewsrep_node_address
andwsrep_node_name
for thegalera01
node:vim galera.cnf
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://<IP_ADDRESS>,<IP_ADDRESS>,<IP_ADDRESS>" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="<IP_ADDRESS>" wsrep_node_name="galera01"
Push to the first container:
lxc file push galera.cnf galera01/etc/mysql/conf.d/galera.cnf
Update the configuration file again, changing the
address
andname
so it works withgalera02
:vim galera.cnf
wsrep_node_address="<IP_ADDRESS>" wsrep_node_name="galera02"
lxc file push galera.cnf galera02/etc/mysql/conf.d/galera.cnf
Do the same for
galera03
:vim galera.cnf
wsrep_node_address="<IP_ADDRESS>" wsrep_node_name="galera03"
lxc file push galera.cnf galera03/etc/mysql/conf.d/galera.cnf
-
Challenge
Start the Cluster
Stop MySQL on all nodes:
lxc exec galera01 -- systemctl stop mysql lxc exec galera02 -- systemctl stop mysql lxc exec galera03 -- systemctl stop mysql
Start the Galera cluster:
lxc exec galera01 -- galera_new_cluster lxc exec galera02 -- systemctl start mysql lxc exec galera03 -- systemctl start mysql
To confirm that everything is working, view the cluster size on all containers:
lxc exec galera01 -- mysql -u root -p -e "show status like 'wsrep_cluster_size'" lxc exec galera02 -- mysql -u root -p -e "show status like 'wsrep_cluster_size'" lxc exec galera03 -- mysql -u root -p -e "show status like 'wsrep_cluster_size'"
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.