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.pswp.cn/news/536866.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536866.shtml
英文地址,請注明出處:http://en.pswp.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;并且提供友好的圖形化配置界…