mycat mysql ha 方案_7、基于 HA 机制的 Mycat 高可用--mycat

在实际项目中,Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服

务故障,需要有备机提供服务,需要考虑 Mycat 集群。

1、 高可用方案

使用 HAProxy + Keepalived 配合两台 Mycat 搭起 Mycat 集群,实现高可用性。

HAProxy实现了 MyCat 多节点的集群高可用和负载均衡

HAProxy 自身的高可用则可以通过 Keepalived 来实现。

6f12de031cbad100e21087b047e4e427.png

角色

ip

mycat01

192.168.199.217

mycat02

192.168.199.120

HA(主)

192.168.199.174

keepalive(主机)

192.168.199.174

HA(主)

192.168.199.199

keepalive(主机

192.168.199.199

先配置好mycat并且启动mycat

2 安装配置 HAProxy

1、 安装 HAProxy

2解压到/usr/local/src

3进入解压后的目录,查看内核版本,进行编译

[root@mycat05 software]# cd /usr/local/src/haproxy-1.5.18/

[root@mycat05 haproxy-1.5.18]# uname -r

3.10.0-957.el7.x86_64

[root@mycat05 haproxy-1.5.18]# make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64

# ARGET=linux310,内核版本,使用uname -r查看内核,如:3.10.0-957.el7,此时该参数就为linux310;

#ARCH=x86_64,系统位数;

#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。

4编译完成后,进行安装

make install PREFIX=/usr/local/haproxy

5安装完成后,创建目录、创建HAProxy配置文件

mkdir -p /usr/data/haproxy/

vim /usr/local/haproxy/haproxy.conf

6向配置文件中插入以下配置信息,并保存

globallog127.0.0.1local0

#log127.0.0.1local1 notice

#log loghost local0 info

maxconn4096chroot/usr/local/haproxy

pidfile/usr/data/haproxy/haproxy.pid

uid99gid99daemon

#debug

#quiet

defaults

logglobalmode tcp

option abortonclose

option redispatch

retries3maxconn2000timeout connect5000timeout client50000timeout server50000listen proxy_status

bind :48066mode tcp

balance roundrobin

server mycat_1192.168.140.128:8066check inter 10s

server mycat_2192.168.140.127:8066check inter 10s

frontend admin_stats

bind :7777mode http

stats enable

option httplog

maxconn10stats refresh 30s

stats uri/admin

stats auth admin:123123 //登陆账户and密码stats hide-version

stats adminif TRUE

2、 启动验证

1启动HAProxy

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

2查看HAProxy进程

ps -ef|grep haproxy

3打开浏览器访问

2908c3847f5a4c058a419882ef1ff2b1.png

如果Mycat主备机均已启动,则可以看到如下图

88aeb1c893f74a22330b821593215c03.png

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

在HAProxy主机上执行(192.168.199.174HA的主机地址)

[root@mycat05 haproxy-1.5.18]# mysql -umycat -p123456 -h 192.168.199.174 -P 48066

fd548e3e64b2e69849a9564030a32ded.png

3 配置 Keepalived

1准备好Keepalived安装包,传到/opt目录下

2解压到/usr/local/src

tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src

3安装依赖插件

yum install -y gcc openssl-devel popt-devel

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

cd /usr/local/src/keepalived-1.4.2

./configure --prefix=/usr/local/keepalived

5进行编译,完成后进行安装

make && make install

6运行前配置

cp /usr/local/src/keepalived-1.4.2/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.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

7修改配置文件

vim /etc/keepalived/keepalived.conf

#修改内容如下! Configuration File forkeepalived

global_defs {

notification_email {

xlcocoon@foxmail.com

}

notification_email_from keepalived@showjoy.com

smtp_server127.0.0.1smtp_connect_timeout30router_id LVS_DEVEL

vrrp_skip_check_adv_addr

vrrp_garp_interval0vrrp_gna_interval0}

vrrp_instance VI_1 {

#主机配MASTER,备机配BACKUP

state MASTER

#所在机器网卡interfaceens33

virtual_router_id51#数值越大优先级越高

priority100advert_int1authentication {

auth_type PASS

auth_pass1111}

virtual_ipaddress {

#虚拟IP

192.168.199.111} }

virtual_server192.168.199.111 48066{

delay_loop6lb_algo rr

lb_kind NAT

persistence_timeout50protocol TCP

real_server192.168.199.174 48066{ # HA的地址(主机)

weight1rTCP_CHECK {

connect_timeout3retry3delay_before_retry3} }

real_server192.168.199.199 48600{#HA地址(备机r)

weight1TCP_CHECK {

connect_timeout3nb_get_retry3delay_before_retry3}

} }

8、启动Keepalived

同时启动备机上的HA

service keepalived start

9、登录验证

mysql -umycat -p123456 -h 192.168.199.111 -P 48066

192.168.199.111 :虚拟ip

9c7f3cdf72d155a0a0ad26279b65b3ed.png

此时是:

HA隐藏mycat的ip

KeepAlive隐藏HA的ip

4 测试高可用

1关闭mycat

2通过虚拟ip查询数据

mysql -umycat -p123456 -h 192.168.199.111 -P 48066

mysql> select * fromorders;

ERROR2013(HY000): Lost connection to MySQL server during query

mysql> select * fromorders;

ERROR2006(HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:2Current database: TESTDB+--------+------------+-------------+-----------+

| id | order_type | customer_id | amount |

+--------+------------+-------------+-----------+

| 1 | 101 | 100 | 100100.00 |

| 2 | 101 | 100 | 100300.00 |

| 6 | 102 | 100 | 100020.00 |

| 3 | 101 | 101 | 120000.00 |

| 4 | 101 | 101 | 103000.00 |

| 5 | 102 | 101 | 100400.00 |

| 400100 | 102 | 101 | 1000.00 |

| 400101 | 102 | 101 | 1000.00 |

+--------+------------+-------------+-----------+

8 rows in set (1.46 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫scrapy模块

首先下载scrapy模块 这里有惊喜 https://www.cnblogs.com/bobo-zhang/p/10068997.html 创建一个scrapy文件 首先在终端找到一个文件夹 输入 scrapy startproject jy (项目件名) 修改setting文件配置 # Crawl responsibly by identifying yourself (and your website) on the us…

python canvas画移动物体_如何实现Canvas图像的拖拽、点击等操作

上一篇Canvas的博文写完后,有位朋友希望能对Canvas绘制出来的图像进行点击、拖拽等操作,因为Canvas绘制出的图像能很好的美化。好像是想做炉石什么的游戏,我也没玩过。Canvas在我的理解中就好像在一张画布上绘制图像,它只能看到却…

Git基础知识教程整理(Git基本操作)

Git简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)。Linux之父Linux用C语言写了Git分布式版本控制系统。 分布式版本控制系统与集中式版本控制系统的区别 区别分布式集中式中央服务器有,版本库集中存放在中央服务器,工…

python plot map_使用matplotlibbasemap在边界打印

我在绘制多边形时遇到了困难,例如,在使用matplotlib basemap生成的地图边界上绘制多边形。在下面的示例中,地图边界由日期线指定。我试图通过指定三角形顶点的坐标来绘制一个跨越日期线的三角形。当所有的坐标都在地图内时,这种方…

SQL查询语句 group by后, 字符串合并

合并列值 --******************************************************************************************* 表结构,数据如下: id value ----- ------ aa bb aaa bbb ccc 需要得到结果: id values ------ ----------- aa,bb aaa…

Git 基础 —— 常用命令

Git 基础学习系列 Git 基础 —— 安装 配置 别名 对象Git 基础 —— 常用命令Git 基础 —— 常见使用场景Git基础 —— Github 的使用git init 创建 Git 本地仓库 远端无仓库,本地无仓库,本地新建一个仓库 git init git_learning 远端有仓库,…

python安装caffe_Linux下caffe的安装

下载caffe并保存到一个目录下(推荐放到 /home 目录)安装依赖项:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-install-recommends libboost-all-devsudo apt-…

linux 访问Windows 共享文件的方法

2019独角兽企业重金招聘Python工程师标准>>> 1 安装Samba服务 2 启动 samba服务 /etc/init.d/smb restart 3 安装插件 cifs解决只读挂载:yum install cifs-utils.x86_64 4 在windows下共享一个可以用的文件夹 5 将 windows 共享文件夹挂载到linux上 命令…

基于Blink构建亲听项目以及全链路debug项目实时响应能力

案例与解决方案汇总页:阿里云实时计算产品案例&解决方案汇总 本文全面总结了大数据项目组在亲听项目以及全链路debug项目上进行的实时流处理需求梳理,架构选型,以及达成效果 一、背景介绍 1.1亲听项目 亲听项目专注于帮助用户收集、展示、…

python的重点_python知识点

"""author:lei"""import os#os.path.join() 将分离的部分合成一个整体filenameos.path.join(/home/ubuntu/python_coding,split_func)print filename#输出为:/home/ubuntu/python_coding/split_func#os.path.splitext()将文件名和扩展…

在既有系统中打通Apache Ignite、MySQL和Node.js

为什么80%的码农都做不了架构师?>>> 介绍 在本系列的第一篇文章中,安装了Node.js、Ignite的Node.js瘦客户端包,并且测试了一个示例应用。在本文中,可以看一下Ignite在处理其它数据源(比如关系数据库&#…

java hashmap 的api_JAVA基础--JAVA API集合框架(ArrayList、HashSet、HashMap使用)

一、集合Collection1. 集合介绍变量:表示的内存中的一个空间,只能保存确定类型的单个数据数组:表示的是内存中的多个连续的空间,这些空间中可以存储多个同类型的数据。后期继续学习面向对象技术,我们在程序中开始创建对…

Vue进阶知识笔记

利用v-for循环出的多个li标签&#xff0c;点击不同的li变换颜色 方法一 <ul v-for"(item,index) in list" :key"index" class"details"><li ref"lisd" click"faillist(index)" :class"{active:ind index}&qu…

teamcity mysql 配置_CentOS 7 上 TeamCity 安装

CentOS 7 上 TeamCity 安装非入门教程, 初次接触centos/docker的朋友需要谨慎一. 安装 MySQL为了后续的需要, 这里安装了 Docker, 当然如果你已经有了 MySQL 或者其它推荐的数据库[MySQL, PostgreSQL, Oracle, MS SQL], 则可忽略1. 安装 Docker补充:# 启动dockersudo systemctl…

Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)

本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注&#xff0c;每个工作日都有文章更新。 一、概况 接着上篇说&#xff0c;如果你真以为Requests网络请求库只有Get请求和Post请求&#xff0c;那就大错特错了。它还一些其他用法&…

dbunit java_java - 错误地抛出了Java DBUnit AmbiguousTableNameException - 堆栈内存溢出

我正在尝试DBUnit(2.6.0)&#xff0c;我正在尝试导出我的完整数据库(PostgreSQL)。 但是抛出以下异常&#xff1a;线程“main”中的异常org.dbunit.database.AmbiguousTableNameException&#xff1a;FLYWAY_SCHEMA_HISTORY这是正确的行为&#xff0c;因为我有两个具有相同名称…

Docker 命令详解(run篇)

参考&#xff1a;https://www.cnblogs.com/yfalcon/p/9044246.html 命令格式&#xff1a;docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Usage: Run a command in a new container中文意思为&#xff1a;通过run命令创建一个新的容器&#xff08;container&#xff09; 常用选…

java 同步 lock_关于java:同步是否像Lock.lock()一样驻留并发线程?

当我们调用lock.lock()或尝试输入synchronized块时&#xff0c;如果其他某个线程已经获得了该锁&#xff0c;则我们的线程将阻塞。 现在我的问题是&#xff0c;当我们查看lock.lock()的实现时&#xff0c;它会将获取锁委托给AQS&#xff0c;而AQS实际将当前线程驻留在该线程中(…

Idea项目中常见错误及笔记(Old)

1、Idea基础设置&#xff1a; File-->settings--> 1>修改字体&#xff1a;Font 2>修改编码格式&#xff1a;File Encodings(全部UTF-8,右下方复选框勾中--防止程序中的汉字转为ASCII码) 3>修改行号&#xff1a;Appearance&#xff1a;show line numbers show me…

java接口服务编排_GOKU API Gateway CE V3.1.0 发布:新增服务编排、配置版本管理等...

Goku API Gateway (中文名&#xff1a;悟空 API 网关)是一个基于 Golang 开发的微服务网关&#xff0c;能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的&#xff0c;拥有强大的自定义插件系统可以自行扩展&#xff0c;并且提供友好的图形化配置界…