日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux消息类型,heartbeat消息类型

發(fā)布時間:2023/12/19 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux消息类型,heartbeat消息类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

heartbeat消息類型:

心跳消息為約150字節(jié)的數(shù)據(jù)包,可為單薄,廣播,多播的方式,控制心跳頻率及出現(xiàn)故障要等待多久進行故障切換

集群轉換消息

ip-request和ip-request-resp

當主服務器恢復在線狀態(tài)時,通過ip-request消息要求備機釋放主服務器失敗時備服務器取得的資源,然后備份服務器關閉服務釋放主服務器失敗時取得的資源及服務

備服務器釋放主服務器失敗時取得的資源及服務后,就會通過ip-request-resp消息通知主服務器它不在擁有該資源及服務,主服務器收到來自備節(jié)點的ip-request-resp消息通知后,啟動失敗時釋放的資源及服務,并開始提供正常的訪問服務!

重傳請求

rexmit-request控制重傳心跳請求!

以上的心跳控制消息使用UDP協(xié)議發(fā)送到/etc/ha.d/ha.cf文件制定的任意端口,或制定的多播地址,如果使用默認為694

心跳消息的查看:借鑒http://blog.chinaunix.net/uid-7921481-id-1617030.html

heartbeat中,可以使用命令cl_status來查詢集群心跳的相關信息。

顯示節(jié)點server-1所使用的心跳:

[root@server-1 bin]# ./cl_status listhblinks server-1

eth1

eth0

顯示節(jié)點server-1的eth0心跳狀態(tài):

[root@server-1 bin]# ./cl_status hblinkstatus server-1 eth0

up

為了在mgmt下可以檢查心跳狀態(tài),在mgmt/daemon/mgmt_hb.c中添加如下函數(shù):

char*

on_status_of_hblinks(char* argv[], int argc)

{

const char * intf;

const char * if_status;

const char* name = NULL;

char* ret = cl_strdup(MSG_OK);

if (hb->llc_ops->init_nodewalk(hb) != HA_OK) {

mgmt_log(LOG_ERR, "Cannot start node walk");

mgmt_log(LOG_ERR, "REASON: %s", hb->llc_ops->errmsg(hb));

cl_free(ret);

return cl_strdup(MSG_FAIL);

}

while((name = hb->llc_ops->nextnode(hb))!= NULL) {

if (strcmp(hb->llc_ops->node_type(hb,name), "ping") == 0)

continue;

if (strcmp(get_localnodeinfo(), name) == 0)

continue;

if (hb->llc_ops->init_ifwalk(hb, name) != HA_OK) {

cl_log(LOG_ERR, "Cannot start heartbeat

link interface walk.");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot start

heartbeat link interface walk");

}

while ((intf = hb->llc_ops->nextif(hb))) {

if_status = hb->llc_ops->if_status(hb, name, intf);

if (if_status == NULL) { /* Should be error ? */

cl_log(LOG_ERR, "Cannot get heartbeat

link status");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot get

heartbeat link status");

}

if ( STRNCMP_CONST(if_status, "dead") == 0 ) {

return cl_strdup(MSG_OK"\nhas_dead");

}

}

if (hb->llc_ops->end_ifwalk(hb) != HA_OK) {

cl_log(LOG_ERR, "Cannot end heartbeat

link interface walk");

cl_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

return cl_strdup(MSG_FAIL"\nCannot end

heartbeat link interface walk");

}

}

if (hb->llc_ops->end_nodewalk(hb) != HA_OK) {

mgmt_log(LOG_ERR, "Cannot end node walk");

mgmt_log(LOG_ERR, "REASON: %s",

hb->llc_ops->errmsg(hb));

cl_free(ret);

return cl_strdup(MSG_FAIL);

}

return cl_strdup(MSG_OK"\ngood");

}

之后即可在mgmt中使用status_hblinks命令即可查詢心跳的狀態(tài),如:

[root@server-1 heartbeat-gui]# ./mgmtcmd.py status_hblinks

---------------------------

ok

has_dead

除非另有說明,否則本站上的內(nèi)容根據(jù)以下許可進行許可: CC署名-非商業(yè)性使用-相同方式共享4.0國際許可協(xié)議4.0進行許可

本文作者:www.linuxea.com for Mark

文章鏈接:http://www.linuxea.com/942.html (轉載請注明本文出處和本章鏈接)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的linux消息类型,heartbeat消息类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。