您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

来源:网络整理 浏览:237次 时间:2020-08-09
基于MyCat部署HaProxy实现高可用

在实际项目中, Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服务故障,需要有备机提供服务,需要考虑 Mycat 集群。

一、高可用方案

可以使用 HAProxy+Keepalived配合两台MyCat搭起MyCat集群,实现高可用性。 HAProxy实现了MyCat多节点的集群高可用和负载均衡,而 HAProxy自身的高可用则可以通过Keepalived来实现.

架构图:

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

于上一个博客的环境部署(MySQL中间件之MyCat )新添:mycat02、haproxy01、haproxy02主机操作系统IP地址mysql01Centos 7.3192.168.1.1mysql02(slave)Centos 7.3192.168.1.8mysql03Centos 7.3192.168.1.9mycatCentos 7.3192.168.1.3mycat02Centos 7.3192.168.1.11haproxy01(keepalived)Centos 7.3192.168.1.4(VIP:192.168.1.100)haproxy02(keepalived)Centos 7.3192.168.1.5(VIP:192.168.1.100)案例中关闭防火墙

启动两台mycat服务

[root@mycat mycat]# ./bin/mycat start[root@mycat mycat2]# ./bin/mycat start

测试连接mycat(可以连接自己,并且可以连接到另一台mycat)

[root@mycat ~]# mysql -umycat -p123456 -P8066 -h 192.168.1.3[root@mycat2 ~]# mysql -umycat -p123456 -P8066 -h 192.168.1.11[root@mycat ~]# mysql -umycat -p123456 -P8066 -h 192.168.1.11[root@mycat2 ~]# mysql -umycat -p123456 -P8066 -h 192.168.1.3
1、安装配置 HAProxy(haproxy01、haproxy02)1)安装 HAProxy 准备好HAProxy安装包,传到/opt目录下 解压到/usr/local/src
[root@haproxy01 ~]# tar zxf haproxy-1.8.23.tar.gz -C /usr/local/src/
2)进入解压后的目录,查看内核版本, 进行编译
[root@haproxy01 ~]# cd /usr/local/src/haproxy-1.8.23/ [root@haproxy01 haproxy-1.8.23]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64

ARGET=linux310,内核版本,使用uname -r查看内核,如: 3.10.0-514.el7,此时该参数就为linux310;
ARCH=x86_64,系统位数;
PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。

3)编译完成后,进行安装
[root@haproxy01 haproxy-1.8.23]# make install PREFIX=/usr/local/haproxy

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
编辑配置文件(文件内容自己定义):

[root@haproxy01 haproxy-1.8.23]# vim /usr/local/haproxy/haproxy.confglobal        log 127.0.0.1 local0        #log 127.0.0.1 local1 notice        #log loghost local0 info        maxconn 4096        chroot /usr/local/haproxy        pidfile /usr/local/haproxy/haproxy.pid        uid 99        gid 99        daemon        #debug        #quietdefaults        log global        mode tcp        option abortonclose        option redispatch        retries 3        maxconn 2000        timeout connect 5000        timeout client 50000        timeout server 50000listen proxy_status        bind :48066                mode tcp                balance roundrobin                server mycat_1 192.168.1.3:8066 check inter 10s  //mycat服务器IP地址                server mycat_2 192.168.1.11:8066 check inter 10s  //mycat服务器IP地址frontend admin_stats        bind :7777                mode http                stats enable                option httplog                maxconn 10                stats refresh 30s                stats uri /admin   //访问web用户名                stats auth admin:123123      //定义密码                stats hide-version                stats admin if TRUE
4)验证启动HAProxy
[root@haproxy01 haproxy-1.8.23]#  /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf

查看HAProxy进程

[root@haproxy01 haproxy-1.8.23]# ps -ef|grep haproxy

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
打开浏览器访问 http://192.168.1.4:7777/admin、http://192.168.1.5:7777/admin
在弹出框输入用户名: admin密码: 123123
访问第一台:
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
访问第二台:
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

