高性能業務架構解決方案(Keepalive+MySQL)

高性能業務架構解決方案(Keepalive+MySQL)

1、 概況mysql

2、 相關理論linux

3、 架構拓撲web

4、 資源規劃sql

5、 實施部署數據庫

   5.1初始化配置編程

   5.2 Mysql主從同步配置vim

   5.3 配置keepalived實現熱備緩存

       5.3.1 Keepalived的安裝安全

       5.3.2 Keepalived的配置bash

       5.3.3 監測腳本

6、 測試

   6.1 測試主從同步

   6.2 高可用測試

7、注意事項

   7.1 LVS安裝注意事項

   7.2 將相關開機自啓服務

1、概況

關於MySQL-HA,目前存在多種解決方案,例如heartbeatdrbdmmm、共享存儲,可是它們各有優缺點。heartbeatdrbd配置較爲複雜,須要本身寫腳本才能實現MySQL自動切換,腳步編寫對應無編程功底的人來講存在很大的難度;對於mmm,生產環境中不多有人用,且mmm 管理端須要單獨運行一臺服務器上,要是想實現高可用,就得對mmm管理端作HA,這樣無疑又增長了硬件開支;對於共享存儲,MySQL數據仍是放在本地較爲安全,存儲設備畢竟存在單點隱患。使用MySQLmaster+keepalived是一種很是好的解決方案,在MySQL-HA環境中,MySQL互爲主從關係,這樣就保證了兩臺MySQL數據的一致性,而後用keepalived實現虛擬IP,經過keepalived自帶的服務監控功能來實現MySQL障時自動切換。

2、相關理論

keepalived:顧名思義是保持存活,經常使用來搭建設備的高可用,防止業務核心設備出現單點故障。keepalived基於VRRP協議來實現高可用主要用做realserver的健康檢查以及負載均衡主機和backup主機之間的故障漂移。若是將TCP/IP劃分爲5Keepalived就是一個相似於3~5層交換機制的軟件,具備3~5層交換功能,其主要做用是檢測web服務器的狀態,若是某臺web服務器故障,Keepalived將檢測到並將其從系統中剔除,當該web服務器工做正常後Keepalived自動將其加入到服務器羣中,這些工做所有自動完成,而不須要人工干預,只須要人工修復故障的web服務器便可。

層機理是發送ICMP數據包即PING給某臺服務器,若是不,則認爲其故障,並從服務器羣中剔除層機理是檢測TCP端口號狀態來判斷某臺服務器是否故障,若是檢測端口存在異常,則從服務器羣中剔除層機理是根據用戶的設定檢查某個服務器應用程序是否正常運行,若是不正常,則從服務器羣中剔除。

3、架構拓撲

wKioL1ih0ZmyTYKMAADIaxQj8DA633.png

4、資源規劃

主機名稱

內網IP

操做系統

SQL-Master

10.10.10.11

Centos 6.5 64

SQL-Backup

10.10.10.12

Centos 6.5 64

VIP

10.10.10.50

\


5、實施部署

5.1初始化配置

getenforce 0關閉SeLinux

修改主機名

防火牆開放22/3306端口

測試網絡連通性

更新YUM

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum makecache                                        #生成緩存

5.2Mysql主從同步配置

yum install mysql-server mysql -y
chkconfig mysqld on
service mysqld start
mysqladmin -u root password 51idc

主從均須要修改my.cnf

Mysql-Master的配置文件以下

vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
server-id=1                     #mysql-M的id爲1,mysql-B的id爲2
binlog-do-db=anchnet                 #須要同步是數據庫
binlog-ignore-db=mysql                #不須要同步的數據庫
replicate-do-db=anchnet                #須要記錄日誌的數據庫
replicate-ignore-db=mysql,information_schema
log-bin=mysql-bin
log-slave-updates
sync_binlog=1
auto_increment_offset=1               #自增字段的起始值,mysql-M爲1,
auto_increment_increment=2
slave-skip-errors=all
log_bin_trust_function_creators=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Mysql-Backup須要須要一下,其他與主保持一致

server-id=2

auto_increment_offset=2

查看此時查看mysql-Mastermysql-BackupFilePosition

wKioL1ih1PiBgkLRAADYGTIc5x8831.png

wKioL1ih1W3DQeRwAADV0V4CMSg545.png


Mysql-Master配置以下:

