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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5分钟看懂微服务架构下的Consul 特性及搭建

發(fā)布時(shí)間:2023/12/4 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5分钟看懂微服务架构下的Consul 特性及搭建 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

雖然說牛逼的公司都有那么幾個(gè)牛逼的運(yùn)維團(tuán)隊(duì),牛逼的運(yùn)維團(tuán)隊(duì)都有著神秘黑科技般敲代碼的姿勢;本人雖然不是一個(gè)運(yùn)維工程師,但是自己比較愛倒騰這些東西,會(huì)那么一點(diǎn)點(diǎn)運(yùn)維姿勢,雖然不算專業(yè),但是還是可以在linux平臺(tái)下敲一敲代碼。去年由于自己業(yè)余時(shí)間搞了一個(gè)app項(xiàng)目,當(dāng)時(shí)自己兼任后端開發(fā),又同時(shí)兼任運(yùn)維,經(jīng)過多少個(gè)夜晚才把后端API網(wǎng)關(guān) 搭建起來,當(dāng)時(shí)技術(shù)選型主要使用微服務(wù)架構(gòu),說到微服務(wù)架構(gòu),也就少不了分布式集群,那就更少不了Consul 。今天搭建Consul 服務(wù)也是為了自己后面的學(xué)習(xí)和分享使用(之前在生產(chǎn)環(huán)境搭建過,本來可以直接拿來用,只是后面應(yīng)用停掉了,服務(wù)器也就下掉了),故特意把前幾天阿里云活動(dòng)價(jià)買的服務(wù)器用起來,準(zhǔn)備再次搭建Consul服務(wù),以供后續(xù)方便拿來即用。

二、概念

什么是Consul?

Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發(fā),部署起來非常容易,只需要極少的可執(zhí)行程序和配置文件,具有綠色、輕量級(jí)的特點(diǎn)。Consul是分布式的、高可用的、 可橫向擴(kuò)展的用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置。

Consul具有哪些特點(diǎn)?

  • 服務(wù)發(fā)現(xiàn)(Service Discovery):Consul提供了通過DNS或者HTTP接口的方式來注冊(cè)服務(wù)和發(fā)現(xiàn)服務(wù)。一些外部的服務(wù)通過Consul很容易的找到它所依賴的服務(wù)。

  • 健康檢查(Health Checking):Consul的Client可以提供任意數(shù)量的健康檢查,既可以與給定的服務(wù)相關(guān)聯(lián)(“webserver是否返回200 OK”),也可以與本地節(jié)點(diǎn)相關(guān)聯(lián)(“內(nèi)存利用率是否低于90%”)。操作員可以使用這些信息來監(jiān)視集群的健康狀況,服務(wù)發(fā)現(xiàn)組件可以使用這些信息將流量從不健康的主機(jī)路由出去。

  • Key/Value存儲(chǔ):應(yīng)用程序可以根據(jù)自己的需要使用Consul提供的Key/Value存儲(chǔ)。Consul提供了簡單易用的HTTP接口,結(jié)合其他工具可以實(shí)現(xiàn)動(dòng)態(tài)配置、功能標(biāo)記、領(lǐng)袖選舉等等功能。

  • 安全服務(wù)通信:Consul可以為服務(wù)生成和分發(fā)TLS證書,以建立相互的TLS連接。意圖可用于定義允許哪些服務(wù)通信。服務(wù)分割可以很容易地進(jìn)行管理,其目的是可以實(shí)時(shí)更改的,而不是使用復(fù)雜的網(wǎng)絡(luò)拓?fù)浜挽o態(tài)防火墻規(guī)則。

  • 多數(shù)據(jù)中心:Consul支持開箱即用的多數(shù)據(jù)中心. 這意味著用戶不需要擔(dān)心需要建立額外的抽象層讓業(yè)務(wù)擴(kuò)展到多個(gè)區(qū)域。

Consul 架構(gòu)圖

讓我們把這幅圖分解描述。首先,我們可以看到有兩個(gè)數(shù)據(jù)中心,分別標(biāo)記為“1”和“2”。Consul擁有對(duì)多個(gè)數(shù)據(jù)中心的一流支持,這是比較常見的情況。

在每個(gè)數(shù)據(jù)中心中,我們都有客戶機(jī)和服務(wù)器。預(yù)計(jì)將有三到五臺(tái)服務(wù)器。這在故障情況下的可用性和性能之間取得了平衡,因?yàn)殡S著添加更多的機(jī)器,一致性會(huì)逐漸變慢。但是,客戶端的數(shù)量沒有限制,可以很容易地?cái)U(kuò)展到數(shù)千或數(shù)萬。

