999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于etcd集群https通信的實現

2020-03-16 02:31:26陳洋羅敏常珞
電子技術與軟件工程 2020年24期
關鍵詞:服務

陳洋 羅敏 常珞

(河南醫學高等專科學校 河南省鄭州市 451191)

1 ETCD介紹

ETCD 是CoreOS 團隊于2013年6月發起的開源項目,它的目標是構建一個高可用的分布式鍵值(key-value)數據庫。它有以下幾個特點:基于HTTP+JSON 的API 讓你用curl 就可以訪問,簡單便捷;可使用SSL 客戶認證機制,保證訪問的安全性;每個實例每秒支持一千次寫操作,效率更高;使用Raft 算法充分實現了分布式,保證了每個節點數據的一致性[2]。

ETCD 集群是一個分布式系統,是一個高度一致的分布式鍵值存儲,它提供了一種可靠的方式來存儲需要由分布式系統或機器集群訪問的數據。為保證數據的一致性,在etcd 集群中,每個節點都維護了一個狀態機,且至多存在一個有效主節點。主節點處理所有來自客戶端寫操作,根據Raft 算法原理,每一次寫操作,需要集群中的主節點在內超過半數節點(n/2 +1)根據日志的邏輯時鐘和日志編號來判斷是否將該日志記錄持久化到本地,并將日志輸入到狀態機,而將結果返回給客戶端。通過 Raft 協議保證操作對狀態機的改動會可靠的同步到其他節點,從而保證節點數據的一致性。因此節點數越多,效率越低,但作為集群,etcd 節點數量總是大于等于2[10]。

表1:etcd 集群最大容錯節點[3]

節點數一般不會選擇偶數,主要是因為偶數節點的集群風險更高[3],主要表現在兩個方面:其一,在選主過程中,有較大概率出現等額選票,造成選主失敗從而觸發下一輪選舉;其二,偶數節點集群在某些網絡分割的場景下無法正常工作。當網絡分割發生后,將集群節點對半分割開,按照Raft 協議,此時集群寫操作無法使得大多數節點同意,從而導致寫失敗,使集群無法正常工作。

圖1:etcd 集群etcd-4 節點etcd 配置文件

圖2:etcd 集群部署成功顯示的狀態

圖3:生成集群配置所需要的證書

圖4:實現etcd 集群客戶端認證

圖5:etcd 集群內部安全認證

通常,按照需求將集群節點部署為3、5 或7 個節點,其可支持的容錯節點如表1 所示。

2 ETCD集群部署

本次集群搭建選擇3 個節點,節點名稱分別是etcd-4 、etcd-5、etcd-6。 etcd 集群的搭建三種方式[4],包括:static、etcd discovery 和DNS discovery。static 是最簡單的一種搭建etcd 的方式,它不需要任何額外的服務,只需要知道運行etcd 的所有節點的hostname 或者IP 地址即可。

在Linux 操作系統下,etcd 服務的安裝方式有yum 安裝和二進制安裝。二進制安裝需要從github 官方網址https://github.com/etcdio/etcd/releases 中選擇合適的版本,下載到本地進行安裝部署。二進制部署難度相對而言較大,但容易控制,更有利于后期維護。在實際生產過程中,推薦使用二進制的方式進行安裝部署。而yum源安裝方式相對簡單,安裝門檻較低,一般用在測試中。

2.1 安裝并啟動etcd

本次測試使用yum 源的方式安裝,static 方式部署。關于安裝etcd 服務所需要的配置信息,可以參考官方提供的最低配置,在這里不再介紹[11]。在所有節點安裝etcd 服務,啟動服務并加入自起列表,使用etcdctl 訪問etcd 并檢查驗證其狀態。如顯示got healthy,則說明etcd 服務已經啟動成功了:

2.2 集群部署

上述節點只是啟動了etcd 服務,并未形成集群。要構建集群,就需要了解etcd 集群的通信方式。集群服務中的通信一般包括兩種場景:對外提供服務的通信,發生在集群外部的客戶端和集群某節點服務器之間的通信,etcd 服務默認訪問2379 端口;集群內部的通信,發生在集群內部節點之間的通信,etcd 服務的默認訪問2380端口。

yum 源安裝默認配置文件在/etc/etcd/目錄中,按照節點IP 地址與集群通信方式,修改配置文件中的參數,如圖1 所示。

這里簡單對圖1 的中配置參數做一下簡單說明,如想了解更多,可參考官方文檔[6]進行系統學習。

ETCD_NAME:節點名稱,集群中唯一; ETCD_DATA_DIR:數據目錄ETCD_INITIAL_CLUSTER:集群節點地址;ETCD_INITIAL_CLUSTER_TOKEN:集群標識符,Token 值一樣的隸屬同一個集群;ETCD_INITIAL_CLUSTER_STATE:加入集群的當前狀態,new 是新集群,existing 表示已有集群。

集群的配置信息如節點url、token 均存儲在數據目錄中,其配置項僅在建立集群時生效。所有集群的改動如:要更新單個成員peerURLs、做一次更新操作、要替代單個節點、添加或刪除節點操作等都將使用etcd 自帶的 etcdctl 命令行工具[10]來實現;或刪除已有數據,重啟etcd,這種方式一般用在新建集群時使用。

刪除etcd 的數據文件,重啟etcd 服務啟動成功后,可以在任意一個節點上使用etcdctl 驗證集群狀態,當顯示cluster is healthy,說明集群部署成功,如圖2 所示。

3 Etcd集群的安全部署

3.1 CA證書的生成

Etcd 的特點是支持客戶端認證的,因此可以使用自簽證書進行安全部署[8]。自簽證書的工具有openssl、easyrsa 與cfssl 三種[7],用官方推薦的cfssl[5]工具生成證書,官方文檔中詳細介紹了證書的生成方法,由于篇幅問題,這里不再贅述。著重介紹一下所用的三類認證證書[5]:

client certificate 用于通過服務器驗證客戶端。例如etcdctl、etcd proxy 或docker 客戶端。

server certificate 由服務器使用,并由客戶端驗證服務器身份。例如docker 服務器或kube-apiserver。

peer certificate 用于集群成員之間認證,供節點之間校驗,既認證服務器也認證客戶端。

根據etcd 集群節點的IP 地址,替換官方文檔中所提供證書配置文件中的IP 地址,生成集群所用到的證書文件,如圖3 所示。

在實際生產過程中,為確保根證書密鑰(ca.pem、ca-key.pem)的安全性,建議使用單機(可以從圖3 看到,是在etcd-4 節點上生成的證書)生成證書,且必須保證生成證書的安全條件。

拷貝根證書的公鑰ca.pem 和client、server 以及peer 的私鑰、公鑰到集群的另外兩個節點供認證使用。

建議在實際生產環境中部署etcd 集群時,盡量使用5 個節點部署;或在生成server certificate 時,多預留幾個IP 地址,以滿足后期擴容、容災需求。為方便證書管理,客戶端與服務器的認證以及集群內部認證都可以使用peer certificate。

3.2 啟動客戶端認證

通過yum 方式安裝的etcd 服務,其默認生成的service 用戶名為etcd,而用root 用戶生成的證書文件,其屬主為root 用戶,普通用戶不可讀。因此,需修改證書文件屬主為etcd 或修改證書的權限使普通用戶能讀取使用。

在所有節點上修改etcd 配置文件,將client 的url 修改為https,并配置相關證書:

ETCD_LISTEN_CLIENT_URLS="https://192.168.1.44:2379,ht tp://127.0.0.1:2379"

ETCD_ADVERTISE_CLIENT_URLS= "https://192.168.1.44:2379"

ETCD_CERT_FILE="/opt/TLS/etcd/server.pem " #服務器證書

ETCD_KEY_FILE="/opt/TLS/etcd/server-key.pem" #服務器私鑰

ETCD_CLIENT_CERT_AUTH="true" #啟動客戶端認證

ETCD_TRUSTED_CA_FILE="/opt/TLS/etcd/ca.pem" #根證書

由上述集群配置更新可知,修改配置文件之后還需要通過etcdctl 命令,實現客戶端與服務器的通信,命令如下:

etcdctl --ca-file /opt/TLS/etcd/ca.pem --cert-file /opt/TLS/etcd/client.pem --key-file /opt/TLS/etcd/client-key.pem cluster-health

當顯示cluster is healthy 時,說明客戶端認證實現https 連接,如圖4 所示。

etcd 的客戶端與服務器端認證已經部署成功,接下來將實現etcd 集群內部之間https 通信。

3.3 集群相互認證

在所有節點上修改etcd 配置文件,將peer 的url 修改為https,添加peer 相關證書:

ETCD_LISTEN_PEER_URLS="https://192.168.1.44:2380"

ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.44:2380"

ETCD_INITIAL_CLUSTER="etcd-4=https:/192.168.1.44:2380,etcd-5=https://192.168.1.45:2380,etcd-6=https://192.168.1.46:2380"

ETCD_PEER_CERT_FILE="/opt/etcd/TLS/etcd/peer.pem"

ETCD_PEER_KEY_FILE="/opt/etcd/TLS/etcd/peer-key.pem"

ETCD_PEER_CLIENT_CERT_AUTH="true"

ETCD_PEER_TRUSTED_CA_FILE="/opt/etcd/TLS/etcd/ca.pem"

配置參數后,刪除原有數據,重新啟動etcd 服務,實現集群內部之間的https 傳輸,如圖5 所示。

至此,靜態etcd 集群內外訪問都實現了https 通信。

4 總結

文章通過介紹etcd 的基本概念,從單節點安裝服務,到集群成功部署;從證書生成,最后到集群內外都實現基于https 的安全訪問,詳細的介紹了etcd 集群的搭建過程,具有很強的參考意義。其中,客戶端的安全認證為kubernetes 集群中Master 節點中kubeapiserver 組件訪問etcd 集群提供了很好的借鑒作用,為高可用kubernetes 集群的安全部署夯實基礎。

不足之處:本次安裝部署etcd 采用的yum 源的方式進行安裝,在實際生產中并不適用,只能做參考使用,但其部署原理是一致的。另外,證明實現https 通信還需要進行抓包測試。

注意,本次部署適用在新建集群,如果是已運行的etcsd 集群,要修改集群內外訪問方式,需要修改配置文件并用etcdctl 命令更新,以防止原有數據的丟失。

猜你喜歡
服務
自助取卡服務
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年11期)2019-08-13 00:49:08
服務在身邊 健康每一天
今日農業(2019年13期)2019-08-12 07:59:04
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
高等教育為誰服務:演變與啟示
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
主站蜘蛛池模板: 日韩毛片在线播放| 日本欧美中文字幕精品亚洲| 国产黑丝视频在线观看| 亚洲国产精品日韩av专区| 欧美一级夜夜爽| 国产尤物视频网址导航| 亚洲VA中文字幕| 在线国产综合一区二区三区 | 毛片在线看网站| 中字无码av在线电影| 国模沟沟一区二区三区| 91区国产福利在线观看午夜| 91丝袜在线观看| 91视频首页| 黄色片中文字幕| 二级特黄绝大片免费视频大片| 精品国产自在在线在线观看| 午夜免费小视频| 超碰91免费人妻| 无码精品国产VA在线观看DVD| 第九色区aⅴ天堂久久香| 亚洲欧洲日产国码无码av喷潮| 日韩毛片免费| 久久久久久尹人网香蕉| 狠狠色丁香婷婷| 一区二区偷拍美女撒尿视频| a级毛片免费网站| 久久久久无码精品国产免费| 欧美第一页在线| 国产永久在线观看| 欧美午夜网| 久久综合亚洲色一区二区三区| 波多野结衣一区二区三区四区视频| 国产成人高清精品免费| 亚洲天堂久久新| 中字无码av在线电影| 国产性生大片免费观看性欧美| 九色综合伊人久久富二代| 欧美a在线视频| 国产精品尹人在线观看| 热久久国产| 久久网欧美| 少妇精品在线| 亚洲成a人在线观看| 亚洲动漫h| 亚洲欧洲日产无码AV| 91免费国产在线观看尤物| 91小视频版在线观看www| 中国毛片网| 福利姬国产精品一区在线| 国产在线麻豆波多野结衣| 美女一区二区在线观看| 国产精品一区在线观看你懂的| 亚洲午夜福利精品无码| 一级成人a毛片免费播放| 精品一区二区无码av| 成人免费一级片| 无码人中文字幕| 亚洲欧美成人在线视频| 亚洲国产天堂在线观看| 无码国产伊人| 亚洲aaa视频| 欧美精品在线免费| 欧美中文字幕一区二区三区| 久久久久免费精品国产| 国产成人亚洲综合a∨婷婷| 久久综合亚洲色一区二区三区| 精久久久久无码区中文字幕| 18禁黄无遮挡免费动漫网站| 91九色最新地址| 日韩在线第三页| 亚洲一级毛片在线播放| 一级黄色网站在线免费看| 亚洲va在线∨a天堂va欧美va| 色悠久久久| 亚洲国产精品无码AV| 国产成人亚洲欧美激情| 91系列在线观看| 午夜国产不卡在线观看视频| 国产原创演绎剧情有字幕的| 国产成人久视频免费| 久久青青草原亚洲av无码|