成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊基于Consul建設(shè)公共注冊中心

開發(fā) 開發(fā)工具
本文從consul提供的ACL訪問控制策略角度出發(fā),詳細(xì)介紹通過在應(yīng)用層使用標(biāo)簽前綴的方式,分配訪問控制權(quán)限,實(shí)現(xiàn)基于標(biāo)簽隔離的社區(qū)版consul多租戶隔離,從而作為公共注冊中心。

Consul作為一款分布式、高可用的服務(wù)發(fā)現(xiàn)和配置的工具,提供了豐富的組件功能,被廣泛應(yīng)用于微服務(wù)架構(gòu)中作為服務(wù)注冊與配置中心。

本文從consul提供的ACL訪問控制策略角度出發(fā),詳細(xì)介紹通過在應(yīng)用層使用標(biāo)簽前綴的方式,分配訪問控制權(quán)限,實(shí)現(xiàn)基于標(biāo)簽隔離的社區(qū)版consul多租戶隔離,從而作為公共注冊中心。

一、Consul產(chǎn)品介紹

Consul作為一款開源的組件工具,其使用GO語言開發(fā),實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置,主要提供分布式服務(wù)注冊和發(fā)現(xiàn)、健康檢查、Key/Value數(shù)據(jù)存儲、多數(shù)據(jù)中心的高可用性等能力。

【服務(wù)注冊與發(fā)現(xiàn)】

consul client(客戶端)使用HTTP或DNS的方式將服務(wù)注冊到consul server(服務(wù)端)注冊中心中。服務(wù)請求方通過consul server發(fā)現(xiàn)他所依賴的服務(wù)。

【健康檢查】

consul client提供對應(yīng)用程序健康檢查機(jī)制,并將健康檢查狀態(tài)上報(bào)給consul server集群,用來監(jiān)控集群節(jié)點(diǎn)的運(yùn)行狀況,并及時(shí)下線不健康的節(jié)點(diǎn)。

【Key/Value數(shù)據(jù)存儲】

Consul提供K/V的存儲功能,應(yīng)用程序可以根據(jù)需要使用consul層級的Key/Value存儲,比如用來保存動(dòng)態(tài)配置,協(xié)調(diào)服務(wù)等等。

【多數(shù)據(jù)中心】

Consul支持多個(gè)數(shù)據(jù)中心,滿足用戶的多中心部署模式和災(zāi)備需求。

二、Consul基本架構(gòu)

Consul是一個(gè)分布式,高可用的系統(tǒng),在consul集群中的每個(gè)節(jié)點(diǎn)都運(yùn)行一個(gè)agent,agent可以以客戶端(client)模式或服務(wù)端(server)模式運(yùn)行。

圖1 Consul基本架構(gòu)圖

【數(shù)據(jù)中心(DataCenter)】

在consul數(shù)據(jù)中心中,集群中節(jié)點(diǎn)分為server節(jié)點(diǎn)和client節(jié)點(diǎn),為了保證可用性和高性能,通常一個(gè)數(shù)據(jù)中心內(nèi)為3-5個(gè)服務(wù)器。

【客戶端模式(Client)】

客戶端節(jié)點(diǎn)一般和應(yīng)用部署在一起,負(fù)責(zé)注冊服務(wù)、運(yùn)行健康檢查并將相關(guān)RPC轉(zhuǎn)發(fā)給服務(wù)器。在微服務(wù)應(yīng)用中,本地應(yīng)用只訪問client,由client和server進(jìn)行通訊,實(shí)現(xiàn)集群的服務(wù)發(fā)現(xiàn)。

【服務(wù)器模式(Server)】

服務(wù)端節(jié)點(diǎn)維護(hù)consul集群的狀態(tài)信息,并進(jìn)行持久化,server節(jié)點(diǎn)存儲公共信息,包括服務(wù)信息,K/V數(shù)據(jù)等。consul集群中的Server節(jié)點(diǎn)參與選舉,響應(yīng)RPC查詢,轉(zhuǎn)發(fā)信息給Leader(領(lǐng)導(dǎo)者),Leader除了包含server的功能外,還負(fù)責(zé)同步數(shù)據(jù)到各個(gè)server,每一個(gè)集群中只能有一個(gè)Leader,保證集群內(nèi)數(shù)據(jù)一致。