Consul 實(shí)現(xiàn)多個(gè)數(shù)據(jù)中心都依賴于gossip protocol協(xié)議。這樣做有幾個(gè)目的:首先,不需要使用服務(wù)器的地址來配置客戶端;服務(wù)發(fā)現(xiàn)是自動(dòng)完成的。其次,健康檢查故障的工作不是放在服務(wù)器上,而是分布式的。這使得故障檢測比單純的心跳模式更具可伸縮性。為節(jié)點(diǎn)提供故障檢測;如果無法訪問代理,則節(jié)點(diǎn)可能經(jīng)歷了故障。

每個(gè)數(shù)據(jù)中心中的服務(wù)器都是一個(gè)筏對(duì)等集的一部分。這意味著它們一起工作來選舉單個(gè)leader,一個(gè)被選中的服務(wù)器有額外的職責(zé)。領(lǐng)導(dǎo)負(fù)責(zé)處理所有的查詢和事務(wù)。事務(wù)還必須作為協(xié)商一致協(xié)議的一部分復(fù)制到所有對(duì)等方。由于這個(gè)需求,當(dāng)非leader服務(wù)器接收到RPC請(qǐng)求時(shí),它會(huì)將其轉(zhuǎn)發(fā)給集群leader。

Consul的使用場景

Consul的應(yīng)用場景包括服務(wù)發(fā)現(xiàn)、服務(wù)隔離、服務(wù)配置:

  • 服務(wù)發(fā)現(xiàn)場景中consul作為注冊(cè)中心,服務(wù)地址被注冊(cè)到consul中以后,可以使用consul提供的dns、http接口查詢,consul支持health check。

  • 服務(wù)隔離場景中consul支持以服務(wù)為單位設(shè)置訪問策略,能同時(shí)支持經(jīng)典的平臺(tái)和新興的平臺(tái),支持tls證書分發(fā),service-to-service加密。

  • 服務(wù)配置場景中consul提供key-value數(shù)據(jù)存儲(chǔ)功能,并且能將變動(dòng)迅速地通知出去,借助Consul可以實(shí)現(xiàn)配置共享,需要讀取配置的服務(wù)可以從Consul中讀取到準(zhǔn)確的配置信息。

  • Consul可以幫助系統(tǒng)管理者更清晰的了解復(fù)雜系統(tǒng)內(nèi)部的系統(tǒng)架構(gòu),運(yùn)維人員可以將Consul看成一種監(jiān)控軟件,也可以看成一種資產(chǎn)(資源)管理系統(tǒng)。

比如:docker實(shí)例的注冊(cè)與配置共享、coreos實(shí)例的注冊(cè)與配置共享、vitess集群、SaaS應(yīng)用的配置共享、Consul與confd服務(wù)集成,動(dòng)態(tài)生成nginx和haproxy配置文件或者Consul結(jié)合nginx構(gòu)建高可用可擴(kuò)展的Web服務(wù)。

三、安裝

我這里直接安裝Consul 最新版本 1.7.2 官網(wǎng)地址:https://www.consul.io/

1. 下載

我這里進(jìn)入我的用戶目錄 /home下面進(jìn)行下載consul安裝壓縮包,命令如下:

wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip

下載如下圖:下載完我們通過 ls -a 查看下目錄,如下圖:

2. 解壓

unzip consul_1.7.2_linux_amd64.zip

3. 拷貝到usr目錄下

我這里事先在usr目錄中單獨(dú)創(chuàng)建了service 文件,可以通過mkdir 命令來完成,不過不一定要安裝在這個(gè)目錄下面,我這里就選擇安裝在usr目錄里

mv consul /usr/service

4. 查看 安裝是否成功

./consul

查看如下圖:已經(jīng)安裝完成了, 現(xiàn)在我們開始啟動(dòng)

5. 啟動(dòng)

這是最關(guān)鍵的時(shí)候,安裝就是為了啟動(dòng) 這里我整理了下啟動(dòng)的相關(guān)參數(shù)如下:參數(shù)參考 可以訪問 https://www.cnblogs.com/sunsky303/p/9209024.html 地址,我這里就簡單的通過使用到的參數(shù)進(jìn)行啟動(dòng)

-server 表示是server模式-bootstrap-expect=3 表示是集群中有3臺(tái)服務(wù)器 bootstrap該模式node可以指定自己作為leader ,如果是非leader可不加該參數(shù)-data-dir=/tmp/consul 目錄-node=n2 該服務(wù)器節(jié)點(diǎn)名-bind=127.0.0.1 節(jié)點(diǎn)綁定的ip-ui 非必須 webui的路徑 用web來管理consul

啟動(dòng)命令如下(默認(rèn)是8500端口):

./consul agent -server -bootstrap-expect 1 -data-dir=/tmp/consul -node=n1 -bind=127.0.0.1 -client=0.0.0.0 -ui

