如何在CentOS上与Haproxy设置MariaDb Galera集群7

时间:2020-03-05 15:31:09  来源:igfitidea点击:

在今天的文章中,我们将使用Haproxy安装Mariadb Galera集群,用于负载平衡MariaDB和WordPress。
Galera是主动主动聚类技术,这意味着它可以支持在跨群集中复制的所有节点上的写入。
还有主动被动群集,只有节点可写。
我们还将在我们的集群上安装HAProxy以进行负载平衡。
安装将在5位CentOS 7服务器上完成,三个是Mariadb 10. 1 Galera,一个用于Haproxy,一个用于WordPress。
HAProxy以这样的方式运行,即它在循环模式下将请求路由到每个节点,同时将其自身作为前端呈现。
其中我们正在使用坐在专用网络中的数据库服务器来使用群集的交易方式,并且只有WebServer就会面临公共IP地址。

设置Galera Cluster

在所有服务器上,我们需要安装MySQL。
首先,我们将添加存储库

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

然后我们安装MariaDB,Rsync和Xinetd

sudo yum install mariadb-server rsync xinetd

我们需要编辑/etc/hosts,任何编辑器都将要做,但我将使用nano

nano /etc/hosts

例如,有IP和主机的名称

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

确保使用主机的私有IP,如果使用公共信息,我们需要加密它们之间的流量以保护群集。

安装MariaDB后,编辑

nano /etc/my.cnf.d/server.cnf

在所有服务器上,我们需要在文件中查找[Galera]部分并使其如下所示,保存为粗体的IP地址,并应更改

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="theitroad_cluster"
# Allow server to accept connections on all interfaces.
bind-address=0.0.0.0
# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"
wsrep_sst_method=rsync

启动Galera Cluster

在配置之后,我们需要启动群集

首先是MariadB01节点,该节点是具有此命令的主设备

galera_new_cluster

然后在具有普通SystemCtl命令的其他两个节点上:

systemctl start mariadb

接下来,我们可以验证群集是否正在运行:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

接下来是运行mysql_secure_installation脚本

mysql_secure_installation

设置防火墙

现在,当连接所有三个节点时,我们可以提出防火墙并配置它。

systemctl start firewalld

打开MariaDB客户端和Galera Replication Ports:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

打开我们用于复制的rsync端口

firewall-cmd --permanent --add-port=873/tcp

其他重要港口

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

最后重新加载防火墙

firewall-cmd --reload

使用xinetd和clustercheck

ClusterCheck是监视群集的有用脚本。
允许通过以下命令安装它

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

接下来,我们需要将mysqlchk添加到服务列表中。
对于我们编辑服务文件:

nano /etc/services

由于它是长文件,在Nano类型Ctrl-W中,并搜索9200.使用该端口的所有服务都需要注释,并且需要添加新服务,以便该部分需要如下所示:

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

当这是萨格德和完成的时候,我们可以启动xinetd

systemctl start xinetd

所有这一切都需要在所有节点上完成,现在只有在主设备上,我们需要为群集拍摄用户添加用户。

mysql -u root -p
GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;

接下来我们可以尝试群集卷曲脚本

clustercheck

设置haproxy.

登录我们指定的HAProxy服务器。
我们现在正在安装负载平衡器

编辑我们/etc/hosts文件的文件(当然,使用IPS)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

接下来我们可以安装haproxy

yum install haproxy

接下来我们需要编辑rsyslog。
conf

nano /etc/rsyslog.conf

取消注释这两条线

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

保存并退出

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

让备份默认HAPROXY配置

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

接下来我们用nano制作新文件

nano /etc/haproxy/haproxy.cfg

使用此Pastebin作为配置,但更改IP地址。

是时候在HAProxy节点上设置防火墙了

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp

然后重新加载防火墙

firewall-cmd --reload

设置从haproxy访问mariadb

在MariaDB集群类型:

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

然后我们转到HAProxy01服务器并尝试访问数据库。

我们必须安装MariaDB-Client,所以让我们首先这样做:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

这是用于添加存储库,此命令安装它

yum install MariaDB-client

然后让我们来测试

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

确保输入upstrongpassword作为密码而不是常规root密码。

安装WordPress

最后,我们将设置WordPress以在我们的群集上使用。
在HAProxy01和WP01节点上的MariadB01节点上有工作要完成。

在Mariadb01上

mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

在/etc/hosts中设置的wp01节点/

192.168.220.17 wp01
192.168.210.252 haproxy01

同样在haproxy01上添加

192.168.220.17 wp01

接下来,我们需要在WP01节点上安装所需的软件包

yum install httpd php php-gd php-mysqlnd rsync

从其中我们需要使用sudo权限使用非root帐户。
我没有一个,所以我会创造它:

useradd miki
usermod miki -aG wheel
passwd miki

然后登录我的用户

su miki

将目录更改为家

cd

然后下载最新版本的WordPress并解压缩它

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

我们将使用rsync将WordPress复制到Apache Dir

sudo rsync -avP ~/wordpress//var/www/html/
mkdir /var/www/html/wp-content/uploads

我们还需要将所有权更改为Apache用户

sudo chown -R apache:apache /var/www/html/*

配置WordPress

WordPress在WP-Config中配置。
PHP文件,我们需要设置数据库服务器,登录凭据,数据库名称的主机地址等参数。
允许备份配置文件:

cd /var/www/html
cp wp-config-sample.php wp-config.php

然后我们做编辑:

nano wp-config.php

只改变这些行

define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

最后,我们重新启动Apache WebServer:

sudo systemctl restart httpd

从浏览器完成WordPress的安装

我们可以访问像Bellow这样的WordPress节点的公共地址,以继续安装Word-Bress的过程