如何在CentOS上与Haproxy设置MariaDb Galera集群7
在今天的文章中,我们将使用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的过程