验证负载均衡,通过HAProxy访问Mycat

[root@mysql03 ~]# scp /usr/local/mysql/bin/mysql 192.168.1.4:/usr/local/sbin/[root@mysql03 ~]# scp /usr/local/mysql/bin/mysql 192.168.1.5:/usr/local/sbin/[root@haproxy01 haproxy-1.8.23]# mysql -umycat -p123456 -h 192.168.1.4 -P 48066[root@haproxy01 haproxy-1.8.23]# mysql -umycat -p123456 -h 192.168.1.5 -P 48066

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

2、安装配置keepalived(两台haproxy)1)安装 Keepalived 准备好Keepalived安装包,传到/opt目录下 解压到/usr/local/src
[root@haproxy01 ~]# tar zxf keepalived-2.0.20.tar.gz -C /usr/local/src/

安装依赖插件

[root@haproxy01 ~]# yum -y install gcc openssl-devel popt-devel

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

[root@haproxy01 ~]# cd /usr/local/src/keepalived-2.0.20/[root@haproxy01 keepalived-2.0.20]# ./configure --prefix=/usr/local/keepalived

完成后进行安装

[root@haproxy01 keepalived-2.0.20]# make && make install

运行前配置

[root@haproxy01 keepalived-2.0.20]#  cp /usr/local/src/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/[root@haproxy01 keepalived-2.0.20]# mkdir /etc/keepalived[root@haproxy01 keepalived-2.0.20]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/[root@haproxy01 keepalived-2.0.20]# cp /usr/local/src/keepalived-2.0.20/keepalived/etc/sysconfig/keepalived /etc/sysconfig/[root@haproxy01 keepalived-2.0.20]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

修改配置文件

[root@haproxy01 keepalived-2.0.20]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalived   //注释global_defs {   router_id LVS_DEVEL      //keepalived服务器的一个标识}vrrp_instance VI_1 {    state MASTER     //指定keepalived的角色, 两台配置此处均是BACKUP,设为BACKUP将根据优先级决定主或从    interface ens33     //指定HA监测网络的接口    virtual_router_id 51   //虚拟路由标识,这个标识是一个数字(取值在0-255之间,用来区分多个instance的VRRP组播),同一个vrrp实例使用唯一的标识,确保和master2相同,同网内不同集群此项必须不同,否则发生冲突。    priority 100   //用来选举master的,要成为master,该项取值范围是1-255(在此范围之外会被识别成默认值100),此处master2上设置为50    advert_int 1    //发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)    authentication {     //认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)        auth_type PASS        auth_pass 1111    }       virtual_ipaddress {      //VIP区域,指定vip地址        192.168.1.100     }   }   virtual_server 192.168.1.100 48066 {    //设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开    delay_loop 6     //设置运行情况检查时间,单位是秒    lb_algo rr          //设置后端调度算法,这里设置为rr,即轮询算法    lb_kind NAT      //设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选    persistence_timeout 50    //会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。    protocol TCP    //指定转发协议类型,有TCP和UDP两种    real_server 192.168.1.4 48066 {    //配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开        weight 1     //配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小为了区分不同性能的服务器        TCP_CHECK {            connect_timeout 3    //连接超时时间            retry 3    //重连次数            delay_before_retry 3   //重连间隔时间        }       }       real_server 192.168.1.5 48066 {        weight 1        TCP_CHECK {            connect_timeout 3            retry 3            delay_before_retry 3        }    }}

拷贝到第二台haproxy

[root@haproxy01 keepalived-2.0.20]# scp /etc/keepalived/keepalived.conf 192.168.1.5:/etc/keepalived/keepalived.conf

做一些简单修改

