kubernetes實戰之consul篇及consul在windows下搭建consul簡單測試環境


consul是一款服務發現中間件,1.12版本后增加servicemesh功能.consul是分布式的,可擴展的,高可用的根據官方文檔介紹,目前已知最大的consul集群有5000個節點,consul被廣泛用用於服務發現,服務健康檢測以及分布式配置存儲,並且不斷地改進對servicemesh和kubernetes的支持,很多優秀項目包括ocelot,spring cloud都提供了與consul的便利集成,本系列也會將consul做為一個重點的有狀態服務較為細致講解,讓大家對kubernetes在服務管理上的便捷性,自發性有更深的理解(在kubernetes里,有狀態服務部署是一件很困難的事,要考慮服務間必須互相排斥,對服務資源的合理限制以及服務發生漂移時數據的處理,部分服務掛掉后如何在沒有人工介入的情況下自動加入集群等問題),雖然我們在第一天接觸容器的時候都會看到容器與虛擬機的對比,以及容器的優勢,但是很多初學者仍然是把容器當作虛擬機來使用,按照在虛擬機中部署應用的思路在容器里部署應用,當然僅僅為了方便測試這樣做是無可厚非的,但是生產環境是非常嚴肅的,一定要對可能產生的問題有充分的預估以便提前安排應對方案,並且充分利用新技術的特點對自己應用的部署靈活性,維護便捷性以及應用本身的伸縮性等方面進行持續優化.

consul是一款服務發現中間件,1.12版本后增加servicemesh功能.consul是分布式的,可擴展的,高可用的.其主要功能如下

  • service discovery:consul通過DNS或者HTTP接口使服務注冊和服務發現變的很容易,一些外部服務,例如saas提供的也可以一樣注冊。
  • health checking:健康檢測使consul可以快速的告警在集群中的操作。和服務發現的集成,可以防止服務轉發到故障的服務上面。
  • key/value storage:一個用來存儲動態配置的系統。提供簡單的HTTP接口,可以在任何地方操作。
  • multi-datacenter:無需復雜的配置,即可支持任意數量的區域

基本概念

CLIENT

CLIENT表示consul的client模式,就是客戶端模式。是consul節點的一種模式,這種模式下,所有注冊到當前節點的服務會被轉發到SERVER,本身是不持久化這些信息。

SERVER

SERVER表示consul的server模式,表明這個consul是個server,這種模式下,功能和CLIENT都一樣,唯一不同的是,它會把所有的信息持久化的本地,這樣遇到故障,信息是可以被保留的。

SERVER-LEADER

中間那個SERVER下面有LEADER的字眼,表明這個SERVER是它們的老大,它和其它SERVER不一樣的一點是,它需要負責同步注冊的信息給其它的SERVER,同時也要負責各個節點的健康監測。

其它信息

其它信息包括它們之間的通信方式,還有一些協議信息,算法。它們是用於保證節點之間的數據同步,實時性要求等等一系列集群問題的解決。這些有興趣的自己看看官方文檔。

由於本系列的性質是關於devops的,因此不對consul做詳細介紹,需要了解consul的同學可以參考官方文檔或者相關博客.這里的關注點主要在於測試環境和生產環境的部署上.

平台支持情況

consul支持linux,macos和windows平台,開發環境可以使用基於windows的consul,僅有一個可執行程序,使用非常方便,生產環境建議使用linux或者docker/kubernetes部署

后面我們將會對consul windows測試環境部署,docker 單節點部署,docker集群部署,kubernetes集群部署一一做介紹.

consul在windows下測試環境簡單部署

本篇只介紹在windows下部署單節點測試環境,關於集群的部署可以參照后面docker的部署方式.

本篇非常簡單,但是考慮到內容的獨立性,因此單獨做為一節.

consul windows版下載

可以在百度里搜索consul,進入到官網首頁就可以看到醒目的download,選擇windows 版的下載即可.

下載完成后可以看到是一個單文件,名叫作consul.exe,這里建議把它單獨放到一個文件夾里面,因為后面可能需要添加配置文件,放在一個文件夾下面方便管理.

consul windows版 部署

注意這里不像普通的exe雙擊安裝,而是需要通過命令行啟動

consul.exe所在的文件夾打開命令窗口,輸入consul --help就會出現以下關於consul的命令幫助

λ consul --help
Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    acl            Interact with Consul's ACLs
    agent          Runs a Consul agent
    catalog        Interact with the catalog
    connect        Interact with Consul Connect
    debug          Records a debugging archive for operators
    event          Fire a new event
    exec           Executes a command on Consul nodes
    force-leave    Forces a member of the cluster to enter the "left" state
    info           Provides debugging information for operators.
    intention      Interact with Connect service intentions
    join           Tell Consul agent to join cluster
    keygen         Generates a new encryption key
    keyring        Manages gossip layer encryption keys
    kv             Interact with the key-value store
    leave          Gracefully leaves the Consul cluster and shuts down
    lock           Execute a command holding a lock
    maint          Controls node or service maintenance mode
    members        Lists the members of a Consul cluster
    monitor        Stream logs from a Consul agent
    operator       Provides cluster-level tools for Consul operators
    reload         Triggers the agent to reload configuration files
    rtt            Estimates network round trip time between nodes
    services       Interact with services
    snapshot       Saves, restores and inspects snapshots of Consul server state
    validate       Validate config files/directories
    version        Prints the Consul version
    watch          Watch for changes in Consu

在命令窗口輸入consul agent -dev就可以以dev模式啟動consul了,以下是輸出內容的頭部

==> Starting Consul agent...
==> Consul agent running!
           Version: 'v1.4.0'
           Node ID: '2be40d2e-a5eb-5dda-271f-70a39141d791'
         Node name: 'DESKTOP-OE0CB8G'
        Datacenter: 'dc1' (Segment: '<all>')
            Server: true (Bootstrap: false)
       Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
      Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

==> Log data will now stream in as it occurs:

通過以上輸入內容可以看到,consul已經運行,版本是1.4.HTTP端口是8500,我們在瀏覽器輸入localhost:8500就可以看到consul的web管理界面了

img

至此,windows配置已經完成了.

更改默認端口

可以看到,默認情況下,http端口是8500,測試環境下我們可能沒有需求更改端口,可是正式環境部署的時候可能需要更改端口號,更改端口號也非常簡單,在啟動agent的時候加上-http-port選項即可.

consul agent -dev -http-port=8400
==> Starting Consul agent...
==> Consul agent running!
           Version: 'v1.4.0'
           Node ID: '7a083b04-cd4a-04af-743b-4fdc8d82c62e'
         Node name: 'DESKTOP-OE0CB8G'
        Datacenter: 'dc1' (Segment: '<all>')
            Server: true (Bootstrap: false)
       Client Addr: [127.0.0.1] (HTTP: 8400, HTTPS: -1, gRPC: 8502, DNS: 8600)
      Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

從輸出信息中可以看到,http端口已經更改成8400了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM