MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6

Haproxy 实现数据库的负载均衡,健康监测.权重分发.

IP规划:

192.168.0.221 os---221     db
192.168.0.222 os---222     db
192.168.0.223 os---223     db
192.168.0.224 os---224     haproxy
192.168.0.225 os---225     haproxy
VIP: 192.168.0.226

准备:

三台主机安装之前,必须先设置selinux 、hostname 和  iptables; 如下:

(1)禁止selinux
selinux=Disabled

(2)配置防火墙 
service iptables stop 
chkconfig  iptables  off
iptables  -F

(3)编辑hosts文件
vi /etc/hosts
192.168.0.221 os---221
192.168.0.222 os---222
192.168.0.223 os---223
(4)reboot

1.添加mariadb.repo,yum 源

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum makecache

2.安装

yum install MariaDB-Galera-server MariaDB-client galera

3. 在三台主机上初始化mariadb,并且创建集群账户

All  nodes:

初始化如下:
service mysql start
mysql_secure_installation  #提示创建密码,root是否远程登录,删除test数据库。

授权账户如下:
mysql  -p
GRANT ALL PRIVILEGES ON *.* TO ‘cp‘@‘%‘ IDENTIFIED BY ‘123‘ WITH GRANT OPTION;
flush privileges;
quit

然后停止All Nodes的数据
service mysql stop

4.建立集群:Setup Cluster Configuration on Client221

vi /etc/my.cnf.d/server.conf
[mariadb]
query_cache_size=0
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.223,192.168.0.222
wsrep_cluster_name=‘cp‘
wsrep_node_address=‘192.168.0.221‘
wsrep_node_name=‘os6---221‘
wsrep_sst_method=rsync
wsrep_sst_auth=cp:123

保存退出后,执行

/etc/init.d/mysql bootstrap

5. 建立集群:Setup Cluster Configuration on Client222,只有三处和上面不同

[mariadb]
query_cache_size=0
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.221,192.168.0.223
wsrep_cluster_name=‘cp‘
wsrep_node_address=‘192.168.0.222‘
wsrep_node_name=‘os6---222‘
wsrep_sst_method=rsync
wsrep_sst_auth=cp:123

最后

/etc/init.d/mysql start

6. 建立集群:Setup Cluster Configuration on Client223,同样只有三处和上面不同

[mariadb]
query_cache_size=0
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.221,192.168.0.222
wsrep_cluster_name=‘cp‘
wsrep_node_address=‘192.168.0.223‘
wsrep_node_name=‘os6---223‘
wsrep_sst_method=rsync
wsrep_sst_auth=cp:123

最后

 /etc/init.d/mysql start

7. 测试集群

省略

8.安装haproxy,分别在192.168.0.224和192.168.0.225

yum  install  haproxy  -y

9.配置haproxy,编辑/usr/local/haproxy/etc/haproxy.cfg,分别在192.168.0.224和192.168.0.225

mv   /usr/local/haproxy/etc/haproxy.cfg  /usr/local/haproxy/etc/haproxy.cfg.bak
vi  /usr/local/haproxy/etc/haproxy.cfg
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
 
defaults
log global
retries 2
timeout connect 1000
timeout server 5000
timeout client 5000
 
listen mariadb-cluster
bind 0.0.0.0:3306
mode tcp
option mysql-check user haproxy
balance roundrobin
server DB221 192.168.0.221:3306 check
server DB222 192.168.0.222:3306 check
server DB223 192.168.0.223:3306 check
 
listen webinterface
bind 0.0.0.0:8080
mode http
stats enable
stats uri   /haproxy/stats
stats realm Strictly\ Private
stats auth haproxy:haproxy

10.在数据库上建立一个用户,用于haproxy对db的检测

主意: 再一台数据库上执行即可.不必要再3台DB上全部执行.

CREATE USER ‘haproxy‘@‘192.168.0.224‘;
CREATE USER ‘haproxy‘@‘192.168.0.225‘;
FLUSH  PRIVILEGES;

11.启动haproxy

service haproxy  start

开机启动

echo "/etc/init.d/haproxy  start"  >>/etc/rc.local

访问haproxy的检测页面:

224:  http://192.1680.224/haproxy/stats           user:haproxy  pass:haproxy
225:  http://192.168.0.225/haproxy/stats          user:haproxy  pass:haproxy

试图登陆mysql:

mysql -h 192.168.0.224 -P 3306 -p
mysql -h 192.168.0.225 -P 3306 -p

测试:

任意关闭其中一个数据库/两个数据库,测试连通性

12.安装keepalived

脚本安装:省略

13.配置主haproxy(192.168.0.224)的keepalived配置文件

vi  /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 8
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.226
    }
    track_script {
         chk_haproxy
}
}

14.配置备haproxy(192.168.0.225)的keepalived配置文件

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
weight 2
}
vrrp_instance VI_1 {
    state SLAVE
    interface eth0
    virtual_router_id 8
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.226
    }
    track_script {
         chk_haproxy
}
}

15.启动haproxy和keepalived,测试haproxy的高可用

service  haproxy  start 
service  keepalived start

测试过程省略.

16.授权mysql的root用户可以在任意的IP地址下登陆

