1. 程式人生 > >springcloud consul +consul 實現服務註冊及發現

springcloud consul +consul 實現服務註冊及發現

要想利用consul提供的服務實現服務的註冊與發現,我們需要建立consul clusterconsul方案中,每個提供服務的節點上都要部署和執行consulagent,所有執行consul agent節點的集合構成consul cluster


consul agent
有兩種執行模式:serverclient。這裡的serverclient只是consul叢集層面的區分,與搭建在cluster之上的應用服務無關。server模式執行的consul agent節點用於維護consul叢集的狀態,官方建議每個consul cluster至少有3個或以上的執行在server mode

agentclient節點不限。

我們這裡以安裝三個節點為例,環境配置如下

Centos 下:

兩臺主機:s1192.168.204.4   s2:192.168.204.5 

準備工作

分別下載consulwebui包和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 並把解壓出來的檔案移到

webui中。

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 

./dist -dc=dc1

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.24agent方式啟動 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