云网牛站
所在位置:首页 > Linux云服务器 > 使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

2019-02-23 21:05:40作者:陈铜稿源:云网牛站

本文介绍使用HAProxy作为Load Balancer在Ubuntu 18.04上设置MariaDB Galera Cluster(MariaDB Galera集群)的步骤,它是MariaDB的同步多主集群,支持XtraDB/InnoDB存储引擎,设置后还可以获得连接客户端的小延迟读写的可扩展性。

 

前言

设置MariaDB Galera Cluster时,建议使用奇数个服务器,最少是三台服务器,我的实验室环境将基于下图:

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

在我的所有配置中,我更喜欢使用主机名而不是硬编码的IP地址,为此做准备,让我们使用正确的短主机名和所有服务器的IP地址填充/etc/hosts:

# cat /etc/hosts

10.131.69.129 galera-haproxy-01

10.131.74.92 galera-db-01

10.131.35.167 galera-db-02

10.131.65.13 galera-db-03

你一定注意到我的服务器不在同一个子网上,建议这样做以确保网络端没有单点故障,你可以使用ping测试一切正常。

 

步骤1:在Galera节点上安装MariaDB数据库

我们将从所有Galera集群节点上安装MariaDB开始:galera-db-01、galera-db-02、galera-db-03。

在Ubuntu 18.04上安装MariaDB请参考在Ubuntu 18.04系统上安装MariaDB 10.4的步骤

完成所有节点上的MariaDB数据库服务器安装后,请继续执行下一步。

 

步骤2:配置第一个Galera Cluster节点

设置Galera Cluster时,你需要从一个将承担master角色的节点开始,编辑第一个节点主配置以配置默认字符集:

$ sudo vim /etc/mysql/mariadb.cnf

取消注释这些行:

character-set-server = utf8

character_set_server = utf8

然后添加Galera特定配置:

# vim /etc/mysql/mariadb.conf.d/galera.cnf

在galera-db-01 Galera配置文件中添加以下内容:

[mysqld]

bind-address=0.0.0.0

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2

# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.131.74.92,10.131.35.167,10.131.65.13"

wsrep_cluster_name="mariadb-galera-cluster"

wsrep_sst_method=rsync

# Cluster node configuration

wsrep_node_address="10.131.74.92"

wsrep_node_name="galera-db-01"

Rember用Galera集群节点IP地址替换10.131.74.92,10.131.35.167,10.131.65.13。

 

步骤3:配置其他Galera群集节点

我们现在需要向Galera集群节点2和节点3添加配置。

对于galera-db-02:

root@galera-db-02:~# cat /etc/mysql/mariadb.conf.d/galera.cnf

[mysqld]

bind-address=0.0.0.0

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2

# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.131.74.92,10.131.35.167,10.131.65.13"

wsrep_cluster_name="mariadb-galera-cluster"

wsrep_sst_method=rsync

# Cluster node configuration

wsrep_node_address="10.131.35.167"

wsrep_node_name="galera-db-02"

对于galera-db-03:

root@galera-db-03:~# cat /etc/mysql/mariadb.conf.d/galera.cnf

[mysqld]

bind-address=0.0.0.0

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2

# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.131.74.92,10.131.35.167,10.131.65.13"

wsrep_cluster_name="mariadb-galera-cluster"

wsrep_sst_method=rsync

# Cluster node configuration

wsrep_node_address="10.131.65.13"

wsrep_node_name="galera-db-03"

你必须注意到每个节点上的更改是群集节点配置。

 

步骤4:在Ubuntu 18.04上启动Galera Cluster

在所有三个节点上停止mariadb:

# systemctl stop mariadb

现在在节点1上启动新的Galera集群 - galera-node-01:

# galera_new_cluster

检查Galera状态是否正在运行:

# mysql -u root -p -e "show status like 'wsrep_%'"

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

初始簇大小应为1:

# mysql -u root -p -e "show status like 'wsrep_cluster_size'"

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

在galera-node-02上,启动mariadb服务:

# systemctl start mariadb

再次检查群集大小,它应该已更改为2:

# mysql -u root -p -e "show status like 'wsrep_cluster_size'"

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

在galera-db-03上启动mariadb:

# systemctl start mariadb

再次检查簇大小,应为3:

# mysql -u root -p -e "show status like 'wsrep_cluster_size'"

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

如果一切设置正确,你可以开始测试了。

 

步骤5:测试Galera群集操作

为了测试我们的Galera集群,我们将在一台服务器上创建一个测试数据库,并确认它已在其他节点上复制,以root用户身份登录Galera cluster的任何成员:

root@galera-node-01:~# mysql -u root -p

MariaDB [(none)]> create database galera_test;

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

登录到其他节点,检查数据库是否存在:

MariaDB [(none)]> show databases;

使用HAProxy在Ubuntu 18.04上设置MariaDB Galera Cluster的步骤

附:安装和配置HAProxy

有关安装和配置HAProxy作为MariaDB Galera集群的负载均衡器,请参考在Ubuntu 18.04/CentOS 7上使用HAProxy进行Galera集群高可用性

 

相关主题

在Ubuntu 18.04 Server中安装LEMP的方法[Nginx、MariaDB、PHP7.2]

精选文章
热门文章