mariadb5.5.36_galera_haproxy集群配置

发布时间: 更新时间: 总字数:900 阅读时间:2m 作者: 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
本文总阅读量 次 本站总访问量 次 本站总访客数