天天看點

SpringCloud consul安裝和使用,Windows Consul安裝和使用,Java consul服務中心安裝和使用

SpringCloud consul安裝和使用,Windows Consul安裝和使用,Java consul服務中心安裝和使用

================================

©Copyright 蕃薯耀 2021-03-05

https://www.cnblogs.com/fanshuyao/

一、Consul下載下傳位址:

https://www.consul.io/downloads      

Windows:consul_1.9.3_windows_amd64.zip

Linux:consul_1.9.3_linux_amd64.zip

二、Windows Consul安裝和使用

1、以windows為例,解壓 consul_1.9.3_windows_amd64.zip 到 D:\0soft\consul_1.9.3_windows_amd64,檔案夾有一個exe檔案(consul.exe)

2、配置環境變量,将Consul的路徑:D:\0soft\consul_1.9.3_windows_amd64配置到系統PATH路徑中

3、打開cmd指令視窗,在視窗輸入:consul -v或者consul --version檢視版本

consul -v      

C:\Users\xxx> consul -v

Consul v1.9.3

Revision f55da9306

Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

4、打開cmd指令視窗,在視窗輸入:consul agent -dev啟動consul(開發模式)

consul agent -dev      

5、consul的預設端口是8500,通過浏覽器打開:http://localhost:8500通路Consul管理背景

http://localhost:8500      

6、通過cmd指令視窗檢視members

consul members      

C:\Users\liqiongy>consul members

Node Address Status Type Build Protocol DC Segment

xxx-xxxxx-10 127.0.0.1:8301 alive server 1.9.3 2 dc1 <all>

7、關閉Consul指令:

consul leave      

8、重載Consul指令:

consul reload      

三、Consul在微服務項目中使用

1、在pom檔案中引入Consul依賴(服務提供者和消費者都需要引入)

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>      

2、服務提供者,在application.properties檔案配置Consul

server.port=8631
spring.application.name=SPRINGCLOUD-CONSUL-CLIENT-SERVICE

#consul服務通路的位址:127.0.0.1或者localhost
spring.cloud.consul.host=127.0.0.1
#consul服務通路的端口,預設端口就是8500
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.service-name=${spring.application.name}
#設定執行個體id,預設是項目的名稱
spring.cloud.consul.discovery.instance-id=consul-8631
#顯示用戶端的ip位址
spring.cloud.consul.discovery.prefer-ip-address=true      

3、服務提供者,服務請求

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsulClientController {

@Value("${server.port}")
private String serverPort;

@RequestMapping("/consul")
public Result consul() {
return Result.ok("consul端口:" + serverPort);
}

}      

4、服務消費者,在application.properties檔案配置Consul

server.port=8632

spring.application.name=SPRINGCLOUD-CONSUL-WEB
#consul服務通路的位址
spring.cloud.consul.host=127.0.0.1
#consul服務通路的端口
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.service-name=${spring.application.name}      

5、服務消費者,服務請求

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsulController {
//服務提供者的服務位址
private String serviceUrl = "http://SPRINGCLOUD-CONSUL-CLIENT-SERVICE";

@Autowired
private RestTemplate restTemplate;

@RequestMapping(value="/getConsul", produces = MediaType.APPLICATION_JSON_VALUE)
public Result getConsul() {
Result result = restTemplate.getForObject(serviceUrl + "/consul", Result.class);
return result;
}
}      

