因為用戶開發測試,手裡沒有那麼多的機器,用virtualbox安裝虛擬機來作為服務器節點。
準備工作:
需要安裝第一太centos7操作系統的虛擬機,然後從這臺複製生成另外兩臺;安裝虛擬機的過程省略了,太簡單了幾乎每個人都會。這裡有一點需要注意一下,省的虛擬機網絡配置不正確帶來不應該的麻煩:
連接方式:選擇橋接網卡
界面名稱:選擇本電腦一個活動的網絡連接(網卡接上了網線)
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使用心得後續會繼續更新
閱讀更多 暫時取的名 的文章