mysql  -p 
>grant  all  privileges  on *.*  to  [email protected]‘%‘  identified  by ‘123‘  with grant option;
>flush privileges;

17.测试登陆,查看是否每次重新连接mysql实例,是否达到负载均衡的效果

[[email protected] xinetd.d]# mysql -h 192.168.0.226  -p
Enter password:
MariaDB [(none)]> show  variables  like  ‘wsrep_node_name‘;
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| wsrep_node_name | os6---222 |
+-----------------+-----------+
1 row in set (0.00 sec)
MariaDB [(none)]> exit
Bye

[[email protected] xinetd.d]# mysql -h 192.168.0.226  -p
Enter password:
MariaDB [(none)]> show  variables  like  ‘wsrep_node_name‘;
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| wsrep_node_name | os6---223 |
+-----------------+-----------+
1 row in set (0.00 sec)
MariaDB [(none)]> exit
Bye

[[email protected] xinetd.d]# mysql -h 192.168.0.226  -p
Enter password:
MariaDB [(none)]> show  variables  like  ‘wsrep_node_name‘;
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| wsrep_node_name | os6---221 |
+-----------------+-----------+
1 row in set (0.01 sec)
时间: 2024-10-08 18:20:39

MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6的相关文章

haproxy+keepalived来实现mariadb galera cluster的高可用架构

网络拓扑图如下: mariadb galera cluster集群基于wsrep协议可以实现mysql多主复制架构,详细说明如下: galera cluster复制: galera cluster本身是基于wsrep协议工作在底层的文件复制通道而已,只需要指明复制的文件,它会自动在多个节点之间的检测文件状态并完成数据同步.并且galera cluster向上提供API,其他组件只需调用其API,即可完成所需的文件复制功能. galera cluster向上提供API,mysql只需调用其API即

MariaDB Galera Cluster应用实践

数据是互联网公司的核心资产,所以好多公司在架构设计上不仅要保证业务系统的高可用,同时还要考虑数据存储的高可用以及安全性.在职公司是一家创业型公司,之前的应用系统是由.Net 和SQLserver组合的架构,由于存在业务量的增长,技术部门采用Java重构整个应用系统.数据库选择开源数据库MYSQL,从刚开始都现在踩了相当多的坑,在此给大家分享一下. 环境介绍: 服务器:阿里云主机 磁盘类型:SSD 操作系统:CentOS6.5 64位 软件版本:5.5.50-MariaDB-wsrep 1.数据库

MariaDB Galera Cluster集群企业版编译安装与配置

安装环境 系统:CentOS 6.8 x86_64 软件:MariaDB 10.1.16 节点一:192.168.11.132 4C 8GB 节点二:192.168.11.133 4C 8GB 软件获取 访问MariaDB企业版下载地址 https://mariadb.com/my_portal/download/mariadb-enterprise 登录帐号后选择 10.1.16GA版本 源代码包下载. 从MariaDB Enterprise 10.1版本开始,企业版软件包与集群功能集成到一起

Centos7安装mariadb galera cluster数据库集群 & 详解

#Galera集群特点 集群之间无延时,同步复制.而master-slave主从异步复制,存在延迟. active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈完成,所以不存在数据丢失的情况. 集群节点自动故障转移,如果集群中单个节点故障,失效节点会自动被清除. 扩展方便,只要将新的节点添加到集群,新节点自动复制数据. #Galera集群原理     #主要通过galera插件保证数据的一致性,该数据复制的过程是可认证的复制,原理如下: #解析

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)  OneAPM蓝海讯通7月3日 发布 推荐 4 推荐 收藏 14 收藏,1.1k 浏览 MariaDB 作为 Mysql 的一个分支,在开源项目中已经广泛使用,例如大热的 openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的. MariaDB Galera Cluster 介绍 MariaDB 集群是 MariaDB 同步多主机集群.它仅支持 XtraDB/ Inn

Install MariaDB Galera Cluster 10.0.20

安装环境: OS:Centos 6.6 [[email protected] ~]# uname -a Linux heartbeat1 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 数据库软件:MariaDB Galera Cluster 10.0.20 主机配置: Heartbeat1 10.0.0.7 Heartbeat2 10.0.0.8 Heartbeat

MariaDB Galera Cluster环境搭建及高可用测试

一.服务器概况Galera Cluster需要至少三个节点,在此次实验过程中,三个节点IP地址:192.168.56.101192.168.56.102192.168.56.103OS为centos 7.2服务器配置:4G 内存,2核CPU,20G数据磁盘空间. 关闭防火墙: service iptables stop systemctl stop firewalld chkconfig iptables off 关闭SELinux: /etc/selinux/config中的SELINUX=d

MariaDB Galera Cluster 部署

原文  http://code.oneapm.com/database/2015/07/02/mariadb-galera-cluster/MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的. MariaDB Galera Cluster 介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看w

MariaDB Galera Cluster集群

一.MariaDB Galera Cluster概要: 1.简述: MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到 各个节点上去.在数据方面完全兼容 MariaDB 和 MySQL. 2.特性: (1).同步复制 Synchronous replication (2).Active-active multi-master 拓扑逻辑 (