mariadb5.5.36_galera_haproxy集群配置

发布时间: 更新时间: 总字数:1130 阅读时间:3m 作者: IP属地: 分享 复制网址

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
  • 在/etc/my.cnf中添加:
!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"

参考

  1. http://behindtheracks.com/2014/04/mysql-high-availability-with-galera-and-haproxy/
  2. http://nirbhay.in/2014/08/selinux-for-galera-cluster/
  3. http://blog.csdn.net/mr_mablevi/article/details/5881491
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数