www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]隨著互聯(lián)網(wǎng)的高速發(fā)展,企業(yè)中沉淀的數(shù)據(jù)也越來(lái)越多,這就對(duì)數(shù)據(jù)存儲(chǔ)層的擴(kuò)展性要求越來(lái)越高。當(dāng)今互聯(lián)網(wǎng)企業(yè)中,大部分企業(yè)使用的是MySQL來(lái)存儲(chǔ)關(guān)系型數(shù)據(jù)。如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)層的高度可擴(kuò)展性成為了互聯(lián)網(wǎng)企業(yè)必須要解決的問(wèn)題。那么,如何實(shí)現(xiàn)真正意義上的MySQL無(wú)限擴(kuò)容呢?

寫(xiě)在前面

隨著互聯(lián)網(wǎng)的高速發(fā)展,企業(yè)中沉淀的數(shù)據(jù)也越來(lái)越多,這就對(duì)數(shù)據(jù)存儲(chǔ)層的擴(kuò)展性要求越來(lái)越高。當(dāng)今互聯(lián)網(wǎng)企業(yè)中,大部分企業(yè)使用的是MySQL來(lái)存儲(chǔ)關(guān)系型數(shù)據(jù)。如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)層的高度可擴(kuò)展性成為了互聯(lián)網(wǎng)企業(yè)必須要解決的問(wèn)題。那么,如何實(shí)現(xiàn)真正意義上的MySQL無(wú)限擴(kuò)容呢?今天,冰河就來(lái)以實(shí)戰(zhàn)的角度為大家講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的無(wú)限擴(kuò)容。

概述

本文是在《海量數(shù)據(jù)架構(gòu)下如何保證Mycat的高可用?》一文的基礎(chǔ)上進(jìn)一步擴(kuò)展,從而實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)層每一個(gè)環(huán)節(jié)的高可用,從而實(shí)現(xiàn)MySQL的無(wú)限擴(kuò)容。

要解決的問(wèn)題

在《海量數(shù)據(jù)架構(gòu)下如何保證Mycat的高可用?》一文中,我們的架構(gòu)圖如下:

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

由上圖可以看出,HAProxy存在單點(diǎn)隱患,一旦這個(gè)HAProxy服務(wù)宕機(jī),那么整個(gè)服務(wù)架構(gòu)將不可用。那么,如何解決HAProxy存在的單點(diǎn)隱患問(wèn)題呢?這就是這篇博文要解決的問(wèn)題。

軟件版本

  • 操作系統(tǒng):CentOS-6.8-x86_64
  • JDK版本:jdk1.8
  • HAProxy版本:haproxy-1.5.19.tar.gz
  • Mycat版本:Mycat-server-1.6(自行下載源碼編譯)
  • keepalived版本:keepalived-1.2.18.tar.gz
  • MySQL版本:mysql-5.7.tar.gz

部署規(guī)劃

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

高可用負(fù)載均衡集群部署架構(gòu)

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

上圖中簡(jiǎn)化了數(shù)據(jù)存儲(chǔ)部分的架構(gòu)細(xì)節(jié)。例如,其中對(duì)于架構(gòu)中的每一個(gè)部分,我們都可以單獨(dú)進(jìn)行擴(kuò)展,獨(dú)立成集群對(duì)外提供服務(wù),而不會(huì)存在單點(diǎn)故障的問(wèn)題。

圖解說(shuō)明:

(1) HAProxy 實(shí)現(xiàn)了 Mycat 多節(jié)點(diǎn)的集群高可用和負(fù)載均衡, 而 HAProxy  自身的高可用則可以通過(guò)Keepalived 來(lái)實(shí)現(xiàn)。因此, HAProxy 主機(jī)上要同時(shí)安裝 HAProxy 和 Keepalived,  Keepalived 負(fù)責(zé)為該服務(wù)器搶占 vip(虛擬 ip,圖中的 192.168.209.130),搶占到 vip  后,對(duì)該主機(jī)的訪問(wèn)可以通過(guò)原來(lái)的 ip(192.168.209.135)訪問(wèn),也可以直接通過(guò) vip(192.168.209.130)訪問(wèn)。

(2) Keepalived 搶占 vip 有優(yōu)先級(jí), 在 keepalived.conf 配置中的 priority  屬性決定。但是一般哪臺(tái)主機(jī)上的 Keepalived服務(wù)先啟動(dòng)就會(huì)搶占到 vip,即使是 slave,只要先啟動(dòng)也能搶到(要注意避免  Keepalived的資源搶占問(wèn)題)。

