consul集群:組建由三個服務器節點組成的服務註冊中心

consul集群:組建由三個服務器節點組成的服務註冊中心

因為用戶開發測試,手裡沒有那麼多的機器,用virtualbox安裝虛擬機來作為服務器節點。

準備工作:

需要安裝第一太centos7操作系統的虛擬機,然後從這臺複製生成另外兩臺;安裝虛擬機的過程省略了,太簡單了幾乎每個人都會。這裡有一點需要注意一下,省的虛擬機網絡配置不正確帶來不應該的麻煩:

consul集群:組建由三個服務器節點組成的服務註冊中心

連接方式:選擇橋接網卡

界面名稱:選擇本電腦一個活動的網絡連接(網卡接上了網線)

MAC地址:記住這個網卡物理地址,配置centos虛擬機時必須用到這個物理地址標識每張網卡。

啟動虛擬機登陸進去:

配置虛擬機網卡:vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改如下:

HWADDR=08:00:27:9C:9F:48

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=enp0s3

UUID=0329e456-3ba5-45b8-8e1b-3ae520025529

ONBOOT=yes

IPADDR=192.168.42.119

NETMASK=255.255.255.0

GATEWAY=192.168.42.129

DNS=192.168.42.129

嚴重說明:HWADDR=08:00:27:9C:9F:48 這個物理地址就是新建虛擬機時網卡的MAC地址,這裡沒兩位用冒號隔開,全是大寫,

UUID,必須是唯一的值,不能和其他網卡相同

NAME:是網卡配置文件的後綴名,ifcfg-enp0s3文件的enp0s3,如果亂取名系統是找不到網卡的配置參數的

ONBOOT=yes 啟動時自動啟用網卡

其他都是ip,網關掩碼和域名服務器地址,沒什麼可說

修改後保存,重啟網絡服務: service network restart

修改一下服務器的名字:vim /etc/hostname

把默認的名字改成:node1

重啟服務;systemctl restart systemd-hostnamed.service

這樣我們就有了第一臺centos7虛擬機,利用它可以快速複製出另外兩臺:hostname:node2的ip:192.168.42.119和hostname:node3的ip:192.168.42.121,複製時記得勾選重新生成mac地址選項。在重複第一臺配置就可以了。

consul集群安裝部署:

從hashcorp官網下載最新版的consul壓縮包,解壓後放到虛擬機的某個你喜歡的目錄,我這裡放到:/var/consul_1.5.1,consul一整個程序只有一個文件consul(**nix系統),consul.exe(windows系統)

修改:/etc/profile配置文件,最後追加一行:PATH=$PATH:/var/consul_1.5.1

重啟配置:source /etc/profile

啟動node1上的consul agent為server模式:

執行:consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -bind=192.168.42.119 -ui-dir ./consul_ui/ -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

第一次啟動,會有 No cluster leader的failed,不要管,第一次啟動,還沒有任何集群和集群的server leader當然會提示,之後cosul 會自動把這臺節點選為leader節點。bind是本機ip

client默認是本地才能訪問,外部訪問改為0.0.0.0

啟動第一個節點後:

在node1的命令行終端查看集群成員

consul members

輸出:

Node Address Status Type Build Protocol DC Segment

node1 192.168.42.119:8301 alive server 1.5.1 2 dc1

node2上啟動consul

consul agent -server -data-dir /tmp/consul -bind=192.168.42.120 -ui-dir ./consul_ui/ -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

在node2上多開一個命令終端執行: consul members

Node Address Status Type Build Protocol DC Segment

node1 192.168.42.120:8301 alive server 1.5.1 2 dc1

把node2加入node1為leader的集群中取

consul join 192.168.42.119 如果沒有報錯

執行 consul members 輸出

Node Address Status Type Build Protocol DC Segment

node1 192.168.42.119:8301 alive server 1.5.1 2 dc1

node2 192.168.42.120:8301 alive server 1.5.1 2 dc1

說明node2已經加入了node1為leader的集群

啟動node3的consul agent

consul agent -server -data-dir /tmp/consul -bind=192.168.42.121 -ui-dir ./consul_ui/ -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0

再執行 consul join 192.168.42.119 加入集群

consul members 輸出

Node Address Status Type Build Protocol DC Segment

node1 192.168.42.119:8301 alive server 1.5.1 2 dc1

node2 192.168.42.120:8301 alive server 1.5.1 2 dc1

node3 192.168.42.121:8301 alive server 1.5.1 2 dc1

這個時候三個server模式的節點都加入集群,如果加入client模式的節點,方法和啟動server模式類型,不加-server參數,consul agent 默認是以client模式運行

打開任意一個節點的終端窗口:

curl http://192.168.42.119:8500/v1/catalog/nodes 輸出集群成員列表

[{"ID":"e6cd42a7-fc35-588f-b924-7b656835d7a8","Node":"node1","Address":"192.168.42.119","Datacenter":"dc1","TaggedAddresses":{"lan":"192.168.42.119","wan":"192.168.42.119"},"Meta":{"consul-network-segment":""},"CreateIndex":3518,"ModifyIndex":3519},{"ID":"9c7fa402-cb2c-fbb3-6b8a-ed70df00831c","Node":"node2","Address":"192.168.42.120","Datacenter":"dc1","TaggedAddresses":{"lan":"192.168.42.120","wan":"192.168.42.120"},"Meta":{"consul-network-segment":""},"CreateIndex":5,"ModifyIndex":6},{"ID":"5451b32b-fe1d-a65e-0ce9-c14fbb8c71b1","Node":"node3","Address":"192.168.42.121","Datacenter":"dc1","TaggedAddresses":{"lan":"192.168.42.121","wan":"192.168.42.121"},"Meta":{"consul-network-segment":""},"CreateIndex":3385,"ModifyIndex":3389}]

也可以在任意一臺可以訪問這三個虛擬機的電腦上從瀏覽器打開 http://192.168.42.119:8500/v1/catalog/nodes

測試一下consul的key-value存儲引擎的功能:

從三個節點任意一臺啟動終端窗口

consul kv put one 99886677

終端返回:Success! Data written to: one說明已經寫入成功一個key :名字one值99886677

consul kv get one 返回

99886677

轉到另外兩個的任意一個節點,執行

consul kv get one

結果都一樣

consul info 查詢當前節點信息

sonsul leave 是當前節點從集群中移除,移除後當前不再參與數據複製,ctrl+c只是關閉consul agent進程,但是並沒有從集群中真正移除

用consul提供的http API查詢,ip可以是任意一臺ip

http://192.168.42.119:8500/v1/kv/one

consul提供的常見的http api,http api查詢的key的值經過base64編碼

查詢集群成員列表

http://:8500/v1/catalog/nodes

服務註冊

http://ip:8500/v1/catalog/service/register

註銷服務

http://ip:8500/v1/catalog/service/deregister

服務查詢:按查詢服務詳細

http://ip:8500/v1/catalog/service/

查詢key的值

http://ip:8500/v1/kv/

循環查詢全部key

http://ip:8500/v1/kv/?recurse

查詢某種狀態的服務,狀態值

http://ip:8500/v1/health/state/

consul使用心得後續會繼續更新

consul集群:組建由三個服務器節點組成的服務註冊中心

consul集群:組建由三個服務器節點組成的服務註冊中心

consul集群:組建由三個服務器節點組成的服務註冊中心

consul集群:組建由三個服務器節點組成的服務註冊中心


分享到:


相關文章: