mariadb galera cluster+haproxy+keepalived

目录

参考资料

相关知识

拓扑结构

操作步骤

一、安装mysql galera软件

1.1、创建用户

1.2、创建数据文件文件夹

1.3、安装mysql(需要注意依赖性,最好按顺序安装)

二、修改mysql相关配置

2.1、修改配置文件

2.2、创造mysql的相关文件

2.3、初始化

三、验证集群情况

3.1、修改root密码

3.2、查看集群情况

四、部署haproxy+keepalived

4.1、安装配置haproxy(两个节点都一样的操作,一样的配置中)

4.2、安装配饰keepalived(两个节点配置不一样,分主和备)

4.2.1、主节点keepalived.conf配置

4.2.2、主节点check_haproxy.sh脚本

4.2.3、备节点keepalived.conf配置

4.2.3、备节点check_haproxy.sh配置


参考资料

https://blog.51cto.com/changeflyhigh/1886032

https://blog.csdn.net/wo18237095579/article/details/81270954

https://www.iteye.com/news/30701

相关知识

mariadb galera cluster集群基于wsrep协议可以实现mysql多主复制架构,详细说明如下:

galera cluster复制:

galera cluster本身是基于wsrep协议工作在底层的文件复制通道而已,只需要指明复制的文件,它会自动在多个节点之间的检测文件状态并完成数据同步。并且galera cluster向上提供API,其他组件只需调用其API,即可完成所需的文件复制功能。

 

galera cluster向上提供API,mysql只需调用其API即可。所以原生的mysql版本是没有galera cluster功能的,需要下载附带galera的版本才可以,mysql官方也有提供支持galera的版本。

 

而haproxy是mariadb galera cluster前端的负载均衡组件,可以实现把mysql请求按照指定的调度算法分发给后端的mariadb galera cluster存储。而keepalived则可以实现haproxy的高可用。

拓扑结构

操作步骤

一、安装mysql galera软件

1.1、创建用户

[root@Xia yum.repos.d]# groupadd -r -g 500 mysql
[root@Xia yum.repos.d]# useradd -r -g 500 -u 500 mysql

1.2、创建数据文件文件夹

[root@Xia yum.repos.d]# mkdir -p /data/mysql
[root@Xia yum.repos.d]# chown mysql:mysql /data/mysql

1.3、安装mysql(需要注意依赖性,最好按顺序安装)

rpm下载地址:

http://releases.galeracluster.com/mysql-wsrep-5.7/redhat/7/x86_64/

http://rpmfind.net/linux/rpm2html/search.php?query=galera&submit=Search+...

[root@Xia galera]# yum install -y galera-25.3.12-2.el7.x86_64.rpm
[root@Xia galera]# yum -y install mysql-wsrep-libs-compat-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum install -y mysql-wsrep-common-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum install -y mysql-wsrep-libs-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum install -y mysql-wsrep-devel-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum install -y mysql-wsrep-client-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum install -y mysql-wsrep-server-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# yum -y install mysql-wsrep-5.7-5.7.29-25.21.el7.x86_64.rpm
[root@Xia galera]# rpm -ivh mysql-wsrep-test-5.7-5.7.29-25.21.el7.x86_64.rpm --nodeps 

mysql-wsrep-test有依赖性的问题,直接使用rpm忽略依赖性安装即可

二、修改mysql相关配置

2.1、修改配置文件

启动第一个节点的时候需把配置改为wsrep_cluster_address=gcomm://,其他节点启动的时候加上带ip的地址启动,第一个节点启动完毕后,把配置文件修改为带ip的参数配置

[root@commondb2 init.d]# grep -Ev "#|^$" /etc/my.cnf
[mysqld]
datadir=/data/mysql
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
wsrep_on=ON
wsrep_node_name=permitdb2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name=galera_cluster
wsrep_cluster_address="gcomm://130.166.1.105,130.166.1.104,130.166.1.106"
wsrep_sst_method = rsync
wsrep_node_address=130.166.1.104
wsrep_provider_options="gmcast.listen_addr=tcp://130.166.1.104:4567"
wsrep_sst_auth=root:mysql
default_storage_engine=InnoDB
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[client]
socket=/var/lib/mysql/mysql.sock
!includedir /etc/my.cnf.d