[root@haproxy02 keepalived-2.0.20]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   router_id LVS_DEVEL}vrrp_instance VI_2 {   //改    state MASTER    interface ens33    virtual_router_id 51    priority 50     //降低    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.1.100    }}virtual_server 192.168.1.100 48066 {    delay_loop 6    lb_algo rr    lb_kind NAT    persistence_timeout 50    protocol TCP    real_server 192.168.1.4 48066 {        weight 1        TCP_CHECK {            connect_timeout 3            retry 3            delay_before_retry 3        }    }    real_server 192.168.1.5 48066 {        weight 1        TCP_CHECK {            connect_timeout 3            retry 3            delay_before_retry 3        }       }   }   
2)启动验证
[root@haproxy01 keepalived-2.0.20]# service keepalived startStarting keepalived (via systemctl):                       [  OK  ][root@haproxy01 keepalived-2.0.20]# ip a

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
开启第二台的服务

[root@localhost keepalived-2.0.20]# service keepalived startStarting keepalived (via systemctl):                       [  OK  ]

登录验证(访问VIP地址)

[root@haproxy01 keepalived-2.0.20]# mysql -umycat -p123456 -h192.168.1.100 -P 48066

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

模拟第一台mycat宕机:

[root@mycat ~]# ./mycat/bin/mycat stop

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

继续通过haproxy(VIP)访问:

[root@haproxy01 keepalived-2.0.20]# mysql -umycat -p123456 -h 192.168.1.100 -P 48066

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
依然可以访问到

模拟第一台haproxy宕机
断开网卡连接

可以看到VIP跳到了第二台服务器

[root@localhost keepalived-2.0.20]# ip a

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

继续通过haproxy(VIP)访问:

[root@localhost keepalived-2.0.20]# mysql -umycat -p123456 -h 192.168.1.5 -P 48066

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用
依然能够访问到服务

[root@mycat ~]# ./mycat/bin/mycat start     //将第一台mycat启动

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

高可用已经部署完成二、MyCat 安全设置1、权限配置

1)user 标签权限控制目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑级别的读写权限控制。是通过server.xml的user标签进行配置。

#server.xml配置文件user部分
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

2)privileges 标签权限控制 在 user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精细化的DML权限控制。privileges 标签下的check属性,如为 true 开启权限检查,为false不开启,默认为 false。由于Mycat一个用户的 schemas 属性可配置多个逻辑库(schema),所以 privileges 的下级节点schema节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制.

#server.xml配置文件privileges部分
#配置orders表没有增删改查权限
# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

配置说明:DML权限增加(insert)更新(update)查询(select)删除(select)0000禁止禁止禁止禁止0010禁止禁止可以禁止1110可以可以可以禁止1111可以可以可以可以2、SQL 拦截

firewall 标签用来定义防火墙:
firewall下whitehost标签用来定义IP白名单, blacklist用来定义SQL 黑名单。

1)白名单 可以通过设置白名单, 实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。
设置白名单#server.xml配置文件firewall标签#配置只有192.168.1.4主机可以通过mycat用户访问        <firewall>            <whitehost>              <host host="192.168.1.4" user="mycat"/>           </whitehost>        </firewall>
2)黑名单可以通过设置黑名单,实现Mycat对具体SQL操作的拦截,如增删改查等操作的拦截。
设置黑名单#server.xml配置文件firewall标签#配置禁止mycat用户进行删除操作        <firewall>            <whitehost>              <host host="192.168.1.4" user="mycat"/>           </whitehost>       <blacklist check="true">       <property name="deleteAllow">false</property>       </blacklist>        </firewall>
可以设置的黑名单 SQL 拦截功能列表配置项缺省值描述selectAllowtrue是否允许执行SELECT语句deleteAllowtrue是否允许执行DELETE语句updateAllowtrue是否允许执行UPDATE语句insertAllowtrue是否允许执行INSERT语句createTableAllowtrue是否允许创建表setAllowtrue是否允许使用SET语法alterTableAllowtrue是否允许执行Alter table语句dropTableAllowtrue是否允许修改表commitAllowtrue是否允许执行commit操作rollbackAllowtrue是否允许执行roll back操作

推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com