三、Consul多租戶隔離

在使用consul作為注冊及配置中心的過程中,多個(gè)微服務(wù)架構(gòu)系統(tǒng)需要每個(gè)系統(tǒng)分別部署一套consul集群,運(yùn)維成本高且存在資源浪費(fèi),于是將consul服務(wù)作為PaaS能力提供,租戶制使用便成為一種美好愿望。

社區(qū)版本不支持namespace隔離特性,多個(gè)系統(tǒng)共用一個(gè)注冊和配置中心,需要防止出現(xiàn)寫時(shí)配置相互覆蓋,讀時(shí)信息泄露等問題。因此,各系統(tǒng)在進(jìn)行服務(wù)發(fā)現(xiàn)獲取服務(wù)列表和配置信息修改等操作時(shí),只能對本系統(tǒng)進(jìn)行訪問和操作,不能對其他系統(tǒng)的服務(wù)進(jìn)行訪問。

Consul在應(yīng)用層唯一的鑒權(quán)能力是ACL機(jī)制,能否借此可以實(shí)現(xiàn)多租戶訪問權(quán)限的控制目的?

1.ACL機(jī)制

Consuls支持AccessControlList(ACL-即訪問控制列表),用于保護(hù)對UI、API、CLI、服務(wù)和代理通信的訪問。通過開啟consul集群ACL機(jī)制,對consul執(zhí)行任何的操作,需要得到對應(yīng)的令牌,即ACLToken,以此來實(shí)現(xiàn)對consul集群agent、服務(wù)注冊和發(fā)現(xiàn)、K/V數(shù)據(jù)的訪問權(quán)限控制。

ACL的核心是以token作為身份認(rèn)證,將一系列規(guī)則(rule)組成策略(policy),然后將一個(gè)或多個(gè)策略與令牌token進(jìn)行相關(guān)聯(lián)。在應(yīng)用請求時(shí),在其HTTP頭中添加X-Consul-Token為分配的token,應(yīng)用的服務(wù)注冊、發(fā)現(xiàn)和配置更新等操作,server會(huì)根據(jù)token策略權(quán)限返回相應(yīng)的服務(wù)內(nèi)容以及校驗(yàn)是否有對應(yīng)的配置資源讀寫權(quán)限。

圖2 ACL機(jī)制運(yùn)行核心

配置步驟:

(1)首先在consulserver集群的啟動(dòng)參數(shù)中添加配置,開啟集群對ACL的校驗(yàn)。

{

...

acl= {

enabled= true,

default_policy= "deny",

enable_token_persistence= true }

}

(2)然后再創(chuàng)建policy,每個(gè)policy是由多個(gè)rule組成。policy格式為:

#rule:節(jié)點(diǎn)前綴為空,代表所有的節(jié)點(diǎn)都使用策略;

node_prefix""{

policy=’write/read/deny’

}

#rule:服務(wù)前綴為空,代表所有的服務(wù)都使用策略;

service_prefix""{

policy=’write/read/deny’’

}

#rule:key前綴為空,代表所有對所有key都使用策略;

key_prefix""{

policy=’write/read/deny’’

}

(3)最后創(chuàng)建token,并和policy綁定。

2.租戶隔離

Rule是以關(guān)鍵字前綴作為過濾條件,這樣可以統(tǒng)一分配權(quán)限。因此,可以每個(gè)租戶的節(jié)點(diǎn)名稱,服務(wù)名稱,配置名稱統(tǒng)一以租戶名稱為前置,然后每個(gè)租戶分配一個(gè)token。在配置rule時(shí),都只以租戶名稱作為前綴。這樣就可以實(shí)現(xiàn)租戶間資源隔離。

例如租戶A的名稱是:“SystemA”,租戶A的相關(guān)資源命名都以SystemA為前綴:

  • 節(jié)點(diǎn)名稱:SystemA-ip,如SystemA-192.168.0.108
  • 服務(wù)名稱:SystemA-微服務(wù)名稱,如SystemA-UserService
  • 配置路徑:config/SystemA-配置名稱,如config/SystemA-public,config/SystemA-UserService

租戶A的token綁定的policy策略為(默認(rèn)策略為deny):

#代表SystemA前綴節(jié)點(diǎn)都使用該策略;

node_prefix"SystemA" {

policy="write"

}

#代表代表SystemA服務(wù)都使用該策略;

service_prefix"SystemA" {

policy="write"

}

#代表以config/SystemA開頭的key都使用該策略;

key_prefix"config/SystemA" {

policy="write"

}

以此policy策略關(guān)聯(lián)的token,其應(yīng)用只能注冊以“SystemA”開頭的節(jié)點(diǎn)和服務(wù),以及發(fā)現(xiàn)以“SystemA”標(biāo)簽為前綴的服務(wù),并對“config/SystemA”為開頭的key的配置信息進(jìn)行編輯和修改。

四、總結(jié)

通過以統(tǒng)一租戶名稱為前置的資源命名管理+Consul產(chǎn)品ACL的方式,可以達(dá)到租戶間資源訪問隔離的效果。通過這種手段,可以將consul產(chǎn)品作為PaaS能力提供服務(wù),豐富云原生生態(tài)。

責(zé)任編輯:武曉燕 來源: 匠心獨(dú)運(yùn)維妙維效
相關(guān)推薦

2020-06-29 07:58:18

ZooKeeperConsul 注冊中心

2021-09-26 10:43:08

注冊Istio集成

2012-11-06 09:59:17

2023-07-02 14:11:28

數(shù)據(jù)倉庫大數(shù)據(jù)

2025-01-14 08:59:16

2022-08-15 19:49:57

Consul架構(gòu)注冊中心

2014-03-27 14:19:47

數(shù)據(jù)中心

2021-01-26 11:44:34

IDC數(shù)據(jù)中心互聯(lián)網(wǎng)

2021-11-09 08:46:20

數(shù)據(jù)中心數(shù)據(jù)中心架構(gòu)數(shù)據(jù)中心網(wǎng)絡(luò)

2023-03-10 10:20:13

數(shù)據(jù)中心服務(wù)器

2025-03-06 11:30:15

2022-06-13 10:01:36

Apollo攜程框架

2020-08-04 11:20:05

邊緣計(jì)算公共安全智慧城市

2018-06-19 10:52:20

數(shù)據(jù)中心服務(wù)器液冷

2010-06-28 13:48:32

中心數(shù)據(jù)中心建設(shè)

2021-05-27 11:10:23

注冊中心業(yè)務(wù)

2017-04-13 10:51:09

Consul分布式

2015-10-16 17:59:24

數(shù)據(jù)中心建設(shè)

2013-12-16 14:16:05

數(shù)據(jù)中心
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91网站在线播放 | 91精品国产色综合久久 | 中文字幕四虎 | 国产国产精品久久久久 | 久久久精 | 精品福利在线视频 | 天天天天天天操 | 亚洲午夜精品一区二区三区他趣 | 久久成人免费 | 免费看国产一级特黄aaaa大片 | 狠狠色网 | 一级看片免费视频囗交动图 | 精品影院| av在线天天 | 91亚洲视频在线 | 91美女在线观看 | 精品久久久久久亚洲综合网 | 国产欧美日韩在线播放 | 亚洲欧洲精品在线 | 18性欧美| 中文字幕成人在线 | 亚洲一区二区久久 | 久久99精品国产99久久6男男 | 网站黄色在线免费观看 | 亚洲免费在线 | 久久综合国产精品 | 天天看逼 | 久久99精品久久久久久国产越南 | 91精品国产综合久久久久久丝袜 | 国产亚洲一区二区三区在线观看 | 国产一区 | 久久精品一区 | 日本一区二区三区四区 | 小视频你懂得 | 国产高清免费 | 91av导航| 国产精品激情小视频 | 麻豆精品国产91久久久久久 | 精久久久| 视频在线一区二区 | 蜜桃在线播放 |