一、什么是高可用
“高可用性”(High Availability)通常來描述一個(gè)系統(tǒng)經(jīng)過專門的設(shè)計(jì),從而減少停工時(shí)間嫂侍,而保持其服務(wù)的高度可用性。
在信息技術(shù)領(lǐng)域漏设,高可靠性(high availability)指的是運(yùn)行時(shí)間能夠滿足預(yù)計(jì)時(shí)間的一個(gè)系統(tǒng)或組件墨闲。可靠性可以用“100%可操作性”或者“從未失敗”這兩種標(biāo)準(zhǔn)來表示郑口。一個(gè)被廣泛應(yīng)用但卻難以達(dá)到的標(biāo)準(zhǔn)是著名的“5個(gè)9標(biāo)準(zhǔn)”鸳碧,就是說工作的可靠性要達(dá)到99.999%。
二犬性、如何保障系統(tǒng)的高可用
我們都知道瞻离,單點(diǎn)是系統(tǒng)高可用的大敵,單點(diǎn)往往是系統(tǒng)高可用最大的風(fēng)險(xiǎn)和敵人乒裆,應(yīng)該盡量在系統(tǒng)設(shè)計(jì)的過程中避免單點(diǎn)套利。方法論上,高可用保證的原則是“集群化”鹤耍,或者叫“冗余”:只有一個(gè)單點(diǎn)肉迫,掛了服務(wù)會(huì)受影響;如果有冗余備份稿黄,掛了還有其他backup能夠頂上喊衫。
保證系統(tǒng)高可用,架構(gòu)設(shè)計(jì)的核心準(zhǔn)則是:冗余杆怕。
有了冗余之后族购,還不夠,每次出現(xiàn)故障需要人工介入恢復(fù)勢必會(huì)增加系統(tǒng)的不可服務(wù)實(shí)踐陵珍。所以寝杖,又往往是通過“自動(dòng)故障轉(zhuǎn)移”來實(shí)現(xiàn)系統(tǒng)的高可用。
接下來我們看下典型互聯(lián)網(wǎng)架構(gòu)中撑教,如何通過冗余+自動(dòng)故障轉(zhuǎn)移來保證系統(tǒng)的高可用特性朝墩。
三、高可用mysql一般架構(gòu)
四、安裝keepalived 并準(zhǔn)備環(huán)境
1.安裝keepalived并啟動(dòng)
? ? ? 命令:yum -y? install keepalived
? ? ? 啟動(dòng)命令:service keepalived start / systemctl start keepalived
2.安裝mysql并啟動(dòng)
? ? ? 命令:yum -y install mysqld-server / mariadb-server
? ? ? 啟動(dòng)命令:service mysqld start / systemctl start mariadb
五收苏、配置
! 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 LVS_DEVEL
}
vrrp_instance VI_1 {
? ? state MASTER? ? ?#主從身份 從上是BACKUP
? ? interface eth0? ? #綁定網(wǎng)卡 (本機(jī)網(wǎng)卡名)
? ? virtual_router_id 51 # vrrp廣播路由id? (一組高可用架構(gòu)的id要一致)
? ? priority 100? ? ? ?# 權(quán)值
? ? advert_int 1
? ? authentication {
? ? ? ? auth_type PASS
? ? ? ? auth_pass 1111
? ? }
? ? virtual_ipaddress {
? ? ? ? 192.168.189.250? ? ?#聲明vip
? ? }
}
virtual_server 192.168.189.250 3306 {? ? #配置vip
? ? delay_loop 6
? ? nat_mask 255.255.255.0
? ? protocol TCP
? ? real_server 192.168.189.187 3306 {? #真實(shí)IP地址
? ? ? ? weight 1
? ? ? ?notify_down /root/stop.sh? #如果檢測不到端口 則執(zhí)行這行命令
? ? ? ? TCP_CHECK {
? ? ? ? ? ? connect_port 3306? #檢測端口
? ? ? ? ? ? connect_timeout 3
? ? ? ? ? ? nb_get_retry 3
? ? ? ? ? ? delay_before_retry 3
? ? ? ? }
? ? }
}
啟動(dòng)服務(wù)就好了
ps:停止keepalived服務(wù)腳本
#亿卤!/bin/bash
service keepalived stop
#所在路徑 /root/stop.sh 并添加權(quán)限755