wsrep_on=ON wsrep_node_name=permitdb2 # wsrep节点的ID,必须是唯一的,集群各个节点也不同 wsrep_provider=/usr/lib64/galera/libgalera_smm.so  # wsrep提供者,必须配置(.so文件的路径在哪,就配置成哪,一般安装好后都是在这个目录下) wsrep_cluster_name=galera_cluster # galera集群的名字,必须是统一的 wsrep_cluster_address="gcomm://130.166.1.105,130.166.1.104,130.166.1.106" # 集群中的其他节点地址,可以使用主机名或IP wsrep_sst_method = rsync # 集群同步方式,我的系统没有可以用yum安装一下这个远程连接 yum -y install  rsync wsrep_node_address=130.166.1.104 # 本机节点地址,可以使用主机名或IP wsrep_provider_options="gmcast.listen_addr=tcp://130.166.1.104:4567" # 指定wsrep启动端口号,4567为默认值 wsrep_sst_auth=root:mysql # 集群同步的用户名密码

2.2、创造mysql的相关文件

[root@Xia lib]# cd /var/log/
[root@Xia log]# mkdir mariadb
[root@Xia mariadb]# chown -R mysql:mysql ../mariadb/
[root@Xia mariadb]# cd /var/run/
[root@Xia run]# mkdir mariadb
[root@Xia run]# cd mariadb/
[root@Xia mariadb]# touch mariadb.pid
[root@Xia mariadb]# chown -R mysql:mysql ../mariadb/

2.3、初始化

[root@Xia mariadb]# /sbin/mysqld --initialize --user=mysql

三、验证集群情况

3.1、修改root密码

[root@Xia mysql]# service mysqld start
[root@Xia bin]# mysql -uroot -p
mysql> set password=PASSWORD('mysql'); //只要第一个节点改密码即可

3.2、查看集群情况

mysql> show status like "wsrep%";

四、部署haproxy+keepalived

4.1、安装配置haproxy(两个节点都一样的操作,一样的配置中)

[root@node166 ~]# yum -y install haproxy keepalived
[root@node166 ~]# cd /etc/haproxy/
[root@node166 haproxy]# cp haproxy.cfg{,.bak}
[root@node166 haproxy]# vim /etc/haproxy/haproxy.cfg //更改以下部分,后面的通通不要
	#---------------------------------------------------------------------
	# main frontend which proxys to the backends
	#---------------------------------------------------------------------
	listen mysql_proxy 0.0.0.0:3306
	    mode tcp
	    balance leastconn
	    server mysql1 130.166.1.104:3306 weight 1
	    server mysql1 130.166.1.105:3306 weight 1
	    server mysql1 130.166.1.106:3306 weight 1
[root@node166 haproxy]# systemctl start haproxy

4.2、安装配饰keepalived(两个节点配置不一样,分主和备)

4.2.1、主节点keepalived.conf配置

[root@node166 haproxy]# cd /etc/keepalived/
[root@node166 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 5
    weight -5    
}
vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 111199
    }
    virtual_ipaddress {
        130.166.1.66/16 dev ens192 label ens192:1
    }
    track_script {
        chk_haproxy
    }
}

4.2.2、主节点check_haproxy.sh脚本

[root@node166 keepalived]# vim check_haproxy.sh
[root@node166 ~]# grep -Ev "#|^$" /etc/keepalived/check_haproxy.sh
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ]; then
        systemctl restart haproxy
        echo "Start haproxy" &> /dev/null
        sleep 3
        if [ `ps -C haproxy --no-header | wc -l`  -eq 0 ];then
                systemctl stop keepalived
                echo "Stop keepalived" &> /dev/null
        fi
fi
[root@node166 keepalived]# chmod +x check_haproxy.sh
[root@node166 keepalived]# systemctl start keepalived

4.2.3、备节点keepalived.conf配置

[root@node188 haproxy]# cd /etc/keepalived/
[root@node188 keepalived]# vim keepalived.conf
[root@node188 keepalived]# grep -Ev "#|^$" /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 5
    weight -5    
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 111199
    }
    virtual_ipaddress {
        130.166.1.66/16 dev ens192 label ens192:1
    }
    track_script {
        chk_haproxy
    }
}

4.2.3、备节点check_haproxy.sh配置

[root@node188 keepalived]# vim check_haproxy.sh
[root@node188 ~]# grep -Ev "#|^$" /etc/keepalived/check_haproxy.sh
[root@node188 keepalived]# grep -Ev "#|^$" /etc/keepalived/check_haproxy.sh
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ]; then
        systemctl start haproxy
        echo "Start haproxy" &> /dev/null
        sleep 3
        if [ `ps -C haproxy --no-header | wc -l`  -eq 0 ];then
                echo "Stop keepalived" &> /dev/null
        fi
fi
[root@node166 keepalived]# chmod +x check_haproxy.sh
[root@node166 keepalived]# systemctl start keepalived

这些都部署完之后使用130.166.1.66去访问mysql就稳稳的了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值