啟動(dòng)后結(jié)果如下:現(xiàn)在我再來訪問Consul UI管理界面,如下圖:現(xiàn)在Consul 已經(jīng)完整的啟動(dòng)成功了,啟動(dòng)成功是不是想要來試一試,我這里直接使用我之前寫的一篇【.net core】電商平臺(tái)升級(jí)之微服務(wù)架構(gòu)應(yīng)用實(shí)戰(zhàn)(core-grpc) 文章中寫的Demo 注冊(cè)到Consul 中來,看看是否正常注冊(cè),如下圖:好了,正常的注冊(cè)進(jìn)來了,完美,現(xiàn)在已經(jīng)搭建完成了

Consul 開機(jī)自啟動(dòng)

1. 路徑/usr/lib/systemd/system/,新建一個(gè)service命名為,consul.service

[Unit] Description=consul-serviceAfter=network.target[Service] Type=forking PIDFile=/run/consul-service.pid ExecStart=/usr/service/consul.start.sh ExecReload=/bin/kill -SIGHUP $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID[Install] WantedBy=multi-user.target graphical.target

上面的ExecStart 是啟動(dòng)的腳本,我之前把consul 是安裝在/user/service 下面,

2. 創(chuàng)建啟動(dòng)腳本

我們?cè)賡ervice 目錄中創(chuàng)建Consul開機(jī)自啟動(dòng)的腳本文件consul.start.sh

#!/bin/bash /usr/service/consul agent -server -bootstrap-expect 1 -node=127.0.0.1 -data-dir=/usr/service/data/ -log-file=/usr/service/log/consul_log-$(date +%Y-%m-%d--%H-%M) -bind=127.0.0.1

3. 重新加載配置

systemctl daemon-reload

4. 設(shè)置開機(jī)自啟動(dòng)

systemctl enable consul.service

Consul 啟動(dòng)

systemctl start consul

Consul 停止

systemctl stop consul

上面創(chuàng)建開機(jī)自啟動(dòng)腳本實(shí)踐的時(shí)候大家可能會(huì)發(fā)現(xiàn) 通過systemctl start consul 無法啟動(dòng)問題,這時(shí)候可以通過status 來查詢狀態(tài),命令如下

systemctl status consul

查詢創(chuàng)建的自啟動(dòng)腳本執(zhí)行過程中出現(xiàn)code=exited, status=203/EXEC異常錯(cuò)誤信息,這個(gè)信息一般有如下幾個(gè)原因造成:

  • 錯(cuò)誤的腳本路徑

  • 腳本的權(quán)限無效

    • 服務(wù)用戶沒有讀取腳本的權(quán)限

    • 腳本未標(biāo)記為可執(zhí)行

根據(jù)上面三種情況去排查解決,基本上就可以完美解決自啟動(dòng)腳本無法啟動(dòng)問題

結(jié)束語:這里Consul 介紹及安裝搭建已經(jīng)完成,Consul也可以搭建集群,大家可以去嘗試自己搭建,比較簡單,后續(xù)我會(huì)陸續(xù)把使用到的各種工具服務(wù)搭建起來,以方便后續(xù)的文章實(shí)戰(zhàn)分享和學(xué)習(xí),不過大佬就可以直接跳過...

Consul 參考資料:

1.可以參考Consul的官方網(wǎng)站和其他網(wǎng)站上提供的信息。本文列舉一些可用參考的資源如下:2.Consul官方網(wǎng)站 https://www.consul.io/ 3.Consul Github地址 https://github.com/hashicorp/consul 4.Consul-template Github地址 https://github.com/hashicorp/consul-template 5.Consul官方介紹 https://www.consul.io/intro/index.html 6.Consul 系統(tǒng)架構(gòu) https://www.consul.io/docs/internals/architecture.html 7.Consul與其他開源軟件或解決方案的對(duì)比 https://www.consul.io/intro/vs/ 8.Dubbo用戶指南 http://dubbo.io/Home-zh.htm 通過此指南可以了解Dubbo是什么,能做什么 9.借助 Consul 和 Docker 支持即插即用的服務(wù)發(fā)現(xiàn) (service discovery) http://www.ibm.com/developerworks/cn/cloud/library/cl-plug-and-play-service-discovery-with-consul-and-docker-bluemix/ 10.使用Terraform與Consul自動(dòng)化現(xiàn)代數(shù)據(jù)中心 http://www.infoq.com/cn/news/2015/05/hashimoto-modern-datacenter 11.基於swarm+consul+nginx達(dá)到HA和auto scaling的架構(gòu) http://genchilu-blog.logdown.com/posts/317095-based-on-swarm-and-consul-ha-and-dynamically-extensible-architectures 12.使用Docker、Registrator、Consul、Consul Template和Nginx實(shí)現(xiàn)高可擴(kuò)展的Web框架 http://dockone.io/article/272 13.Consul多數(shù)據(jù)中心配置 https://www.consul.io/docs/guides/datacenters.html

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

總結(jié)

以上是生活随笔為你收集整理的5分钟看懂微服务架构下的Consul 特性及搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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