本文介绍使用HAProxy作为Load Balancer在Ubuntu 18.04上设置MariaDB Galera Cluster(MariaDB Galera集群)的步骤,它是MariaDB的同步多主集群,支持XtraDB/InnoDB存储引擎,设置后还可以获得连接客户端的小延迟读写的可扩展性。
前言 设置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_%'"
初始簇大小应为1: # mysql -u root -p -e "show status like 'wsrep_cluster_size'"
在galera-node-02上,启动mariadb服务: # systemctl start mariadb 再次检查群集大小,它应该已更改为2: # mysql -u root -p -e "show status like 'wsrep_cluster_size'"
在galera-db-03上启动mariadb: # systemctl start mariadb 再次检查簇大小,应为3: # mysql -u root -p -e "show status like 'wsrep_cluster_size'"
如果一切设置正确,你可以开始测试了。
步骤5:测试Galera群集操作 为了测试我们的Galera集群,我们将在一台服务器上创建一个测试数据库,并确认它已在其他节点上复制,以root用户身份登录Galera cluster的任何成员: root@galera-node-01:~# mysql -u root -p MariaDB [(none)]> create database galera_test;
登录到其他节点,检查数据库是否存在: MariaDB [(none)]> show databases;
附:安装和配置HAProxy 有关安装和配置HAProxy作为MariaDB Galera集群的负载均衡器,请参考在Ubuntu 18.04/CentOS 7上使用HAProxy进行Galera集群高可用性。
相关主题 |