service mysqld restart
mysql -uroot -p51idc
use mysql;
insert into mysql.user(Host,User,Password) values("localhost","51idc",password("51idc"));
grant replication slave on *.* to '51idc'@'10.10.10.12' identified by '51idc';
change master to master_host='10.10.10.12', master_user='51idc', master_password='51idc', master_log_file='mysql-bin.000003', master_log_pos=106;
start slave;

Mysql-Backup配置以下:

service mysqld restart
mysql -uroot -p51idc
use mysql;
insert into mysql.user(Host,User,Password) values("localhost","51idc",password("51idc"));
grant replication slave on *.* to '51idc'@'10.10.10.11' identified by '51idc';
change master to master_host='10.10.10.11', master_user='51idc', master_password='51idc', master_log_file='mysql-bin.000003', master_log_pos=106;
start slave;

查看結果

wKiom1ih1paAIYASAAWyy3TiNJE582.png

5.3 配置keepalived實現熱備

5.3.1 Keepalived的安裝

masterbackup上面均須要配置

安裝開發組環境工具

yum groupinstall "Development tools" -y

安裝相應軟件包

yum install openssl-devel popt-devel -y
ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64 /usr/src/linux   #此處要根據實際操做系統最高版本的kernel 爲準

若是/usr/src/kernels/下面沒文件使用yum 安裝 kernel-devel

#下載keepalive

wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz
tar zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64

(注意這個步驟要看到如下字樣纔是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

wKiom1ih16PStstNAADFZnQv6qA342.png

make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
chkconfig --add keepalived
chkconfig --level 2345 keepalived on
/etc/init.d/keepalived start

至此keepalive就已經安裝完畢。

5.3.2 Keepalived的配置

vim /etc/keepalived

! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
vrrp_script chk_mysql_port {
                script "/usr/mysql_check.sh"       #檢測腳本
                interval 2
                weight 2
}
vrrp_instance VI_1 {
        state BACKUP                               #mysql-M與mysql-B保持均爲BACKUP
        interface eth1                             #網卡接口
        virtual_router_id 77                       #router id保持一直
        priority 100                               #優先級,mysql-B數值小於100
        advert_int 1
        authentication {
                     auth_type PASS
                     auth_pass 51idc
        }
        track_script {
                chk_mysql_port
        }
        virtual_ipaddress {
             10.10.10.50                           #VIP地址
        }
}

Mysql-B配置修改優先級便可
priority 90
Service keepalived restart

測試wKioL1ih2JDBooQGAAQecQc1ESQ266.png

wKioL1ih2afw-LnZAAPz1rNultg558.png

測試VIP連通性


wKiom1ih2WCCkZL7AALFj3MJ-kw482.png

5.3.2 Keepalived的配置

vim /usr/mysql_check.sh

#!/bin/sh
PATH=/usr/sbin:/usr/bin:$PATH
export PATH
STAT=`netstat -ant|grep LISTEN|egrep "0.0.0.0:3306"|wc -l`
if [ $STAT -eq 0 ];then
      /etc/init.d/keepalived stop
      exit
fi

6、測試

6.1 測試主從同步

主服務器建立數據庫

wKiom1ih2hSyfrJUAAJY-L79nYY277.png

查看slave

wKioL1ih2nrQyN9FAAJotfApZag203.png

測試主從同步已經成功。

6.2 高可用測試

中止mysql-Mkeepalived

wKiom1ih2uSQbOhtAAP3qPU2opw396.png

查看VIP10.10.10.50已經遷移至mysql-B

wKiom1ih2zvRPcoYAAQgk7IGeno710.png中止mysql-M上的mysql

wKioL1ih24fRd8AlAASVSuudF_Q471.pngVIP已經遷移到mysql-B

wKioL1ih28Xyryf_AAQ791mw81M582.png

7、注意事項

7.1 LVS安裝注意事項

ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64 /usr/src/linux   #此處要根據實際操做系統最高版本的kernel 爲準

./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64

(注意這個步驟要看到如下字樣纔是正常的)

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

wKiom1ih3DOy3qmoAAER-NWd5pI041.png

7.2 將相關開機自啓服務

開機自啓服務

chkconfig mysqld on
chkconfig keepalived on

開機自啓腳本

wKioL1ih3JzgiP4QAAGiUwsvIBM878.png

相關文章
相關標籤/搜索