搭建高性能数据库集群之三:Keepalived实现MySQL集群高可用

您所在的位置:网站首页 nginx高可用双主模式 搭建高性能数据库集群之三:Keepalived实现MySQL集群高可用

搭建高性能数据库集群之三:Keepalived实现MySQL集群高可用

2023-07-08 00:41| 来源: 网络整理| 查看: 265

搭建高可用集群,2台HAProxy 可实现Mycat多节点的集群高可用和负载均衡,而HAProxy 的高可用,由Keepalived来实现。Keepalived负责为该台服务器抢占vip(虚拟IP),抢到后对该主机访问。 在这里插入图片描述

搭建高可用集群:

上图,我们要安装的集群架构,mysql 2台、Mycat 2台、HAProxy 2台

步骤1:安装mysql、Mycat

安装并配置数据库的主从配置,配置Mycat的读写分离。安装与上面读写分离步骤一致。

步骤2:安装HAProxy

HAProxy 下载地址:https://src.fedoraproject.org/repo/pkgs/haproxy

下载好的安装包文件 (haproxy-xxx.tar.gz),上传Linux服务器上,一般安装在/usr/local/src下,进行解压

tar -zxvf haproxy-1.5.16.tar.gz

解压完成后,查看内核版本,进行编译

cd /usr/local/src/haproxyc # 切换目录 uname -r # 查看内核版本 (得到 2.6.43-431.e16.x86_64) # HAProxy是C语言开发,需要编译,进行编译命令 make TARGET=linux2643 PREFIX=/usr/local/haproxy ARCH=x86_64 # TARGET=linux内核版本,uname -r命令前几位就是内核版本 # PREFIX haproxyc安装路径 # ARCH 系统位数

编译后,进行安装

make install PREFIX=/usr/local/haproxy

安装成功后,创建目录 (haproxy数据存放的目录)

mkdir -p /usr/data/haproxy/

创建HAProxy配置文件

vim /usr/local/haproxy/haproxy.conf

配置文件:

global log 127.0.0.1 local0 maxconn 4096 chroot /usr/local/haproxy pidfile /usr/data/haproxy/haproxy.pid uid 99 gid 99 daemon node mysql-haproxy-01 description mysql-haproxy-01 defaults log global mode tcp option abortonclose option redispatch retries 3 maxconn 2000 timeout connect 50000ms timeout client 50000ms timeout server 50000ms listen proxy_status bind 0.0.0.0:48066 mode tcp balance roundrobin server mycat_1 mycat1地址:8066 check server mycat_2 mycat2地址:8066 check frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE

内容解析:

#global 配置中的参数为进程级别的参数,通常与其运行的操作系统有关 global #定义全局的syslog服务器, 最多可定义2个; local0 是日志设备, 对应于/etc/rsyslog.conf中的配置 , 默认收集info级别日志 log 127.0.0.1 local0 #log 127.0.0.1 local1 notice #log loghost local0 info #设定每个haproxy进程所接受的最大并发连接数 ; maxconn 4096 #修改HAproxy工作目录至指定的目录并在放弃权限之前执行chroot操作, 可以提升haproxy的安全级别 chroot /usr/local/haproxy #进程ID保存文件 pidfile /usr/data/haproxy/haproxy.pid #指定用户ID uid 99 #指定组ID gid 99 #设置HAproxy以守护进程方式运行 daemon #debug #quiet node mysql-haproxy-01 ## 定义当前节点的名称,用于 HA 场景中多 haproxy 进程共享同一个 IP 地址时 description mysql-haproxy-01 ## 当前实例的描述信息 #defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个"defaults"所重新设定 defaults #继承global中的log定义 log global #所使用的处理模式(tcp:四层 , http:七层, health:状态检查,只返回OK) ### tcp: 实例运行于纯 tcp 模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对 7 层报文做任何类型的检查,此为默认模式 ### http:实例运行于 http 模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与 RFC 模式兼容的请求都会被拒绝 ### health:实例运行于 health 模式,其对入站请求仅响应“OK”信息并关闭连接,且不会记录任何日志信息 ,此模式将用于相应外部组件的监控状态检测请求 mode tcp #当服务器负载很高的时候,自动结束掉当前队列处理时间比较长的连接 option abortonclose #当使用了cookie时,haproxy将会将请求的后端服务器的serverID插入到cookie中,以保证会话的session持久性,而此时,后端服务器宕机,但是客户端的cookie不会刷新,设置此参数,将会将客户请求强制定向到另外一个后端server上,以保证服务的正常。 option redispatch retries 3 # 前端的最大并发连接数(默认为 2000) maxconn 2000 # 连接超时(默认是毫秒,单位可以设置 us,ms,s,m,h,d) timeout connect 5000 # 客户端超时时间 timeout client 50000 # 服务器超时时间 timeout server 50000 #listen: 用于定义通过关联“前端”和“后端”一个完整的代理,通常只对 TCP 流量有用 listen proxy_status bind 0.0.0.0:48066 # 绑定端口 mode tcp balance roundrobin # 定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询 #格式: server [:[port]] [param*] # weight : 权重,默认为 1,最大值为 256,0 表示不参与负载均衡 # backup : 设定为备用服务器,仅在负载均衡场景中的其他 server 均不可以启用此 server # check : 启动对此 server 执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定 # inter : 设定监控状态检查的时间间隔,单位为毫秒,默认为 2000,也可以使用 fastinter 和 downinter 来根据服务器端专题优化此事件延迟 # rise : 设置 server 从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为 2) # fall : 设置 server 从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为 3) # cookie : 为指定 server 设定 cookie 值,此处指定的值将会在请求入站时被检查,第一次为此值挑选的 server 将会被后续的请求所选中,其目的在于实现持久连接的功能 # maxconn: 指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其他连接被释放 server mycat_1 192.168.192.157:8066 check inter 10s server mycat_2 192.168.192.158:8066 check inter 10s # 用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理 # HAProxy 的状态信息统计页面 frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE

启动HAProxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf

查看进程

ps -ef|grep haproxy

访问地址:http://IP地址:8888/admin (监控地址)

通过haproxy访问Mycat

mysql -h ip地址 -P 48066 -u mycat用户名 -p 密码;

步骤3:安装Keepalived Keepalived 下载地址:https://www.keepalived.org/download.html

下载好的安装包文件 (Keepalived-xxx.tar.gz),上传Linux服务器上,一般安装在/usr/local/src下,进行解压

tar -zxvf keepalived-1.4.5.tar.gz

解压完成后,安装依赖插件

yum install -y gcc openssl-devel popt-devel

进入解压后的目录,进行配置,进行编译

cd /usr/local/src/keepalived-1.4.5 ./configure --prefix=/usr/local/keepalived

完成后进行安装

make && make install

运行前配置

cp /usr/local/src/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/ mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/src/keepalived-1.4.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

修改配置文件 /etc/keepalived/keepalived.conf Master:

global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id haproxy01 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_script chk_haproxy { script "/etc/keepalived/haproxy_check.sh" interval 2 weight 2 } vrrp_instance VI_1 { #主机配MASTER,备机配BACKUP state MASTER #所在机器网卡 interface eth1 virtual_router_id 51 #数值越大优先级越高 priority 120 advert_int 1 authentication { auth_type PASS auth_pass 1111 } ## 将 track_script 块加入 instance 配置块 track_script { chk_haproxy ## 检查 HAProxy 服务是否存活 } virtual_ipaddress { #虚拟IP 192.168.192.200 } }

BackUP:

global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 #标识本节点 router_id haproxy02 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 } # keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级 vrrp_script chk_haproxy { # 检测 haproxy 状态的脚本路径 script "/etc/keepalived/haproxy_check.sh" #检测时间间隔 interval 2 #如果条件成立,权重+2 weight 2 } vrrp_instance VI_1 { #主机配MASTER,备机配BACKUP state BACKUP #所在机器网卡 interface eth1 virtual_router_id 51 #数值越大优先级越高 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } ## 将 track_script 块加入 instance 配置块 track_script { chk_haproxy ## 检查 HAProxy 服务是否存活 } virtual_ipaddress { #虚拟IP 192.168.192.200 } }

编写检测haproxy的shell脚本 haproxy_check.sh 在/etc/keepalived/目录,创建haproxy_check.sh脚本文件

#!/bin/bash A=`ps -C haproxy --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf echo "haproxy restart ..." &> /dev/null sleep 1 if [ `ps -C haproxy --no-header | wc -l` -eq 0 ];then /etc/init.d/keepalived stop echo "stop keepalived" &> /dev/null fi fi

启动测试

service keepalived start

登录验证

# 访问的是Vip (虚拟ip) mysql -uMycat用户名 -p密码 -h 192.168.192.200 -P 48066


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3