1. 程式人生 > >【Consul】Consul實踐指導-Agent

【Consul】Consul實踐指導-Agent

       ConsulAgent是Consul的核心程序,Agent的工作是維護成員關係資訊、註冊服務、健康檢查、響應查詢等等。Consul叢集的每一個節點都必須執行agent程序。

Agent有兩種模式:client或server。

Server要參與consensus quorum,當遇到故障情況時,這些節點通過Raft提供強一致性和強有效性,在Server節點上的較高負載意味著它們應該執行在專屬的例項——它們比客戶端節點更為資源密集型。在整個叢集中,絕大部分都為Client節點。

client把所有的RPCs轉發到server端,是相對無狀態的。唯一在後臺執行的時client端執行了LAN gossip pool,只消耗極少的資源和網路頻寬。

1.1.1 Agent執行

Agent通過執行“consul agent”啟動。這個命令是阻塞的,除非主動終止。Agent命令需要很多配置引數,但大多數都有預設值。

$ consul agent -data-dir=/tmp/consul
==> Starting Consul agent...
==> Starting Consul agent RPC...
==> Consul agent running!
       Node name: 'Armons-MacBook-Air'
      Datacenter: 'dc1'
          Server: false (bootstrap: false)
     Client Addr: 127.0.0.1 (HTTP: 8500, DNS: 8600, RPC: 8400)
    Cluster Addr: 192.168.1.43 (LAN: 8301, WAN: 8302)
           Atlas: (Infrastructure: 'hashicorp/test' Join: true)
 
==> Log data will now stream in as it occurs:
 
    [INFO] serf: EventMemberJoin: Armons-MacBook-Air.local 192.168.1.43
...

這段日誌中包含比較多的重要資訊:

Node name:

表示節點在叢集中的名字,在叢集中是唯一的。通常設定為hostname。可以通過引數-node設定。

Datacenter

資料中心的名字

Server:

Agent執行模式,True為Server模式,False為client模式

Client Addr

Agent的使用者介面(包括http,DNS,RPC)。

Cluster Addr:

用於cluster各agent間通訊,並不是所有consul都使用相同的埠,但是這個addr必須與其他節點可通訊的。

Altas

後續詳聊。

其他引數參見:http://blog.csdn.net/younger_china/article/details/52243738

1.1.2 停止Agent

Agent有兩種停止方式:gracefully或forcefully。

若要gracefully停止agent,傳送中斷訊號到agent程序(通常為Ctrl+C或執行命令kill -INT consul_pid)。當gracefully退出時,agent會首先通知叢集要離開叢集。這種方式的退出使得叢集中其他節點通知叢集該節點“left”。

或者,也可以通過傳送一個KILL訊號來強制殺死Agent。當強制kill時,agent會立即結束。叢集的其餘節點最終(通常在幾秒鐘內)會檢測到節點已經死亡並通知cluster該節點failed。

Server節點以gracefully方式離開時尤為重要,使得對叢集的影響減小到很低。

對於client Agent,節點failed或者leave產生的差異可能沒有那麼重要。比如,在 Web伺服器和負載平衡場景下,都導致了同樣的結果:網路節點回被從負載平衡器集中刪除。

1.1.3 生命週期

Cousul叢集中每個agent都會經歷一個生命週期。瞭解它的生命週期,對於建立agent互動智慧模型和如何處理節點是非常有用的。

當agent第一次啟動時,它是不知道Cluster中的其他節點的。要發現其他節點,必須加入叢集。可通過join命令或通過提供正確的配置來自動加入。一旦節點加入,加入資訊會通過gossip傳達到整個cluster的所有節點,也就是,所有的節點都會意識到新節點的存在。如果是Server Agent,已經存在的server會將成員資訊複製到新節點。

在網路故障情況下,一些節點可能無法訪問其他節點。在這種情況下,不可達節點標記為失敗。區分網路故障和Agent崩潰幾乎是不可能的,所以這兩種情況下都是相同的。一旦一個節點被標記為失敗,此資訊將在servicecatalog中更新。注:這裡有一些差別,因為如果Servers可以形成一個Cluster,仍然會恢復到正常狀態。一旦網路恢復或Agent重新啟動,Cluster將自我修復並取消失敗標記。而catalog中的健康檢查也將被更新以反映新的狀態。

當一個節點離開時,cluster設定ft標識表示節點已經離開。與failed場景不同,該節點所有的註冊服務會立即被登出。如果Agent是server模式,複製會馬上終止。

為了防止死節點的積累(故障或離開狀態的節點),Agent將自動刪除catalog中的死節點。這個過程被稱為收割(reaping)。目前預設配置的時間間隔為72小時(不建議更改reaping間隔,可能導致叢集中斷)。reaping類似與離開,使所有相關的服務將會被登出。

1.1.4 參考文獻

https://www.consul.io/docs/agent/basics.html

相關推薦

ConsulConsul實踐指導-Agent

       ConsulAgent是Consul的核心程序,Agent的工作是維護成員關係資訊、註冊服務、健康檢查、響應查詢等等。Consul叢集的每一個節點都必須執行agent程序。 Agent有

ConsulConsul實踐指導-Watch機制

        Watches是檢視指定資料資訊的一種方法,比如檢視nodes列表、鍵值對、健康檢查。當監控到更新時,可以呼叫外部處理程式——可以自定義。比如,發現健康狀態發生變化可以通知外部系統健康異常。         Watches在呼叫http api介面使用阻塞佇

ConsulConsul實踐指導-健康檢查(Checks)

        Consul的一個基本功能是提供系統級和應用級健康檢查。如果健康檢查與某個服務關聯,則稱為是應用級的;如果不予服務關聯,則監控整個節點的健康。 check定義在配置檔案中,或執行時通過HTTP介面新增。Check是通過HTTP與節點保持一致。 有五種che

ConsulConsul實踐指導-服務註冊(Service)

        服務發現是consul的另一主要功能。Consul Agent提供簡單的Service定義格式用於申報服務的可用性,並與健康檢查相關聯。如果健康檢查與服務關聯,則認為服務是應用級的。服務可以定義在配置檔案中或在執行時通過HTTP介面新增。  1.1.1  S

Consul負載均衡策略

Consul是一個免費的開源工具, 它提供服務發現、健康檢查、負載均衡和全域性分佈的鍵值儲存。此外, 它還提供了一組用於構建業務流程工作流和工具的基礎元素。在微服務體系結構中, 應用程式通常跨越多個IP地址執行, 並繫結到各種埠。服務發現有助於查詢這些不同的服務, 而不管它們位於何處。 由於同一個服務的多個例

Consul 1.4:多資料中心服務網路

NOV 14 2018 THE CONSUL TEAM 我們很高興地宣佈HashiCorp Consul1.4 將將可廣泛使用。Consul 是一個分散式服務網格, 可用於在任何執行平臺以及公共或私有云之間的連線、安全和配置服務。此版本引入了一個完全重新設計的 ACL系統和第一個具有多資料中心支援的企業級Co

SpringCloudconsul註冊中心註冊的服務為內網(區域網)IP

## 一、前因 最近在做公司的一個微服務專案,技術架構為spring cloud + consul + SSM。 當我寫完一個功能要在本地測試時,發現**服務執行成功,但是前後端聯調報500錯誤。** 當時的第一個想法就是gateway服務的問題,但是其他同事卻說gateway服務沒毛病。 最後想到可

zabbix安裝、配置agent,配置被監控端

前言 redhat 7.0 (檢視redhat版本: cat /etc/redhat-release) zabbix 3.4 zabbix server已安裝完成(yum方式安裝zabbix) 現需要向zabbix中增加一臺被監控端(被監控伺服器/主機)

casbinRBAC實踐

Features What Casbin does: 1.enforce the policy in the classic {subject, object, action} form or a cu

轉載HBase實踐 | 使用Spark分析雲HBase的資料

雲HBase具有很好的線上入庫和查詢能力,不過在分析上面有比較大的欠缺,這篇文章主要介紹如何使用Spark對雲HBase中資料做複雜分析。 1 雲HBase查詢分析的現狀 HBase原生API:HBase原生API適合基於row key做點查,這個是HBase最擅長的查詢場景 Phoeni

MVC.Net實踐(一)—建立mvc框架的專案和實體模型

一、 建立MVC框架的專案 (1)像新增平常專案一樣新增一個web應用程式,檔案—>新建—>專案 (3)接著選擇MVC (4)這樣就建好一個MVC框架的專案了 二、連線資料庫 建立

MVC.NET實踐(三)—對資料庫的資料進行刪除與修改

在主介面新增修改和刪除的超連結(Index.cshtml) <table id="tbList"> <tr> <th>id&l

MVC.NET實踐(四)—新增資料到資料庫

1、在主介面Index.cshtml新增“新增”的連結 <tr> <td colspan="4"> @Html.ActionLink("新增",

Kubernetes最佳實踐3:服務部署與彈性伸縮

作者:彭靖田 在Kubernetes的世界中,一切服務都是跑在容器中的,最簡單的容器組是Pod。基於現實世界中的具體任務,Kubernetes抽象了更高階的容器組,如:ReplicaSet、Deployment、Job等。對於Web型別的長週期服務來說,重點考察兩個需求:

最佳實踐 —— 詳細談談如何減小APK體積

本篇文章轉載自http://www.cnblogs.com/soaringEveryday/p/5254520.html 作者寫的很詳細 格式略有調整 以下正文 隨著Android移動開發的需求越來越複雜,我們不可避免的遇到釋出出去的apk體積越來越

自考自考實踐課及論文

自考實踐課及論文    這次報考了自考的實踐課和論文,但是對於流程和學習內容一知半解,先把我知道的資訊分享給大家啦~ 一、流程    流程在《自考實踐+畢業答辯》文件中寫的很詳細:報名→準備實踐課(給老師發郵件,完成實踐課作業並上交)→中期見面→寫論文

QuatzQuatz實踐

前言 定時任務是經常遇到的,主要有單機定時和分散式定時。今天簡單總結一下寫的幾個小例子。之後再總結quatz的原理,原始碼,其他的定時排程器等。 核心元件 scheduler排程器 job 任務 trigger 觸發器 使用單純的quat

基於Consul的數據庫高可用架構

main mas sentinel rec handle mat nload hand unless 幾個月沒有更新博客了,已經長草了,特意來除草。本次主要分享如何利用consul來實現redis以及mysql的高可用。以前的公司mysql是單機單實例,高可用MHA加vip

保護 Consul 在特定設定中免受 RCE 風險的影響

2018年11月27日 Consul 團隊 介紹 我們最近注意到了一組惡意軟體,它們主要針對具有允許遠端執行程式碼這一特定配置的 Consul nodes 。 我們的社群成員也 (負責任地) 報告了此惡意軟體造成的事件, 並與我們合作, 在最近版本的 Consul 中添加了一個補丁, 以保護

LogicMonitor 使用 Terraform, Packer & Consul為災難恢復環境

2018年4月05日 RANDALL THOMSON 以下是 LogicMonitor 的資深技術操作工程師蘭德爾. 湯姆森的部落格。你會發現如果他沒有夢想著下一次滑雪探險,那他一定忙於敲擊鍵盤以保持 LogicMonitor SaaS 平臺處於最佳狀態。 構建我們的高可用性平臺 Log