springcloud consul +consul 實現服務註冊及發現
要想利用consul提供的服務實現服務的註冊與發現,我們需要建立consul cluster。在consul方案中,每個提供服務的節點上都要部署和執行consul的agent,所有執行consul agent節點的集合構成consul cluster。
consul agent有兩種執行模式:server和client。這裡的server和client只是consul叢集層面的區分,與搭建在cluster之上的應用服務無關。以server模式執行的consul agent節點用於維護consul叢集的狀態,官方建議每個consul cluster至少有3個或以上的執行在server
mode
我們這裡以安裝三個節點為例,環境配置如下
Centos 下:
兩臺主機:s1:192.168.204.4 s2:192.168.204.5
準備工作
分別下載consul的webui包和consul包。
下載:
wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_web_ui.zip
下載到目錄usr\local下。在usr\local\bin下建立資料夾webui,
在usr\local\bin下進行操作
解壓:unzip consul_0.7.5_web_ui.zip 並把解壓出來的檔案移到
1. mv index.html webui 2. mvstatic webui
firewall-cmd --query-port=8300/tcp查詢埠是開啟firewall-cmd --add-port=8300/tcp 開啟埠
firewall-cmd --add-port=8500/tcp
firewall-cmd --add-port=8301/tcp
啟動consul
1. S1上:
2. S2上:
consul agent -server -bootstrap-expect 2 -data-dir data -node=n2 -bind=192.168.204.5-ui-dir=webui
3. S2上:
consul join 192.168.204.5
4. 訪問埠
如果遇到不能訪問的情況,第一檢測8500埠是否開了。要是還是不行的話,就重新對webui重新解壓,重新開啟服務。
Windows下:
一臺主機,一臺客戶機
S1:10.114.73.24 S2:10.114.72.25
1. 下載consul包
2. 在s1上解壓到一個目錄 如:E:\SpringCloud\consul,s2上解壓到:c:\consul
3. 在s1上的E:\SpringCloud\consul目錄下建立資料夾data ,在s2上的c:\consul下建立資料夾data
5. 在s2上執行consul agent -bind=0.0.0.0 -client=10.114.72.25 -data-dir=data -node=10.114.72.25 -join=10.114.73.24
Springcloud consul 與consul整合
1.準備:主機:10.114.73.24以agent方式啟動 consul
2.eclipse中新建springboot工程,pom.xml中引入:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.主檔案:
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ConsulServerAApplication {
@RequestMapping("/home")
public Object home() {
System.out.println("1111111111111");
return"OK11";
}
public static void main(String[] args) {
SpringApplication.run(ConsulServerAApplication.class,args);
}
}
4.新建application.yml檔案
內容為:
spring:
cloud:
consul:
host: 10.114.72.25
port: 8500
discovery:
enabled: true
instance-id: Users
service-name: getUsers
hostname: 10.114.73.24
application:
name: zwc-service1
5. 最後工程檔案類似於:
6. 啟動 alt+shift+x,b