溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

keepalived實(shí)現(xiàn)mysql高可用

發(fā)布時(shí)間:2020-06-26 19:59:07 來源:網(wǎng)絡(luò) 閱讀:3174 作者:帥宇 欄目:數(shù)據(jù)庫

說明:需要3個(gè)節(jié)點(diǎn),主節(jié)點(diǎn)(202.207.178.6)、從節(jié)點(diǎn)(202.207.178.7)、測試節(jié)點(diǎn)(202.207.178.8),虛擬地址:202.207.178.4。配置實(shí)現(xiàn)mysql數(shù)據(jù)庫主從復(fù)制,并使用keepalived實(shí)現(xiàn)高可用,可以實(shí)現(xiàn)主數(shù)據(jù)庫down機(jī)時(shí),從數(shù)據(jù)庫可用!

mysql主從復(fù)制詳見本人博客http://10927734.blog.51cto.com/10917734/1868323

前提:

由于是高可用服務(wù),首先配置高可用服務(wù)實(shí)現(xiàn)的一些基本條件

1)節(jié)點(diǎn)名稱必須跟uname -n命令的執(zhí)行結(jié)果一致

node1:

# hostname node1

# vim /etc/sysconfig/network

HOSTNAME=node1

node2:

# hostname node2

# vim /etc/sysconfig/network

HOSTNAME=node2

2)節(jié)點(diǎn)之間必須通過ssh互信通信

[root@node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.7

[root@node2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.6

3)集群各節(jié)點(diǎn)之間時(shí)間必須同步

使用ntp服務(wù)器同步時(shí)間

ntpdate ip(配置了ntp服務(wù)的主機(jī)地址)

4)配置本地解析:

[root@node1 ~]# vim /etc/hosts

202.207.178.6 node1

202.207.178.7 node2

[root@node1 ~]# scp /etc/hosts node2:/etc/

一、安裝keepalived,實(shí)現(xiàn)高可用

在主節(jié)點(diǎn)上:

1、安裝keepalived

# tar xf keepalived-1.2.1.tar.gz

# cd keepalived-1.2.1

# ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.11.1.el6.i686/

# make && make install

注意:

可能需要安裝此包:

# yum install popt-devel

發(fā)現(xiàn)/usr/src/kernels/為空,需要安裝內(nèi)核源碼

# yum install kernel-devel

2、配置keepalived

1)設(shè)置一個(gè)變量

# DIR=/usr/local/

2)執(zhí)行如下語句,將keepalived的配置文件放置在/etc下相關(guān)目錄中

# cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/

# cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p 

             /etc/keepalived

# cp $DIR/sbin/keepalived /usr/sbin/

3)為keepalived提供配置文件

# cd /etc/keepalived/

# vim keepalived.conf(添加以下內(nèi)容)

! Configuration File for keepalived

global_defs {

  notification_email {

 2663154088@qq.com

  }

  notification_email_from wgkgood@139.com

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

# VIP1

vrrp_instance VI_1 {

state MASTER

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 151

priority 100

advert_int 5

  #非搶占 nopreempt

authentication {

auth_type PASS

auth_pass 2222

}

virtual_ipaddress {

202.207.178.4

}

}

virtual_server 202.207.178.4 3306 {

delay_loop 6

lb_algo wrr

lb_kind DR

persistence_timeout 60

protocol TCP

real_server 202.207.178.6 3306 {

weight 100

notify_down /data/sh/mysql.sh

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

4)啟動(dòng)服務(wù)

# /etc/init.d/keepalived restart

# ps -ef | grep keepalived

此時(shí)發(fā)現(xiàn)服務(wù)已經(jīng)啟動(dòng)!

# tail -fn 100 /var/log/messages

此時(shí)發(fā)下一直滾屏,是缺少一個(gè)模塊,下面加載此模塊

# modprobe ip_vs

# /etc/init.d/keepalived restart

# tail -fn 100 /var/log/messages

此時(shí)一切正常

在從節(jié)點(diǎn)上:

配置同主節(jié)點(diǎn),只是在配置文件中修改以下幾項(xiàng)即可:

state BACKUP

priority 90

real_server 202.207.178.7 3306

二、配置相關(guān)操作,并測試

1、在主從節(jié)點(diǎn)上分別添加如下兩個(gè)文件并授權(quán),實(shí)現(xiàn)在一方的數(shù)據(jù)庫down機(jī)時(shí)停止keepalived,主從角色實(shí)現(xiàn)切換

# vim /data/sh/mysql.sh

/etc/init.d/keepalived stop

# chmod +x /data/sh/nginx.sh

2、在主從節(jié)點(diǎn)上分別對數(shù)據(jù)庫授權(quán)

mysql>grant all on fsy.* to root@'202.207.178.%' identified by '123456';

3、此時(shí)就可以開始測試了

1)再啟動(dòng)一臺(tái)虛擬機(jī),用此虛擬機(jī)連接數(shù)據(jù)庫

# mysql -uroot -h302.207.178.4 -p

2)在主節(jié)點(diǎn)停止mysql數(shù)據(jù)庫,此時(shí)會(huì)發(fā)現(xiàn)測試節(jié)點(diǎn)的數(shù)據(jù)庫依然連接正常!

到此為止,已經(jīng)使用keepalived實(shí)現(xiàn)了mysql高可用!


                              歡迎批評(píng)指正!


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI