2019年4月15日星期一

簡單的KeepaliveD設置

因此,keepalived已經存在了很長一段時間......但是對許多人來說這仍然是一個謎。
所以這是一個非常簡單的例子,說明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     |
+ ------------ +