1、MyCat高可用架构
这里主要是基于haproxy、keepalive实现Mycat的高可用性,所以没有再绘制Mycat后面的数据库分布情况。其中,keepalived主要是为了保证haproxy的高可用,主要用于监控haproxy是否可用,然后进行故障转移;而haproxy主要用来实现负载均衡。
2、服务器规划
服务器 | haproxy | keepalive | mycat | mysql |
---|---|---|---|---|
192.168.1.8 | 部署 | |||
192.168.1.9 | 部署 | 部署 | 部署 | 部署 |
192.168.1.10 | 部署 | 部署 | 部署 |
3、部署mysql、mycat
在前面我们已经再192.168.1.10上部署了mycat,192.168.1.8/9上部署了mysql。我们这里需要在192.168.1.9上再部署一个mycat。我们这里直接把192.168.1.10上的直接复制到192.168.1.9上,命令如下:
scp -r mycat/ 192.168.1.9:$PWD
然后,启动mycat即可。
3、部署haproxy
HAProxy负责将请求分发到MyCat上,起到负载均衡的作用,同时HAProxy也能检测到MyCat是否存活,HAProxy只会将请求转发到存活的MyCat上。如果一台MyCat服务器宕机,HAPorxy转发请求时不会转发到宕机的MyCat上,所以MyCat依然可用。
下面的操作,需要在192.168.1.9/10两个服务器上分别执行。
3.1、查看haproxy并安装
#查看
yum search haproxy
#安装
yum install haproxy.x86_64
3.2、修改haproxy配置文件
通过上述方式安装,默认的配置文件在/etc/haproxy/haproxy.cfg。
defaults
mode tcp #修改成TCP协议
log global
option tcplog #修改日志
option dontlognull
#option http-server-close #注释掉,主要用于HTTP协议
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
#timeout http-request 10s #注释掉,主要用于HTTP协议
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
#timeout http-keep-alive 10s #注释掉,主要用于HTTP协议
timeout check 10s
maxconn 3000
#省略了其他的配置
#增加了负载均衡的mycat配置
backend app
balance roundrobin
server app1 192.168.1.9:8066 check
server app2 192.168.1.10:8066 check
3.3、启动
通过如下命令启动,然后通过Navicat,使用haproxy连接(默认端口5000)。
haproxy -f /etc/haproxy/haproxy.cfg
4、部署keepalived
下面部署keepalived的操作,需要在192.168.1.9/10两个服务器上分别执行。
4.1、查看并安装
#查看
yum search keepalived
#安装
yum install keepalived.x86_64
4.2、修改keepalived配置文件
通过上述方式安装,默认的配置文件在/etc/keepalived/keepalived.cfg。修改配置文件如下:
! 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 node10
# vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
##keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
## 如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。
## 如果脚本执行结果非0,并且weight配置的值小于0,则优先级相应的减少。
## 其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_haproxy {
script "killall -0 haproxy" ## 检测haproxy状态的脚本路径,该命令需要安装psmisc
interval 2 ## 检测时间间隔
weight 2 ## 如果条件成立,权重+2
}
## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP ##这一项主从都用BACKUP,MASTER会出现问题,会出现抢占的问题,如果主节点宕机掉,然后切换到备节点,如果主节点起来的话主节点就会把VIP抢占。这样就由优先级(priority)来控制同时启动情况下的默认主备,否则先启动的为主设备
interface ens33 ## 绑定虚拟IP的网络接口,与本机IP地址所在的网络接口相同
virtual_router_id 51 ## 虚拟路由的ID号,两个节点设置必须一样,因为属于同一个组,不同组的id一定不要一样,否则冲突
priority 100 ## 节点优先级,值范围0-254,MASTER要比BACKUP高,万一同时启动呢,一定要有一个高低之分
advert_int 1 ## 组播信息发送间隔,就是两个虚拟路由节点之间会通过组播检测对方是否正常,如果一个有问题,另一个会抢占vip,这里间隔1秒,时间太长可能会出现系统中断
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
## 将track_script块加入instance 配置块
track_script {
chk_haproxy ## 检查HAProxy服务是否存活
}
## 虚拟IP池, 两个节点设置必须一样
virtual_ipaddress {
192.168.1.13 ## 虚拟ip,可以定义多个,每行一个
}
}
4.3、安装killall命令
在上述脚本中,使用了“killall -0 haproxy”判断haproxy是否正常启动,该命令需要安装psmisc,命令如下:
yum -y install psmisc
4.4、启动keepalived
完成上述配置,然后启动keepalived。命令如下:
keepalived -f /etc/keepalived/keepalived.conf
4.5、测试
启动了192.168.1.9/10两个服务器上的haproxy、keepalived服务,我们查看两台服务器的地址,发现VIP在192.168.1.9上,如下所示:
为了验证haproxy的高可用,我们把192.168.1.9上的haproxy进程kill掉,然后再查看地址,发现VIP已经切换到了192.168.1.10服务器上。这个时候使用VIP去访问数据库,发现还是可以访问的,说明haproxy的高可用配置成功了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68749.html