(3) HAProxy 負(fù)責(zé)將對(duì) vip 的請(qǐng)求分發(fā)到 Mycat 集群節(jié)點(diǎn)上, 起到負(fù)載均衡的作用。同時(shí) HAProxy 也能檢測(cè)到 Mycat 是否存活, HAProxy 只會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到存活的 Mycat 上。

(4) 如果 Keepalived+HAProxy 高可用集群中的一臺(tái)服務(wù)器宕機(jī), 集群中另外一臺(tái)服務(wù)器上的 Keepalived會(huì)立刻搶占 vip 并接管服務(wù), 此時(shí)搶占了 vip 的 HAProxy 節(jié)點(diǎn)可以繼續(xù)提供服務(wù)。

(5) 如果一臺(tái) Mycat 服務(wù)器宕機(jī), HAPorxy 轉(zhuǎn)發(fā)請(qǐng)求時(shí)不會(huì)轉(zhuǎn)發(fā)到宕機(jī)的 Mycat 上,所以 Mycat 依然可用。

綜上:Mycat 的高可用及負(fù)載均衡由 HAProxy 來(lái)實(shí)現(xiàn),而 HAProxy 的高可用,由 Keepalived 來(lái)實(shí)現(xiàn)。

HAProxy 節(jié)點(diǎn) 2 的部署

HAProxy 主機(jī) 2(liuyazhuang136, 192.168.209.136)的安裝部署請(qǐng)參考博文《海量數(shù)據(jù)架構(gòu)下如何保證Mycat的高可用?》,注意配置文件的調(diào)整:多節(jié)點(diǎn)部署時(shí) haproxy.cfg 配置文件中的 node 、 description 配置的值要做相應(yīng)調(diào)整。

HAProxy 主機(jī) 2(liuyazhuang136, 192.168.209.136)上的HAProxy配置如下:

## global配置中的參數(shù)為進(jìn)程級(jí)別的參數(shù),通常與其運(yùn)行的操作系統(tǒng)有關(guān)

global

log 127.0.0.1 local0 info ## 定義全局的syslog服務(wù)器,最多可以定義2個(gè)

### local0是日志設(shè)備,對(duì)應(yīng)于/etc/rsyslog.conf中的配置,默認(rèn)回收info的日志級(jí)別

#log 127.0.0.1 local1 info

chroot /usr/share/haproxy ## 修改HAProxy的工作目錄至指定的目錄并在放棄權(quán)限之前執(zhí)行

### chroot() 操作,可以提升 haproxy 的安全級(jí)別

group haproxy ## 同gid,不過(guò)這里為指定的用戶組名

user haproxy ## 同uid,但這里使用的為用戶名

daemon ## 設(shè)置haproxy后臺(tái)守護(hù)進(jìn)程形式運(yùn)行

nbproc 1 ## 指定啟動(dòng)的haproxy進(jìn)程個(gè)數(shù),

### 只能用于守護(hù)進(jìn)程模式的haproxy;默認(rèn)為止啟動(dòng)1個(gè)進(jìn)程,

### 一般只在單進(jìn)程僅能打開(kāi)少數(shù)文件描述符的場(chǎng)中中才使用多進(jìn)程模式

maxconn 4096 ## 設(shè)定每個(gè)haproxy進(jìn)程所接受的最大并發(fā)連接數(shù),

### 其等同于命令行選項(xiàng)"-n","ulimit-n"自動(dòng)計(jì)算的結(jié)果正式參照從參數(shù)設(shè)定的

# pidfile /var/run/haproxy.pid ## 進(jìn)程文件(默認(rèn)路徑 /var/run/haproxy.pid)

node liuyazhuang136 ## 定義當(dāng)前節(jié)點(diǎn)的名稱,用于HA場(chǎng)景中多haproxy進(jìn)程共享同一個(gè)IP地址時(shí)

description liuyazhuang136 ## 當(dāng)前實(shí)例的描述信息

## defaults:用于為所有其他配置段提供默認(rèn)參數(shù),這默認(rèn)配置參數(shù)可由下一個(gè)"defaults"所重新設(shè)定

defaults

log global ## 繼承g(shù)lobal中l(wèi)og的定義

mode http ## mode:所處理的模式 (tcp:四層 , http:七層 , health:狀態(tài)檢查,只會(huì)返回OK)

### tcp: 實(shí)例運(yùn)行于純tcp模式,在客戶端和服務(wù)器端之間將建立一個(gè)全雙工的連接,

#### 且不會(huì)對(duì)7層報(bào)文做任何類型的檢查,此為默認(rèn)模式

### http:實(shí)例運(yùn)行于http模式,客戶端請(qǐng)求在轉(zhuǎn)發(fā)至后端服務(wù)器之前將被深度分析,

#### 所有不與RFC模式兼容的請(qǐng)求都會(huì)被拒絕

### health:實(shí)例運(yùn)行于health模式,其對(duì)入站請(qǐng)求僅響應(yīng)“OK”信息并關(guān)閉連接,

#### 且不會(huì)記錄任何日志信息 ,此模式將用于相應(yīng)外部組件的監(jiān)控狀態(tài)檢測(cè)請(qǐng)求

option httplog

retries 3

option redispatch ## serverId對(duì)應(yīng)的服務(wù)器掛掉后,強(qiáng)制定向到其他健康的服務(wù)器

maxconn 2000 ## 前端的最大并發(fā)連接數(shù)(默認(rèn)為2000)

### 其不能用于backend區(qū)段,對(duì)于大型站點(diǎn)來(lái)說(shuō),可以盡可能提高此值以便讓haproxy管理連接隊(duì)列,

### 從而避免無(wú)法應(yīng)答用戶請(qǐng)求。當(dāng)然,此最大值不能超過(guò)“global”段中的定義。

### 此外,需要留心的是,haproxy會(huì)為每個(gè)連接維持兩個(gè)緩沖,每個(gè)緩存的大小為8KB,

### 再加上其他的數(shù)據(jù),每個(gè)連接將大約占用17KB的RAM空間,這意味著經(jīng)過(guò)適當(dāng)優(yōu)化后 ,

### 有著1GB的可用RAM空間時(shí)將維護(hù)40000-50000并發(fā)連接。

### 如果指定了一個(gè)過(guò)大值,極端場(chǎng)景中,其最終所占據(jù)的空間可能會(huì)超過(guò)當(dāng)前主機(jī)的可用內(nèi)存,

### 這可能會(huì)帶來(lái)意想不到的結(jié)果,因此,將其設(shè)定一個(gè)可接受值放為明智絕對(duì),其默認(rèn)為2000

timeout connect 5000ms ## 連接超時(shí)(默認(rèn)是毫秒,單位可以設(shè)置us,ms,s,m,h,d)

timeout client 50000ms ## 客戶端超時(shí)

timeout server 50000ms ## 服務(wù)器超時(shí)

## HAProxy的狀態(tài)信息統(tǒng)計(jì)頁(yè)面

listen admin_stats

bind :48800 ## 綁定端口

stats uri /admin-status ##統(tǒng)計(jì)頁(yè)面

stats auth admin:admin ## 設(shè)置統(tǒng)計(jì)頁(yè)面認(rèn)證的用戶和密碼,如果要設(shè)置多個(gè),另起一行寫(xiě)入即可

mode http

option httplog ## 啟用日志記錄HTTP請(qǐng)求

## listen: 用于定義通過(guò)關(guān)聯(lián)“前端”和“后端”一個(gè)完整的代理,通常只對(duì)TCP流量有用

listen mycat_servers

bind :3307 ## 綁定端口

mode tcp

option tcplog ## 記錄TCP請(qǐng)求日志

option tcpka ## 是否允許向server和client發(fā)送keepalive

option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www ## 后端服務(wù)狀態(tài)檢測(cè)

### 向后端服務(wù)器的48700端口(端口值在后端服務(wù)器上通過(guò)xinetd配置)發(fā)送 OPTIONS 請(qǐng)求

### (原理請(qǐng)參考HTTP協(xié)議) ,HAProxy會(huì)根據(jù)返回內(nèi)容來(lái)判斷后端服務(wù)是否可用.

### 2xx 和 3xx 的響應(yīng)碼表示健康狀態(tài),其他響應(yīng)碼或無(wú)響應(yīng)表示服務(wù)器故障。

balance roundrobin ## 定義負(fù)載均衡算法,可用于"defaults"、"listen"和"backend"中,默認(rèn)為輪詢方式

server mycat_01 192.168.209.133:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10

