mariadb5.5.36_galera_haproxy集群配置
环境条件:
- db1: 192.168.4.160(以下简称160)
- db2: 192.168.4.161(以下简称161)
- haproxy: 192.168.4.165(以下简称165)
部署软件版本
mariadb-galera-common-5.5.36-9.el6.x86_64.rpm
mariadb-galera-server-5.5.36-9.el6.x86_64.rpm
galera-25.3.5-2.el6.x86_64.rpm
haproxy-1.5.2-2.el6.x86_64.rpm
rsync-3.0.6-12.el6.x86_64.rpm
环境准备
修改/etc/selinux/config中的SELINUX=enforcing,为SELINUX=permissive,重启机器
软件安装
160和161的共同部分
1)分别在160和161上安装mariadb、galera、rsync
yum install MariaDB-Galera-server MariaDB-client rsync galera
2)分别在160和161的mariadb中设置账户
启动mysqld: service mysqld start
运行:/usr/bin/mysql_secure_installation ,修改mariadb
root密码,其他的项选y
运行:mysql -u root -p 进入mysql控制台,执行下面语句,
// 为galera设置账户:
mysql> DELETE FROM mysql.user WHERE user='';
mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT ALL PRIVILEGES on *.* to sst_user@'%';
mysql> FLUSH PRIVILEGES;
// 为haproxy设置账户
mysql> USE mysql;
mysql> INSERT INTO mysql.`user` (user.`Host`,user.`User`) VALUES ('%','haproxy_check_user');
mysql> FLUSH PRIVILEGES;
mysql> quit
说明:
- sst_user为galera同步数据是使用的账户,下面会在galera.cnf配置中使用到;
- 设置防火墙规则,对3306和4567端口进行
iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 4567 -j ACCEPT
!includedir /etc/my.cnf.d/
分别设置galera
- 修改160中的/etc/my.cnf.d/galera.cnf文件
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://"
wsrep_cluster_name='galera_cluster'
wsrep_node_name='db1'
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass
说明:
- wsrep_cluster_address但是集群中第一个节点启动时填空ip,以后节点中配置前一个节点的IP地址;
- wsrep_sst_auth中sst_user:root为3.1中配置的mysql账户和密码
- 修改160中的/etc/my.cnf.d/galera.cnf文件
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.4.161"
wsrep_cluster_name='galera_cluster'
wsrep_node_name='db2'
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass
说明:与1)不同有wsrep_cluster_address和wsrep_node_name,其他都一样。
启动mariadb集群
启动集群第一个节点(160):service mysqld start –wsrep-new-cluster
启动集群第二个节点(161):service mysqld start
检测集群是否启动成功:
登录任意节点的MariaDB
mysql -u root -p
mysql> show status like 'wsrep%';
看到下面参数时,说明集群配置成功。
| wsrep_incoming_addresses | 192.168.4.160:3306,192.168.4.161:3306 |
| wsrep_cluster_conf_id | 2 |
| wsrep_cluster_size | 2 |
*****************clustercheck??
在165上安装haproxy
1)安装haproxy-1.5.2-2.el6.x86_64.rpm
2)配置/etc/haproxy/haproxy.cnf
屏蔽以下两项:
# option httplog
# option forwardfor
except 127.0.0.0/8
添加:
listen mariadb
mode tcp
# bind *:3306
bind
192.168.4.165:3306
option httpchk
option tcpka
balance roundrobin
option mysql-check user
haproxy_check_user
server db1
192.168.4.160:3306 weight 1 check inter 2000 rise 2 fall 5
server db2
192.168.4.161:3306 weight 1 check inter 2000 rise 2 fall 5
3)打开3306端口,启动haproxy:
service haproxy start
2节点mariadb glare 配置:
#/etc/my.cnf.d/galera.cnf
# Provider specific configuration options
wsrep_provider_options="pc.ignore_quorum=TRUE"
wsrep_provider_options="pc.ignore_sb=TRUE"