1. 程式人生 > >centos6 安裝consul ACL

centos6 安裝consul ACL

一、下載安裝包

去node官網下載最新的consul版本,地址:
consul官方下載地址

不需要下載到自己的客戶機上,直接在伺服器裡面用wget下載更快

拷貝下載連結

cd /home/download
wget https://releases.hashicorp.com/consul/1.3.1/consul_1.3.1_linux_amd64.zip

二、解壓安裝包

unzip consul_1.3.1_linux_amd64.zip
mv consul  /usr/local/

四、測試

consul agent -dev

consul agent常用命令解讀
-data-dir
作用:指定agent儲存狀態的資料目錄,這是所有agent都必須的,對server尤其重要,因為他們必須持久化叢集的狀態

-config-dir
作用:指定service的配置檔案和檢查定義所在的位置。目錄必需為consul.d,檔案內容都是json格式的資料。配置詳解見官方

-config-file
作用:指定一個要裝載的配置檔案

-dev
作用:開發伺服器模式,雖然是server模式,但不用於生產環境,因為不會有任何持久化操作,即不會有任何資料寫入到磁碟

-bootstrap-expect
作用: 引數表明該服務執行時最低開始進行選舉的節點數,當設定為1時,則意味允許節點為一個時也進行選舉;當設定為3時,則等到3臺節點同時執行consul並加入到server才能參與選舉,選舉完叢集才能夠正常工作。 一般建議伺服器結點3-5個。

-node
作用:指定節點在叢集中的名稱,該名稱在叢集中必須是唯一的(預設這是機器的主機名),直接採用機器的IP

-bind
作用:指明節點的IP地址,一般是0.0.0.0或者雲伺服器內網地址,不能寫阿里雲外網地址。這是Consul偵聽的地址,它必須可以被叢集中的所有其他節點訪問。雖然繫結地址不是絕對必要的,但最好提供一個。

-server
作用:指定節點為server,每個資料中心(DC)的server數推薦3-5個。

-client
作用:指定節點為client,指定客戶端介面的繫結地址,包括:HTTP、DNS、RPC
預設是127.0.0.1,只允許迴環介面訪問

五、生產

以-dev開發者伺服器模式執行的,生產環境不是我想要的。下面以server模式執行consul.

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0

-server:伺服器模式
-ui:能webui展示
-bootstrap-expect:server為1時即選擇server叢集leader
-data-dir:consul狀態儲存檔案地址
-node:指定結點名
advertise:本地ip地址
-client:指定可訪問這個服務結點的ip
注意 Cluster Addr叢集地址是我們上面advertise指定的ip地址

六、叢集

伺服器一:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=116.62.184.190 -bind=0.0.0.0 -client=0.0.0.0

伺服器二:

consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-two -advertise=139.196.123.97 -bind=0.0.0.0 -client=0.0.0.0

將agent-one新增到agent-two:

consul join 139.196.123.97

表示當前consul伺服器新增到139.196.123.97上面consul伺服器
執行結果為Successfully joined cluster by contacting 1 nodes.表示新增成功,在伺服器一或伺服器二任意一臺機器上執行consul members都會得到如下結果:

Node       Address              Status  Type    Build  Protocol  DC   Segment
agent-one  116.62.184.190:8301  alive   server  1.1.0  2         dc1  <all>
agent-two  139.196.123.97:8301  alive   server  1.1.0  2         dc1  <all>

訪問http://139.196.123.97:8500,允許訪問8500埠

成功展示2臺consul伺服器。
在這裡插入圖片描述

七、consul概念

Agent: Consul叢集中長時間執行的守護程序,以consul agent 命令開始啟動. 在客戶端和服務端模式下都可以執行,可以執行DNS或者HTTP介面, 它的主要作用是執行時檢查和保持服務同步。
Client: 客戶端, 無狀態, 以一個極小的消耗將介面請求轉發給區域網內的服務端叢集.
Server: 服務端, 儲存配置資訊, 高可用叢集, 在區域網內與本地客戶端通訊, 通過廣域網與其他資料中心通訊. 每個資料中心的 server 數量推薦為 3 個或是 5 個.
Datacenter: 資料中心,多資料中心聯合工作保證資料儲存安全快捷
Consensus: 一致性協議使用的是Raft Protocol
RPC: 遠端程式通訊
Gossip: 基於 Serf 實現的 gossip 協議,負責成員、失敗探測、事件廣播等。通過 UDP 實現各個節點之間的訊息。分為 LAN 上的和 WAN 上的兩種情形。

八、ACL

consul安裝啟動之後-client配置的是0.0.0.0 ,所以任何機器上的服務都可以訪問consul獲取配置和服務,甚至知道ip和埠號都可以訪問consul-ui,所以就需要設定許可權,不能讓任何人都能訪問得到。

  • consul的配置檔案啟動
    consul不僅可以用命令來啟動並配置,還可以實用配置檔案方式啟動,如下:
uuidgen #生成token
mkdir /etc/consul.d
cd /etc/consul.d
touch acl.json
vi acl.json




{
        "datacenter": "datacenter",
        "acl_datacenter": "datacenter",
        "acl_master_token": "uuidgen 生成的token",
        "acl_default_policy": "deny",
        "server": true,
        "log_level": "DEBUG",
        "bootstrap_expect": 1,
        "client_addr": "0.0.0.0"
}

nohup ./consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -config-dir=/etc/consul.d  -node=agent-one -advertise=127.0.0.1 -bind=0.0.0.0 -client=0.0.0.0 >./nohup.log 2>&1 &

填寫masterToken
在這裡插入圖片描述

應該是把token存在瀏覽器localStorage裡的

現在就可以通過ui介面管理token的許可權分配了(制訂ACL規則)。

下面是一個可以操作讀取K\V的規則

agent "" {  policy = "read"  }
agent "" {  policy = "write"  }
node "" {  policy = "write"  }
service "" {  policy = "read"  }
service "" {  policy = "write"  }
event "" {  policy = "write"  }
query "" { policy = "write"  }
key "" {
  policy = "read"
}
key "" { policy = "write" }

在這裡插入圖片描述