Mysql+keepalived主主切換

Mysql+keepalived主切換

一,環境介紹

網絡結構:

VIP :192.168.1.30

MYSQL A:192.168.1.21

MYSQL B:192.168.1.22

mysql同步

要實現mysql+keepalived切換,首先要實現的就是兩臺mysql服務器的主同步,查http://smalldeng.blog.51cto.com/1038075/1151900

三,配置keepalived

1,安裝yum -y install keepalived

master A配置文件

[root@master ~]# cat /etc/keepalived/keepalived.conf

#! Configuration File for keepalived

global_defs {

router_id mysql-cluster #修改爲自己的主機名

}

##################第一部分###################

vrrp_instance VI_1 {

state BACKUP #都修改成BACKUP

interface eth0

virtual_router_id 60 #默認51 主從都修改爲60

priority 100 #優先級(1-254之間),另一臺改爲90備用節點必須比主節點優先級低。

advert_int 1

nopreempt #不搶佔資源,意思就是它活了之後也不會再把主搶回來

authentication {

#設置驗證信息,兩個節點必須一致

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.30

}

}

##################第二部分###################

virtual_server 192.168.1.30 3306 {

delay_loop 6

lb_algo wrr #LVS算法

lb_kind DR#LVS模式

nat_mask 255.255.255.0

persistence_timeout 50 #會話保持時間

protocol TCP

real_server 192.168.1.21 3306 {

weight 1

notify_down /root/mysql.sh #檢測到服務down後執行的腳本

TCP_CHECK {

connect_timeout 10 #連接超時時間

nb_get_retry 3#重連次數

connect_port 3306#健康檢查端口

}

}

}

master B配置文件,去掉nopreempt,設置優先級,真實IP

[root@slave1 ~]# cat /etc/keepalived/keepalived.conf

#! Configuration File for keepalived

global_defs {

router_id mysql-cluster #修改爲自己的主機名

}

##################第一部分###################

vrrp_instance VI_1 {

state BACKUP #都修改成BACKUP

interface eth0

virtual_router_id 60 #默認51 主從都修改爲60

priority 80 #mysql-ha1LVS上修改成100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.30

}

}

##################第二部分###################

virtual_server 192.168.1.30 3306 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 192.168.1.22 3306 {

weight 1

notify_down /root/mysql.sh

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

connect_port 3306

}

}

}

3,建立mysql.sh腳本

vim /root/mysql.sh

#/bin/bash

pkill keepalived

#chmod +x /root/mysql.sh

4,需要安裝ipvsadm與設置arp協議的響應,在兩臺機器都操作

# vim /etc/sysctl.conf 在最後添加,也可以直接修改cat /proc/sys/net/ipv4/conf/eth0/

############arp##############

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

#sysctl -p

四,查看虛擬ip在哪,哪臺優先級高,虛擬IP就會在哪

[root@master ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:af:00:a6 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.21/24 brd 192.168.1.255 scope global eth0

inet 192.168.1.30/32 scope global eth0

inet6 fe80::20c:29ff:feaf:a6/64 scope link

valid_lft forever preferred_lft forever

[root@slave1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:3d:8b:c7 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.22/24 brd 192.168.1.255 scope global eth0

inet6 fe80::20c:29ff:fe3d:8bc7/64 scope link

valid_lft forever preferred_lft forever

五,驗證:通過window遠程連接虛擬IP,在兩臺mysql上都需要存儲相同的一個用戶和密碼用於遠程連接,如果能連接表示成功,將master A上的mysql停止,測試是否還能連接。中間如果有錯誤可以查看/var/log/message日誌。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章