因此,keepalived已經存在了很長一段時間......但是對許多人來說這仍然是一個謎。
所以這是一個非常簡單的例子,說明keepalived如何與MySQL一起工作。 希望這可以幫助那些有疑問的人。
我們將有一個簡單的主設備到奴隸設置。 意思是..我們寫一個,除非我們故障轉移到第二個事件。
1 - 安裝keepalived
所以我們有2個主機
所以這是一個非常簡單的例子,說明keepalived如何與MySQL一起工作。 希望這可以幫助那些有疑問的人。
我們將有一個簡單的主設備到奴隸設置。 意思是..我們寫一個,除非我們故障轉移到第二個事件。
1 - 安裝keepalived
#yum搜索keepalived
keepalived .x86_64:負載均衡器和高可用性服務
僅限名稱和摘要匹配,對所有內容使用“全部搜索”。
#yum -y install keepalived
你現在應該有一個配置文件
#ls -ltr /etc/keepalived/keepalived.conf
保留原件,因為你總是備份..右....
#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.orig
因此,您需要找出可用於虛擬IP的ipaddress。 我為這個例子選擇了192.168.0.123。
接下來,我們將設置一個腳本用於我們的新配置文件。
我在這裡做的一些事情......
我在/ etc / keepalived中留下了一個.cnf文件,用於keepalived和一個日誌。
這使得示例變得簡單,因此您可以執行此操作或使用您自己的cnf文件。
一個腳本:
cat /etc/keepalived/keepalived_check.sh
#!/斌/慶典
#monitor mysql status
#如果這個節點mysql死了
#並且它的奴隸還活著,然後停止它的keepalived。 另一個節點將綁定IP。
export MYSQL_HOME = / etc / keepalived /
export PATH = $ MYSQL_HOME / bin:$ PATH
的MySQL =“/ USR / bin中/ MySQL的”
中mysqladmin =“的/ usr /斌/中mysqladmin”
delay_file =“$ MYSQL_HOME / slave_delay_second.log”
slave_host = $ 1
ALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.localhost.cnf ping | grep alive | wc -l);
REMOTEALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.remotehost.cnf ping | grep alive | wc -l);
如果[[$ ALIVE -ne 1]]
然後
#echo“MySQL已關閉”
如果[[$ REMOTEALIVE -eq 1]]
然後
# 迴聲“關機保持活力”
systemctl停止keepalived
# echo“keepalived stop”
科幻
#其他
#echo“MySQL正在上升”
#日期
科幻
退出0 #all done
新的配置文件
cat /etc/keepalived/keepalived.conf
global_defs {
notification_email {
anothermysqldba@gmail.com
}
notification_email_from anothermysqldba@gmail.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_script check_mysql {
腳本“/etc/keepalived/keepalived_check.sh”
間隔2
重量2
}
vrrp_instance VI_1 {
國家MASTER
接口enp0s8 #<---什麼界面名稱包含您的真實IP / sbin / ifconfig
#在ip link show中找到
virtual_router_id 51
優先級101
advert_int 1
nopreempt不同 #僅在較高優先級節點上需要
認證{
auth_type PASS
auth_pass 1111
}
track_script {
check_mysql
}
virtual_ipaddress {
192.168.0.123
}
}
這一切都很棒但是有效嗎......
所以我們有2個主機
[root @ centosa keepalived] #hostname
centosa
[root @ centosb keepalived] #hostname
centosb
啟動keepalived
[root @ centosa keepalived] #systemctl status keepalived
●keepalived.service - LVS和VRRP高可用性監視器
已加載:已加載(/usr/lib/systemd/system/keepalived.service;已禁用;供應商預設:已禁用)
活動:不活動(死機)
[root @ centosa keepalived] #systemctl restart keepalived
[root @ centosa keepalived] #systemctl status keepalived
● keepalived.service - LVS和VRRP高可用性監視器
已加載:已加載(/usr/lib/systemd/system/keepalived.service;已禁用;供應商預設:已禁用)
活動: 活動(運行)
[root @ centosa keepalived] #ssh 192.168.0.123'hostname'
root@192.168.0.123的密碼:
centosa
證明連接工作已經完成
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.101 -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.102 -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa |
+ ------------ +
仔細檢查它是否正在運行......
[root @ centosa keepalived] #systemctl status keepalived | grep活躍
活動: 活躍
[root @ centosb keepalived] #systemctl status keepalived | grep活躍
活動: 活躍
測試當前VIP ..停止mysql並觀看相同的VIP更改主機...
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123 -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa |
+ ------------ +
[root @ centosa keepalived] #systemctl stop mysqld
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123 -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +