Home Archives Categories Tags

mariadb5.5.36_galera_haproxy集群配置

发布时间: 更新时间: 总字数:1130 阅读时间:3m 作者: 分享

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"

参考

最新评论
加载中...