使用MySQL雙master+keepalived是一種非常好的解決方案,在MySQL-HA環(huán)境中,MySQL互為主從關(guān)系,這樣就保證了兩臺(tái)MySQL數(shù)據(jù)的一致性,然后用keepalived實(shí)現(xiàn)虛擬IP,通過(guò)keepalived自帶的服務(wù)監(jiān)控功能來(lái)實(shí)現(xiàn)MySQL故障時(shí)自動(dòng)切換。

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出塔河免費(fèi)做網(wǎng)站回饋大家。
下面,我把即將上線的一個(gè)生產(chǎn)環(huán)境中的架構(gòu)與大家分享一下,看一下這個(gè)架構(gòu)中,MySQL-HA是如何實(shí)現(xiàn)的,環(huán)境拓?fù)淙缦?/p>
MySQL-VIP:10.10.10.21
MySQL-master1:10.10.10.17
MySQL-master2:10.10.10.18
OS版本:Redhat6.2
MySQL版本:mysql-5.1.59
Keepalived版本:keepalived-1.1.20
一、MySQL master-master配置
1、修改MySQL配置文件
兩臺(tái)MySQL均如要開(kāi)啟binlog日志功能,開(kāi)啟方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin選項(xiàng)
兩臺(tái)MySQL的server-ID不能一樣,默認(rèn)情況下兩臺(tái)MySQL的serverID都是1,需將其中一臺(tái)修改為2即可
Master1配置:
#vim /etc/my.cnf
log-bin=mysql-bin //開(kāi)啟binlog日志功能
log =/usr/local/mysql/var/mysql.log //會(huì)打印mysql的所以sql語(yǔ)句
server-id= 1 //
binlog-do-db =mysql //需要同步的庫(kù)名稱(chēng)
auto-increment-increment= 2
auto-increment-offset= 2
Master2配置:
#vim /etc/my.cnf
log-bin=mysql-bin //開(kāi)啟binlog日志功能
log =/usr/local/mysql/var/mysql.log //會(huì)打印mysql的所以sql語(yǔ)句
server-id= 2
binlog-do-db =mysql //需要同步的庫(kù)名稱(chēng)
auto-increment-increment= 2
auto-increment-offset= 2
2、建授權(quán)用戶
在10.10.10.17上新建授權(quán)用戶
grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘123456’;
在10.10.10.18服務(wù)器上建授權(quán)用戶
grant replicationslave on *.* to test@’10.10.10.%’ identified by ‘123456’;
3、將10.10.10.17設(shè)為10.10.10.18的主服務(wù)器
在10.10.10.18上將10.10.10.17設(shè)為自己的主服務(wù)器
mysql show master status;(17服務(wù)器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
MySQL change master to master_host='10.10.10.17',master_user=’test’,master_password='123456',master_log_file='MySQL-bin.000027',master_log_pos=106;
Query OK, 0 rows affected (0.05 sec)
MySQL start slave;
Query OK, 0 rows affected (0.00 sec)
mysql show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2項(xiàng)都為yes,master-master配置即成功
將10.10.10.18設(shè)為10.10.10.17的主服務(wù)器 方法與上面設(shè)置一致只需將
在10.10.10.17上將10.10.10.18設(shè)為自己的主服務(wù)器
mysql show master status;(18服務(wù)器配置)
1+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000027| 106|mysql | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
MySQL change master to master_host='10.10.10.18',master_user=’test’,master_password='123456',master_log_file='MySQL-bin.000027',master_log_pos=106;
Query OK, 0 rows affected (0.05 sec)
MySQL start slave;
Query OK, 0 rows affected (0.00 sec)
mysql show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2項(xiàng)都為yes,master-master配置即成功
測(cè)試是否成功:
如上述均正確配置,現(xiàn)在在任何一臺(tái)MySQL上更新數(shù)據(jù)都會(huì)同步到另一臺(tái)MySQL(僅限mysql庫(kù))
二、keepalived安裝及配置
1、10.10.10.17服務(wù)器上keepalived安裝及配置
安裝keepalived
#tar zxvfkeepalived-1.1.20.tar.gz
#cdkeepalived-1.1.20
#./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.x86_64
#make make install
配置keepalived
我們自己在新建一個(gè)配置文件,默認(rèn)情況下keepalived啟動(dòng)時(shí)會(huì)去/etc/keepalived目錄下找配置文件
#mkdir/etc/keepalived
#vi/etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
smtp_server 127.0.0.1 (如果本機(jī)配置的話)
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
state BACKUP #兩臺(tái)配置此處均是BACKUP
interface p4p1 #注意網(wǎng)卡接口
virtual_router_id 51
priority 100 #優(yōu)先級(jí),另一臺(tái)改為90
advert_int 1
nopreempt #不主動(dòng)搶占資源,只在優(yōu)先級(jí)高的機(jī)器上設(shè)置即可,優(yōu)先級(jí)低的機(jī)器不設(shè)置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.21
}
}
virtual_server10.10.10.21 3306 {
delay_loop 2 #每個(gè)2秒檢查一次real_server狀態(tài)
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #會(huì)話保持時(shí)間
protocol TCP
real_server 10.10.10.17 3306 {
weight 3
notify_down /usr/local/my/my.sh #檢測(cè)到服務(wù)down后執(zhí)行的腳本
TCP_CHECK {
connect_timeout 10 #連接超時(shí)時(shí)間
nb_get_retry 3 #重連次數(shù)
delay_before_retry 3 #重連間隔時(shí)間
connect_port 3306 #健康檢查端口
}
}
編寫(xiě)檢測(cè)服務(wù)down后所要執(zhí)行的腳本
#vi/usr/local/MySQL/bin/MySQL.sh
#!/bin/sh
pkillkeepalived
#chmod +x/usr/local/MySQL/bin/MySQL.sh
注:此腳本是上面配置文件notify_down選項(xiàng)所用到的,keepalived使用notify_down選項(xiàng)來(lái)檢查real_server的服務(wù)狀態(tài),當(dāng)發(fā)現(xiàn)real_server服務(wù)故障時(shí),便觸發(fā)此腳本;我們可以看到,腳本就一個(gè)命令,通過(guò)pkill keepalived強(qiáng)制殺死keepalived進(jìn)程,從而實(shí)現(xiàn)了MySQL故障自動(dòng)轉(zhuǎn)移。另外,我們不用擔(dān)心兩個(gè)MySQL會(huì)同時(shí)提供數(shù)據(jù)更新操作,因?yàn)槊颗_(tái)MySQL上的keepalived的配置里面只有本機(jī)MySQL的IP+VIP,而不是兩臺(tái)MySQL的IP+VIP
啟動(dòng)keepalived
#/usr/local/keepalived/sbin/keepalived–D
#ps -aux | grepkeepalived
測(cè)試
找一臺(tái)局域網(wǎng)PC,然后去ping MySQL的VIP,這時(shí)候MySQL的VIP是可以ping的通的
停止MySQL服務(wù),看keepalived健康檢查程序是否會(huì)觸發(fā)我們編寫(xiě)的腳本
1、10.10.10.18服務(wù)器上keepalived安裝及配置
安裝keepalived
#tar zxvfkeepalived-1.1.20.tar.gz
#cdkeepalived-1.1.20
#./configure--prefix=/usr/local/keepalived--with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.x86_64
#make make install
配置keepalived
我們自己在新建一個(gè)配置文件,默認(rèn)情況下keepalived啟動(dòng)時(shí)會(huì)去/etc/keepalived目錄下找配置文件
#mkdir/etc/keepalived
#vi/etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1{
state BACKUP #兩臺(tái)配置此處均是BACKUP
interface p4p1 #注意網(wǎng)卡接口
virtual_router_id 51
priority 90 #優(yōu)先級(jí),另一臺(tái)改為90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.21
}
}
virtual_server10.10.10.21 3306 {
delay_loop 2 #每個(gè)2秒檢查一次real_server狀態(tài)
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #會(huì)話保持時(shí)間
protocol TCP
real_server 10.10.10.18 3306 {
weight 3
notify_down /usr/local/my/my.sh #檢測(cè)到服務(wù)down后執(zhí)行的腳本
TCP_CHECK {
connect_timeout 10 #連接超時(shí)時(shí)間
nb_get_retry 3 #重連次數(shù)
delay_before_retry 3 #重連間隔時(shí)間
connect_port 3306 #健康檢查端口
}
}
啟動(dòng)keepalived
#/usr/local/keepalived/sbin/keepalived–D
#ps -aux | grepkeepalived
測(cè)試
停止MySQL服務(wù),看keepalived健康檢查程序是否會(huì)觸發(fā)我們編寫(xiě)的腳本
三、測(cè)試
兩臺(tái)MySQL服務(wù)器都要授權(quán)允許從遠(yuǎn)程登錄
MySQL grantall privileges on *.* to andyguo@'%' identified by '123456';
Query OK, 0 rowsaffected (0.00 sec)
MySQL flushprivileges;
Query OK, 0 rowsaffected (0.00 sec)
keepalived故障轉(zhuǎn)移測(cè)試:
在windows客戶端一直去ping VIP,然后關(guān)閉10.10.10.17上的keepalived,正常情況下VIP就會(huì)切換到10.10.10.18上面去
開(kāi)啟10.10.10.17上的keepalived,關(guān)閉10.10.10.18上的keepalived,看是否能自動(dòng)切換,正常情況下VIP又會(huì)屬于10.10.10.17
注:keepalived切換速度還是非常塊的,整個(gè)切換過(guò)程只需1-3秒
MySQL故障轉(zhuǎn)移測(cè)試:
在10.10.10.17上關(guān)閉MySQL服務(wù),看VIP是否會(huì)切換到10.10.10.18上
開(kāi)啟10.10.10.17上的MySQL和keepalived,然后關(guān)閉10.10.10.18上的MySQL,看VIP是否會(huì)切換到10.10.10.17上
如果都沒(méi)問(wèn)題,到此整個(gè)配置即已完成。
備注(在測(cè)試的過(guò)程中遇到了一些問(wèn)題,解決方法)
Keepalived_healthcheckers:IPVS: Can't initialize ipvs: Protocol not available
起初重裝了ipvsadm和keepalived,但故障依舊,隨后突然想到是否lvs模塊加載異常,于是lsmod|grep ip_vs發(fā)現(xiàn)果然沒(méi)有相應(yīng)的模塊,而正常情況下應(yīng)該是有的
e、手動(dòng)加載ip_vs模塊
modprobe ip_vs
modprobe ip_vs_wrr
f、重啟keepalived服務(wù),故障排除,此時(shí)轉(zhuǎn)發(fā)正常,從服務(wù)器的ip_vs加載正常,主從切換也正常
g、將modprobeip_vs、modprobe ip_vs_wrr添加進(jìn)/etc/rc.local開(kāi)機(jī)自動(dòng)加載
簡(jiǎn)要描述?
伊?xí)r代阿里云事業(yè)部小云作答如下:中國(guó)電信、聯(lián)通等網(wǎng)絡(luò)數(shù)據(jù)通過(guò)兩臺(tái)6506路由器傳輸,數(shù)據(jù)接入節(jié)點(diǎn)前加上網(wǎng)關(guān)或防火墻,通過(guò)40G的骨干交換網(wǎng),分別將數(shù)據(jù)傳輸?shù)胶蠓接稍浦鳈C(jī)搭建的業(yè)務(wù)平臺(tái)上。
你可以看下你的VPC和你選定的區(qū)域是否一致,如果一致很有可能是臨時(shí)沒(méi)有專(zhuān)用網(wǎng)絡(luò)的ECS資源了。現(xiàn)在主要是專(zhuān)業(yè)網(wǎng)絡(luò)了。
小貼士:
經(jīng)典網(wǎng)絡(luò):IP地址由阿里云統(tǒng)一分配,配置簡(jiǎn)便,使用方便,適合對(duì)操作易用性要求比較高、需要快速使用 ECS 的用戶。
專(zhuān)有網(wǎng)絡(luò):是指邏輯隔離的私有網(wǎng)絡(luò),您可以自定義網(wǎng)絡(luò)拓?fù)浜?IP 地址,支持通過(guò)專(zhuān)線連接。適合于熟悉網(wǎng)絡(luò)管理的用戶
阿里云服務(wù)器(Elastic Compute Service, ECS)是一種處理能力可彈性伸縮的計(jì)算服務(wù),其管理方式比物理服務(wù)器更簡(jiǎn)單高效。 阿里云服務(wù)器幫助您快速構(gòu)建更穩(wěn)定、安全的應(yīng)用,降低開(kāi)發(fā)運(yùn)維的難度和整體IT成本,使您能夠更專(zhuān)注于核心業(yè)務(wù)創(chuàng)新。
網(wǎng)站名稱(chēng):阿里云服務(wù)器拓?fù)?阿里云服務(wù)器部署教程
文章源于:http://www.chinadenli.net/article0/dddjgio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、企業(yè)建站、網(wǎng)站改版、企業(yè)網(wǎng)站制作、小程序開(kāi)發(fā)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)