server mycat_02 192.168.209.134:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10

## 格式:server  
[:[port]] [param*]

### serser 在后端聲明一個(gè)server,只能用于listen和backend區(qū)段。

### 為此服務(wù)器指定的內(nèi)部名稱,其將會(huì)出現(xiàn)在日志及警告信息中

### 
此服務(wù)器的IPv4地址,也支持使用可解析的主機(jī)名,但要在啟動(dòng)時(shí)需要解析主機(jī)名至響應(yīng)的IPV4地址

### [:[port]]指定將客戶端連接請(qǐng)求發(fā)往此服務(wù)器時(shí)的目標(biāo)端口,此為可選項(xiàng)

### [param*]為此server設(shè)定的一系列參數(shù),均為可選項(xiàng),參數(shù)比較多,下面僅說(shuō)明幾個(gè)常用的參數(shù):

#### weight:權(quán)重,默認(rèn)為1,最大值為256,0表示不參與負(fù)載均衡

#### backup:設(shè)定為備用服務(wù)器,僅在負(fù)載均衡場(chǎng)景中的其他server均不可以啟用此server

#### check:啟動(dòng)對(duì)此server執(zhí)行監(jiān)控狀態(tài)檢查,其可以借助于額外的其他參數(shù)完成更精細(xì)的設(shè)定

#### inter:設(shè)定監(jiān)控狀態(tài)檢查的時(shí)間間隔,單位為毫秒,默認(rèn)為2000,

##### 也可以使用fastinter和downinter來(lái)根據(jù)服務(wù)器端專題優(yōu)化此事件延遲

#### rise:設(shè)置server從離線狀態(tài)轉(zhuǎn)換至正常狀態(tài)需要檢查的次數(shù)(不設(shè)置的情況下,默認(rèn)值為2)

#### fall:設(shè)置server從正常狀態(tài)轉(zhuǎn)換至離線狀態(tài)需要檢查的次數(shù)(不設(shè)置的情況下,默認(rèn)值為3)

#### cookie:為指定server設(shè)定cookie值,此處指定的值將會(huì)在請(qǐng)求入站時(shí)被檢查,

##### 第一次為此值挑選的server將會(huì)被后續(xù)的請(qǐng)求所選中,其目的在于實(shí)現(xiàn)持久連接的功能

#### maxconn:指定此服務(wù)器接受的最大并發(fā)連接數(shù),如果發(fā)往此服務(wù)器的連接數(shù)目高于此處指定的值,

#####其將被放置于請(qǐng)求隊(duì)列,以等待其他連接被釋放

HAProxy 節(jié)點(diǎn) 1 的狀態(tài)信息頁(yè):http://192.168.209.135:48800/admin-status

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

HAProxy 節(jié)點(diǎn) 2 的狀態(tài)信息頁(yè):http://192.168.209.136:48800/admin-status

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

Keepalived 介紹

官網(wǎng):http://www.keepalived.org/

Keepalived 是一種高性能的服務(wù)器高可用或熱備解決方案, Keepalived 可以用來(lái)防止服務(wù)器單點(diǎn)故障的發(fā)生,通過(guò)配合  Haproxy 可以實(shí)現(xiàn) web 前端服務(wù)的高可用。Keepalived 以 VRRP 協(xié)議為實(shí)現(xiàn)基礎(chǔ),用 VRRP  協(xié)議來(lái)實(shí)現(xiàn)高可用性(HA)。VRRP(Virtual Router Redundancy Protocol)協(xié)議是用于實(shí)現(xiàn)路由器冗余的協(xié)議,  VRRP 協(xié)議將兩臺(tái)或多臺(tái)路由器設(shè)備虛擬成一個(gè)設(shè)備,對(duì)外提供虛擬路由器 IP(一個(gè)或多個(gè)),而在路由器組內(nèi)部,如果實(shí)際擁有這個(gè)對(duì)外 IP  的路由器如果工作正常的話就是 MASTER,或者是通過(guò)算法選舉產(chǎn)生。MASTER 實(shí)現(xiàn)針對(duì)虛擬路由器 IP 的各種網(wǎng)絡(luò)功能,如 ARP 請(qǐng)求, ICMP,以及數(shù)據(jù)的轉(zhuǎn)發(fā)等;其他設(shè)備不擁有該虛擬 IP,狀態(tài)是 BACKUP,除了接收 MASTER 的VRRP  狀態(tài)通告信息外,不執(zhí)行對(duì)外的網(wǎng)絡(luò)功能。當(dāng)主機(jī)失效時(shí), BACKUP 將接管原先 MASTER 的網(wǎng)絡(luò)功能。VRRP 協(xié)議使用多播數(shù)據(jù)來(lái)傳輸  VRRP 數(shù)據(jù), VRRP 數(shù)據(jù)使用特殊的虛擬源 MAC 地址發(fā)送數(shù)據(jù)而不是自身網(wǎng)卡的 MAC 地址, VRRP 運(yùn)行時(shí)只有 MASTER  路由器定時(shí)發(fā)送 VRRP 通告信息,表示 MASTER 工作正常以及虛擬路由器 IP(組), BACKUP 只接收 VRRP  數(shù)據(jù),不發(fā)送數(shù)據(jù),如果一定時(shí)間內(nèi)沒(méi)有接收到 MASTER 的通告信息,各 BACKUP 將宣告自己成為 MASTER,發(fā)送通告信息,重新進(jìn)行  MASTER 選舉狀態(tài)。

Keepalived 的安裝

注意:需要在192.168.209.135、 192.168.209.136兩臺(tái)服務(wù)器上安裝Keepalived。

Keepalived (http://www.keepalived.org/download.html

上傳或下載 keepalived

上傳或下載 keepalived(keepalived-1.2.18.tar.gz) 到 /usr/local/src 目錄

解壓安裝

安裝 keepalived 需要用到 openssl

# yum install gcc gcc-c++ openssl openssl-devel
# cd /usr/local/src
# tar -zxvf keepalived-1.2.18.tar.gz
# cd keepalived-1.2.18
# ./configure --prefix=/usr/local/keepalived
# make && make install

將 keepalived 安裝成 Linux 系統(tǒng)服務(wù)

因?yàn)闆](méi)有使用 keepalived 的默認(rèn)路徑安裝(默認(rèn)是/usr/local) ,安裝完成之后,需要做一些工作 復(fù)制默認(rèn)配置文件到默認(rèn)路徑

# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

復(fù)制 keepalived 服務(wù)腳本到默認(rèn)的地址

# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

設(shè)置 keepalived 服務(wù)開(kāi)機(jī)啟動(dòng)

# chkconfig keepalived on

修改 Keepalived 配置文件

(1) MASTER 節(jié)點(diǎn)配置文件(192.168.209.135)

! Configuration File for keepalived
global_defs {
## keepalived 自帶的郵件提醒需要開(kāi)啟 sendmail 服務(wù)。建議用獨(dú)立的監(jiān)控或第三方 SMTP
 router_id liuyazhuang135 ## 標(biāo)識(shí)本節(jié)點(diǎn)的字條串,通常為 hostname
}
## keepalived 會(huì)定時(shí)執(zhí)行腳本并對(duì)腳本執(zhí)行的結(jié)果進(jìn)行分析,動(dòng)態(tài)調(diào)整 vrrp_instance 的優(yōu)先級(jí)。
## 如果腳本執(zhí)行結(jié)果為 0,并且 weight 配置的值大于 0,則優(yōu)先級(jí)相應(yīng)的增加。
## 如果腳本執(zhí)行結(jié)果非 0,并且 weight 配置的值小于 0,則優(yōu)先級(jí)相應(yīng)的減少。
## 其他情況,維持原本配置的優(yōu)先級(jí),即配置文件中 priority 對(duì)應(yīng)的值。
vrrp_script chk_haproxy {
 script "/etc/keepalived/haproxy_check.sh" ## 檢測(cè) haproxy 狀態(tài)的腳本路徑
 interval 2 ## 檢測(cè)時(shí)間間隔
 weight 2 ## 如果條件成立,權(quán)重+2
}
## 定義虛擬路由, VI_1 為虛擬路由的標(biāo)示符,自己定義名稱
vrrp_instance VI_1 {
 state BACKUP ## 默認(rèn)主設(shè)備(priority 值大的)和備用設(shè)備(priority 值小的)都設(shè)置為 BACKUP,
 ## 由 priority 來(lái)控制同時(shí)啟動(dòng)情況下的默認(rèn)主備,否則先啟動(dòng)的為主設(shè)備
 interface eth3 ## 綁定虛擬 IP 的網(wǎng)絡(luò)接口,與本機(jī) IP 地址所在的網(wǎng)絡(luò)接口相同,我的是 eth3
 virtual_router_id 35 ## 虛擬路由的 ID 號(hào),兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,可選 IP 最后一段使用,
 ## 相同的 VRID 為一個(gè)組,他將決定多播的 MAC 地址
 priority 120 ## 節(jié)點(diǎn)優(yōu)先級(jí),值范圍 0-254, MASTER 要比 BACKUP 高
 nopreempt ## 主設(shè)備(priority 值大的)配置一定要加上 nopreempt,否則非搶占也不起作用
 advert_int 1 ## 組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣,默認(rèn) 1s
 ## 設(shè)置驗(yàn)證信息,兩個(gè)節(jié)點(diǎn)必須一致
 authentication {
  auth_type PASS
  auth_pass 1111 ## 真實(shí)生產(chǎn),按需求對(duì)應(yīng)該過(guò)來(lái)
 }
 ## 將 track_script 塊加入 instance 配置塊
 track_script {
  chk_haproxy ## 檢查 HAProxy 服務(wù)是否存活
 }
 ## 虛擬 IP 池, 兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣
 virtual_ipaddress {
  192.168.209.130 ## 虛擬 ip,可以定義多個(gè),每行一個(gè)
 }
}

(2)BACKUP 節(jié)點(diǎn)配置文件(192.168.209.136)

! Configuration File for keepalived
global_defs {
 router_id liuyazhuang136
}
vrrp_script chk_haproxy {
 script "/etc/keepalived/haproxy_check.sh"
 interval 2
 weight 2
}
vrrp_instance VI_1 {
 state BACKUP
 interface eth3
 virtual_router_id 35
 priority 110
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111
 }
 track_script {
  chk_haproxy
 }
 virtual_ipaddress {
  192.168.209.130
 }
}

特別注意:如果非搶占模式不生效, 在 Keepalived 的故障節(jié)點(diǎn)恢復(fù)后會(huì)再次導(dǎo)搶占 vip,從而因 vip 切換而閃斷帶來(lái)的風(fēng)險(xiǎn)(視頻解說(shuō))。按以上配置,配置了 Keepalived 非搶占模式, 配置及注意點(diǎn)如下:(1) 主設(shè)備、 從設(shè)備中的 state 都設(shè)置為 BACKUP (2) 主設(shè)備、從設(shè)備中都不要配置 mcast_src_ip (本機(jī) IP 地址) (3) 默認(rèn)主設(shè)備(priority 值大的 Keepalived 節(jié)點(diǎn)) 配置一定要加上 nopreempt,否則非搶占不起作用 (4) 防火墻配置允許組播(主、備兩臺(tái)設(shè)備上都需要配置, keepalived 使用 224.0.0.18 作為 Master 和Backup 健康檢查的通信 IP)

# iptables -I INPUT -i eth3 -d 224.0.0.0/8 -p vrrp -j ACCEPT
# iptables -I OUTPUT -o eth3 -d 224.0.0.0/8 -p vrrp -j ACCEPT
(eth3 為主機(jī)的網(wǎng)卡設(shè)備名稱,生產(chǎn)環(huán)境服務(wù)器可以用獨(dú)立網(wǎng)卡來(lái)處理組播和心跳檢測(cè)等)
# service iptables save
重啟防火墻:
# service iptables restart

編寫(xiě) Haproxy 狀態(tài)檢測(cè)腳本

我們編寫(xiě)的腳本為/etc/keepalived/haproxy_check.sh (已在 keepalived.conf 中配置) 腳本要求:如果 haproxy 停止運(yùn)行,嘗試啟動(dòng),如果無(wú)法啟動(dòng)則殺死本機(jī)的 keepalived 進(jìn)程,keepalied將虛擬 ip 綁定到 BACKUP 機(jī)器上。

內(nèi)容如下:

# mkdir -p /usr/local/keepalived/log
# vi /etc/keepalived/haproxy_check.sh

haproxy_check.sh腳本內(nèi)容如下:

#!/bin/bash
START_HAPROXY="/etc/rc.d/init.d/haproxy start"
STOP_HAPROXY="/etc/rc.d/init.d/haproxy stop"
LOG_FILE="/usr/local/keepalived/log/haproxy-check.log"
HAPS=`ps -C haproxy --no-header |wc -l`
date "+%Y-%m-%d %H:%M:%S" >> $LOG_FILE
echo "check haproxy status" >> $LOG_FILE
if [ $HAPS -eq 0 ];then
echo $START_HAPROXY >> $LOG_FILE
$START_HAPROXY >> $LOG_FILE 2>&1
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
echo "start haproxy failed, killall keepalived" >> $LOG_FILE
killall keepalived
fi
fi

保存后,給腳本賦執(zhí)行權(quán)限:

# chmod +x /etc/keepalived/haproxy_check.sh

啟動(dòng) Keepalived

# service keepalived start
Starting keepalived: [ OK ]

Keepalived 服務(wù)管理命令:

停止:service keepalived stop
啟動(dòng):service keepalived start
重啟:service keepalived restart
查看狀態(tài):service keepalived status

高可用測(cè)試

(1)關(guān)閉 192.168.209.135 中的 Haproxy, Keepalived 會(huì)將它重新啟動(dòng)

# service haproxy stop

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

(2)關(guān)閉 192.168.209.135 中的 Keepalived, VIP(192.168.209.130) 會(huì)被 192.168.209.136 搶占

# service keepalived stop

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

由上圖可知:Keepalived 停止后, 192.168.209.135 節(jié)點(diǎn)的網(wǎng)絡(luò)接口中的 VIP(192.168.209.130) 將消失

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

此時(shí),由上圖可知:在192.168.209.136節(jié)點(diǎn)的網(wǎng)絡(luò)接口中會(huì)出現(xiàn) VIP(192.168.209.130)。

查看此時(shí) VIP 對(duì)應(yīng)的 MAC, Windows 下使用 CMD 命令查看:

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

說(shuō)明此時(shí) VIP 已經(jīng)漂移到物理主機(jī) 192.168.209.136上了

再通過(guò) VIP(192.168.209.130) 來(lái)訪問(wèn) Haproxy 集群, 訪問(wèn)到的也是 192.168.209.136

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容? 冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

(3)重新啟動(dòng) 192.168.209.135 中的 Keepalived

重新啟動(dòng) 192.168.209.135 中的 Keepalived, vip(192.168.209.130)保留在 192.168.209.136 主機(jī)上, 不會(huì)出現(xiàn) 135 啟動(dòng)搶占 vip 的情況。

# service keepalived start

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

(4)模擬搶占了 vip 的節(jié)點(diǎn)(192.168.209.136) 中的 HAProxy 故障或啟動(dòng)失敗

方式:把 192 節(jié)點(diǎn)中的 haproxy.cfg 文件重命名為 haproxy.cfg_bak, 并把 haproxy 服務(wù)進(jìn)行 kill 掉,此時(shí)  keepalived 會(huì)嘗試去啟動(dòng) haproxy,會(huì)由于找不到配置文件而啟動(dòng)失敗,此時(shí)就會(huì)進(jìn)行 haproxy_check.sh腳本中的  killall keepalived 命令,結(jié)束 keepalived 進(jìn)行。隨后就是 192.168.209.135 節(jié)點(diǎn)重新?lián)屨?vip

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

說(shuō)明此時(shí) VIP 已經(jīng)漂移到物理主機(jī) 192.168.209.135上了

再通過(guò) VIP(192.168.209.130) 來(lái)訪問(wèn) Haproxy 集群, 訪問(wèn)到的也是 192.168.209.135

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容? 冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

驗(yàn)證數(shù)據(jù)庫(kù)訪問(wèn)

通過(guò) vip 訪問(wèn)數(shù)據(jù)庫(kù)、驗(yàn)證 vip 切換后的數(shù)據(jù)庫(kù)訪問(wèn)

(1)命令行訪問(wèn)數(shù)據(jù)庫(kù)

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

(2)Navicat訪問(wèn)數(shù)據(jù)庫(kù)冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

至此,Mycat高可用負(fù)載均衡集群的實(shí)現(xiàn)(HAProxy + Keepalived + Mycat)搭建完畢

大家可以到鏈接http://download.csdn.net/detail/l1028386804/9915621下載搭建Mycat高可用負(fù)載均衡集群的實(shí)現(xiàn)(HAProxy + Keepalived + Mycat)使用的Keepalived

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

長(zhǎng)按訂閱更多精彩▼

冰河,能不能講講如何實(shí)現(xiàn)MySQL數(shù)據(jù)存儲(chǔ)的無(wú)限擴(kuò)容?

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