serf初體驗

serf是出自Hashicorp的開源項目买雾, 實現(xiàn)了去中心化的gossip(八卦)協(xié)議掷酗,其中g(shù)ossip協(xié)議定義了一種類似病毒感染的消息傳播過程虽界。 一些著名的開源項目,如Docker和Consul鸿捧,網(wǎng)絡(luò)管理和服務(wù)發(fā)現(xiàn)的核心組件是基于serf實現(xiàn)的屹篓。

serf提供了一種輕量級的方式來管理去中心化集群,并基于這個集群提供了UserEvent和Query等接口匙奴,處理一些用戶層的事件堆巧,如服務(wù)發(fā)現(xiàn)、自動化部署等。

開始serf初體驗旅程:

一恳邀、在不同的terminal上啟動serf agent節(jié)點
serf agent -node=node1 -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7473
serf agent -node=node2 -bind=127.0.0.1:5002 -rpc-addr=127.0.0.1:7474
serf agent -node=node3 -bind=127.0.0.1:5003 -rpc-addr=127.0.0.1:7475

agent啟動時需要指定兩個address懦冰,bind address和rpc address灶轰,分別提供集群間的通信接口和客戶端操作集群的接口谣沸,serf默認采用UDP來廣播gossip消息,因此在實際網(wǎng)絡(luò)中部署時笋颤,需要為Bind Address配置相應(yīng)的防火墻規(guī)則乳附。

重點:

  • bind address: 集群間通信的接口;
  • rpc address: 客戶端控制agent的接口伴澄。
二赋除、節(jié)點之間建立連接,形成去中性化集群非凌。
  • node2 join node1
  • node1 join node3
  • serf join node2-rpc-addr node1-bind-addr
  • serf join node1-rpc-addr node3-bind-addr
serf join -rpc-addr=127.0.0.1:7474 127.0.0.1:5001
serf join -rpc-addr=127.0.0.1:7473 127.0.0.1:5003
三举农、UserEvent和Query

UserEvent和Query是serf基于去中心化集群提供的高效消息封裝。UserEvent是一些單向的不需要集群反饋的消息敞嗡,而Query是雙向的颁糟,需要集群給出反饋(QueryResponse)的消息。向集群發(fā)送消息可以針對任意節(jié)點進行喉悴,然后節(jié)點間可以互相傳播這些消息棱貌。

Node Tag Event Handler Query Handler
node1 role=apiserver echo node1 >> node1.log echo hello,node1
node2 role=ui echo node2 >> node2.log echo hello,node2
node3 role=apiserver echo node3 >> node3.log echo hello,node3
為node1,2,3指定不同的Event Handler,并建立節(jié)點之間的連接形成集群(node連接參考上述命令)

其中user是UserEvent的name箕肃;greet是Query的name荷鼠。

serf agent -node=node1 -bind=127.0.0.1:5001 -rpc-addr=127.0.0.1:7473 -event-handler=user:log='echo node1 >> node1.log' -event-handler=query:greet='echo hello,node1' -tag role=apiserver

serf agent -node=node2 -bind=127.0.0.1:5002 -rpc-addr=127.0.0.1:7474 -event-handler=user:log='echo node2 >> node2.log' -event-handler=query:greet='echo hello,node2' -tag role=ui

serf agent -node=node3 -bind=127.0.0.1:5003 -rpc-addr=127.0.0.1:7475 -event-handler=user:log='echo node3 >> node3.log' -event-handler=query:greet='echo hello,node3' -tag role=apiserver

以node3為例苦囱,結(jié)果如下圖:


serf.png
發(fā)送一個log Event,所有節(jié)點都會處理該Event,向?qū)?yīng)的日志文件中寫入一段文本

serf event (-rpc-addr=*) (UserEvent-name) payload

serf event -rpc-addr=127.0.0.1:7473 log payload
向role=ui的節(jié)點發(fā)送一個Query昨寞,agent處理完消息之后將結(jié)果傳回客戶端

serf event (-rpc-addr=*) (----) (Query-name) payload

serf query -rpc-addr=127.0.0.1:7473 -tag role=ui greet payload

為了保證一般性,這里選擇向集群中的node1發(fā)送該Query公黑,但通過-tag設(shè)置Query實際的處理節(jié)點是node2拣凹,最終可見返回的結(jié)果和日志中只有node2處理了該信息。說明節(jié)點之間是可以相互通信的督函。若不帶tag參數(shù)嘀粱,這里所有的節(jié)點都將執(zhí)行g(shù)reet,并對query進行信息返回辰狡。

結(jié)果如下圖所示:


greet.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锋叨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宛篇,更是在濱河造成了極大的恐慌娃磺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叫倍,死亡現(xiàn)場離奇詭異偷卧,居然都是意外死亡豺瘤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門听诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坐求,“玉大人,你說我怎么就攤上這事晌梨∏培停” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵仔蝌,是天一觀的道長泛领。 經(jīng)常有香客問我,道長敛惊,這世上最難降的妖魔是什么渊鞋? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮瞧挤,結(jié)果婚禮上锡宋,老公的妹妹穿的比我還像新娘。我一直安慰自己皿伺,他們只是感情好员辩,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸵鸥,像睡著了一般奠滑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妒穴,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天宋税,我揣著相機與錄音,去河邊找鬼讼油。 笑死杰赛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矮台。 我是一名探鬼主播乏屯,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘦赫!你這毒婦竟也來了辰晕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤确虱,失蹤者是張志新(化名)和其女友劉穎含友,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡窘问,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年辆童,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惠赫。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡把鉴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汉形,到底是詐尸還是另有隱情纸镊,我是刑警寧澤倍阐,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布概疆,位于F島的核電站,受9級特大地震影響峰搪,放射性物質(zhì)發(fā)生泄漏岔冀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一概耻、第九天 我趴在偏房一處隱蔽的房頂上張望使套。 院中可真熱鬧,春花似錦鞠柄、人聲如沸侦高。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奉呛。三九已至,卻和暖如春夯尽,著一層夾襖步出監(jiān)牢的瞬間瞧壮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工匙握, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咆槽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓圈纺,卻偏偏與公主長得像秦忿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蛾娶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容