6、RestTemplate配置(服務消費者端)

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestConfig {

//@LoadBalanced注解實作負載均衡
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

四、測試服務消費者請求服務提供者的服務
浏覽器打開服務消費的請求位址:
http://127.0.0.1:8632/getConsul

請求傳回的結果:

{
"result": true,
"timestamp": "2021-03-04 15:14:17",
"msg": "操作成功。",
"datas": "consul端口:8631"
}      

五、Linux yum安裝Consul,Linux yum安裝consul

1、安裝yum-utils

yum install -y yum-utils      

2、配置consul的下載下傳倉庫:

yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo      

必須要有此步,不然直接安裝會因為在預設倉庫找不到,導緻安裝失敗:

[root@host-14 bin]# yum -y install consul

已加載插件:fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

沒有可用軟體包 consul。

錯誤:無須任何處理

3、Linux yum安裝consul(consul-1.9.3-1.x86_64.rpm),106M,下載下傳很慢

sudo yum -y install consul      

安裝成功:

Running transaction

正在安裝 : consul-1.9.3-1.x86_64

驗證中 : consul-1.9.3-1.x86_64

已安裝:

consul.x86_64 0:1.9.3-1

完畢!

4、安裝完成後,consul檢查版本号

consul -v      

[root@host-14 bin]# consul -v

5、Linux啟動consul:

最簡單的啟動(背景管理不能通路,沒啟動ui):

consul agent -dev      

啟動2(建議使用這個啟動。0.0.0.0表示不綁定用戶端IP位址,不然隻能使用特定的IP通路):

consul agent -dev -ui -node=consul-dev-14 -client=0.0.0.0      

啟動3:綁定client位址(Linux不能使用consul kv put my/aa aa指令插入資料,因為127.0.0.1通路不了)

mkdir -p /java/data/consul
consul agent -dev -ui -data-dir=/java/data/consul -node=consul-dev-14 -client=192.168.170.14      

consul綁定client位址後出錯:dial tcp 127.0.0.1:8500: connect: connection refused

[root@host-14 ~]# consul kv put xxx/config/num 1

Error! Failed writing data: Put "http://127.0.0.1:8500/v1/kv/xxx/config/num": dial tcp 127.0.0.1:8500: connect: connection refused

常用參數:

-http-port 預設是8500
-client:用戶端模式,http dns,預設127.0.0.1,回環令牌網址
-data-dir:狀态資料存儲檔案夾,所有的節點都需要。檔案夾位置需要不收consul節點重新開機影響,必須能夠使用作業系統檔案鎖,unix-based系統下,檔案夾檔案權限為0600,注意做好賬戶權限控制,
-dev:開發模式,去掉所有持久化選項,記憶體伺服器模式。
-ui:内置web ui界面。
-bind:綁定的内部通訊位址,預設0.0.0.0,即,所有的本地位址,會将第一個可用的ip位址散播到叢集中,如果有多個可用的ipv4,則consul啟動報錯。[::]ipv6,TCP UDP協定,相同的端口。防火牆配置。
-bootstrap:啟動模式,此模式下,節點可以選舉自己為leader,一個資料中心隻能有一個此模式啟動的節點。機群啟動後,新啟動的節點不建議使用這種模式。
-bootstrap-expect:設定一個資料中心需要的服務節點數,可以不設定,設定的數字必須和實際的服務節點數比對。consul會等待直到資料中心下的服務節點滿足設定才會啟動叢集服務。初始化leader選舉,不能和bootstr- ap混用。必須配合-server配置。      

6、測試consul啟動,打開Linux新視窗,輸入請求指令

curl localhost:8500/v1/catalog/nodes      

或者浏覽器打開(注意:背景管理不相容IE浏覽器,請使用Chrome浏覽器打開):

http://192.168.170.14:8500/      

或者檢視程序:

ps -ef | grep consul      

傳回結果:

[root@host-14 ~]# curl localhost:8500/v1/catalog/nodes

[

{

"ID": "914be537-f613-27a4-497a-2e7f9706f50c",

"Node": "host-14",

"Address": "127.0.0.1",

"Datacenter": "dc1",

"TaggedAddresses": {

"lan": "127.0.0.1",

"lan_ipv4": "127.0.0.1",

"wan": "127.0.0.1",

"wan_ipv4": "127.0.0.1"

},

"Meta": {

"consul-network-segment": ""

"CreateIndex": 11,

"ModifyIndex": 13

}

]

7、關閉Consul

consul leave      

或者

kill -9 PID(Consul程序ID)      

成功關閉結果:

[root@host-14 ~]# consul leave

Graceful leave complete

六、Consul使用KV指令

1、增加資料

consul kv put xxx/config/num 1      

響應結果:

Success! Data written to: xxx/config/num

curl 192.168.170.14:8500/v1/kv/xxx/aa

覆寫之前的鍵增加(即修改):

consul kv put xxx/config/num 20      

增加字元串資料

consul kv put xxx/config/str thisIsString      

2、查詢資料

consul kv get xxx/config/num      

查詢資料(詳情)

consul kv get -detailed xxx/config/num      

查詢所有鍵資料

consul kv get -recurse      

3、删除資料

consul kv delete xxx/config/str      

删除所有以xxx開頭的鍵資料:

consul kv delete -recurse xxx      

4、修改已經存在的資料,就是使用新資料覆寫之前的鍵

consul kv put xxx/config/num 30      

七、Consul常用option選項指令

-bootstrap:啟動模式,此模式下,節點可以選舉自己為leader,一個資料中心隻能有一個此模式啟動的節點。機群啟動後,新啟動的節點不建議使用這種模式。
-bootstrap-expect:設定一個資料中心需要的服務節點數,可以不設定,設定的數字必須和實際的服務節點數比對。consul會等待直到資料中心下的服務節點滿足設定才會啟動叢集服務。初始化leader選舉,不能和bootstr- ap混用。必須配合-server配置。
-bind:綁定的内部通訊位址,預設0.0.0.0,即,所有的本地位址,會将第一個可用的ip位址散播到叢集中,如果有多個可用的ipv4,則consul啟動報錯。[::]ipv6,TCP UDP協定,相同的端口。防火牆配置。
-client:用戶端模式,http dns,預設127.0.0.1,回環令牌網址
-config-file:配置檔案位置
-config-dir:配置檔案所在檔案夾,會加載其下所有配置檔案,.json或者.hcl檔案,加載順序為字母表順序;可用配置多個此配置,進而加載多個檔案夾,子檔案夾的配置不會被加載。
-config-format:配置檔案格式,配置了,則加載相應個是的檔案。不配置,則consul自動識别。
-data-dir:狀态資料存儲檔案夾,所有的節點都需要。檔案夾位置需要不收consul節點重新開機影響,必須能夠使用作業系統檔案鎖,unix-based系統下,檔案夾檔案權限為0600,注意做好賬戶權限控制,
-datacenter:資料中心名稱,預設dc1,一個資料中心的所有節點都必須在一個LAN中。
-dev:開發模式,去掉所有持久化選項,記憶體伺服器模式。
-disable-host-node-id:不使用host資訊生成node ID,适用于同一台伺服器部署多個執行個體用于測試的情況。随機生成nodeID
-dns-port:v7.0以後,自定義dns 端口,覆寫預設8600
-enable-script-checks:是否允許使用腳本進行健康檢查,預設false,最好配置enable acl
-encrypt:consul網絡通訊加密key,base64加密,16比特;consul keygen産生。叢集中的每個執行個體必須提供相同的,隻需提供一次,然後會儲存到資料檔案。重新開機自動加載。consul節點啟動後提供,會被忽略。
-hcl:添加hcl格式配置,和已有的配置合并。可以使用多個此配置。
-http-port:http api端口,覆寫預設的8500。适用于雲環境指定。
-log-file:日志記錄檔案,如果沒有提供檔案名,則預設Consul-時間戳.log
-log-level:日志級别,預設info,包含:trace,debug,info,warn,err;consul monitor監控
-log-rotate-bytes:新日志檔案生成大小門檻值。
-log-rotate-rotation:新日志生成時間門檻值
-join:需要加入的其它節點位址,可以多次使用,加入多個節點。
-retry-join:會進行加入重試,适用于認定加入節點最終會正常的情況。ipv4,ipv6,dns
-retry-interval:上述,重試間隔,預設30s
-retry-max:重試次數,預設0,無限次重試
-join-wan, -retry-join-wan, -retry-interval-wan, -retry-max-wan
-node:節點名稱,預設主機名
-node-id:節點ID,
-pid-file:consul 存儲 pid 的檔案位置,用于主動發信号。如停止節點,重載配置等。
-protocol:使用的協定,更新時使用。consul -v檢視協定版本
-raft-protocol:使用raft協定版本,預設3
-raft-snapshot-threshold:raft執行快照,送出次數門檻值。一般不需要設定,io密集型應用可以調高。避免所有的節點同一時間快照。此值過大,會造成相應日志檔案變大,節點重新開機恢複會耗費更長時間。1.1.0後,預設1- 6384,之前8192.
-raft-snapshot-interval:執行快照間隔,影響類似上個配置,1.1.0後預設30s,之前5s。
-rejoin:節點會嘗試重新加入叢集。
-server:服務端節點模式。
-server-port:服務端RPC端口,v1.2.2後提供。
-non-voting-server:服務節點不參與選舉,接受日志複制,用于橫向擴充,服務查詢請求。(類比zookeeper 觀察者節點)
-syslog:linux OSX系統,配置日志輸出到系統日志。
-ui:内置web ui界面。
-ui-dir:web ui 資源檔案夾,使用此配置,則不需也不能使用再-ui配置      
SpringCloud consul安裝和使用,Windows Consul安裝和使用,Java consul服務中心安裝和使用

(時間寶貴,分享不易,捐贈回饋,^_^)

今天越懶,明天要做的事越多。

繼續閱讀