微服務之springCloud和docker-Eureka(一)

來源:互聯網
上載者:User

標籤:col   控制   repo   bdc   分享圖片   sch   exec   cat   jar   

前言

本文記錄怎麼搭建服務註冊中心eureka,然後打包成docker鏡像,用docker swarm部署eureka叢集

1、環境
spring boot 1.5.1.RELEASE,是開箱即用,提供一系列大型項目常用的非功能性特徵的快速度開發工具 spring boot官網
spring cloud Camden SR5,Spring Cloud 為開發人員提供了在分布式系統(如組態管理、服務發現、斷路器、智能路由、微代理、控制匯流排、一次性 Token、全域鎖、決策競選、分布式會話和叢集狀態)操作的開發工具集 spring cloud官網
開發工具 jdk1.8/IntelliJ idea2016/maven3.3
2、建立父空項目 microservice-spring-cloud

3、父項目的pom.xml檔案

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.4.2.RELEASE</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <groupId>com.jacky</groupId>    <artifactId>microservice-spring-cloud</artifactId>    <packaging>pom</packaging>    <version>1.0-SNAPSHOT</version>    <modules>        <module>microservice-discovery-eureka-ha</module>    </modules>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>        <docker.image.prefix>jacky</docker.image.prefix><!--配置鏡像倉庫的屬性-->        <docker.repostory>192.168.6.132:5000</docker.repostory><!--配置鏡像倉庫的對應的地址與連接埠-->    </properties>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>Camden.SR3</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>        <!--添加利用maven外掛程式構建docker鏡像的外掛程式依賴-->        <pluginManagement>            <plugins>                <plugin>                    <groupId>com.spotify</groupId>                    <artifactId>docker-maven-plugin</artifactId>                    <version>0.4.13</version>                </plugin>            </plugins>        </pluginManagement>    </build></project>

4、建立子項目microservice-discovery-eureka-ha

5、microservice-discovery-eureka-ha工程的pom.xml檔案

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>microservice-spring-cloud</artifactId>        <groupId>com.jacky</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>microservice-discovery-eureka-ha</artifactId>    <packaging>jar</packaging>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka-server</artifactId>        </dependency>       <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-security</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>com.spotify</groupId>                <artifactId>docker-maven-plugin</artifactId>                <executions>                    <!--設定在執行maven 的install時構建鏡像-->                    <execution>                        <id>build-image</id>                        <phase>install</phase>                        <goals>                            <goal>build</goal>                        </goals>                    </execution>                </executions>                <configuration>                    <!--安裝了docker的主機,並且開啟了api remote介面設定-->                    <dockerHost>http://192.168.6.130:5678</dockerHost>                    <pushImage>true</pushImage><!--設定上傳鏡像到私人倉庫,需要docker設定指定私人倉庫地址-->                    <!--鏡像名稱-->                    <imageName>${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>                    <!--鏡像的基礎版本-->                    <baseImage>java:openjdk-8-jdk-alpine</baseImage>                    <!--鏡像啟動參數-->                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>                    <resources>                        <resource>                            <targetPath>/</targetPath>                            <directory>${project.build.directory}</directory>                            <include>${project.build.finalName}.jar</include>                        </resource>                    </resources>                </configuration>            </plugin>        </plugins>    </build></project>

5、microservice-discovery-eureka-ha工程的application.yml檔案

spring:  application:    name: EUREKA-HAsecurity:  basic:    enabled: true  user:    name: jacky    password: admin---server:  port: 8761spring:  profiles: peer1eureka:  instance:    hostname: peer1        #Eureka執行個體的主機名稱    prefer-ip-address: true    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}  client:    serviceUrl:      defaultZone: http://jacky:[email protected]:8762/eureka/,http://jacky:[email protected]:8763/eureka/  #Eureka節點相互註冊      register-with-eureka: true---server:  port: 8762spring:  profiles: peer2eureka:  instance:    hostname: peer2      #Eureka執行個體的主機名稱    prefer-ip-address: true    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}  client:    serviceUrl:      defaultZone: http://jacky:[email protected]:8761/eureka/,http://jacky:[email protected]:8763/eureka/      register-with-eureka: true---server:  port: 8763spring:  profiles: peer3eureka:  instance:    hostname: peer3    #Eureka執行個體的主機名稱    prefer-ip-address: true    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}  client:    serviceUrl:      defaultZone: http://jacky:[email protected]:8761/eureka/,http://jacky:[email protected]:8762/eureka/      register-with-eureka: true

6、建立EurekaHaApplication.java檔案

package com.jacky.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class EurekaHaApplication {  public static void main(String[] args) {    SpringApplication.run(EurekaHaApplication.class, args);  }}

7、在父目錄下建立docker-compose.yml檔案

version: "3"services:  peer1:      # 預設情況下,其他服務可以使用服務名稱串連到該服務。因此,對於eurekaService1的節點,它需要串連http://eurekaService2/3:951X/eureka/,因此需要配置該服務的名稱是eurekaService1。    image: 192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT    deploy:      replicas: 1   #定義 replicated 模式的服務的複本數量      update_config:        parallelism: 1    #每次更新複本數量        delay: 2s       #每次更新間隔      restart_policy:        condition: on-failure     #定義服務的重啟條件    networks:      - eureka-net    ports:      - "8761:8761"    environment:      - spring.profiles.active=peer1  peer2:    # 高可用eureka註冊節點2    image: 192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT    deploy:      replicas: 1   #定義 replicated 模式的服務的複本數量      update_config:        parallelism: 1    #每次更新複本數量        delay: 2s       #每次更新間隔      restart_policy:        condition: on-failure     #定義服務的重啟條件    networks:      - eureka-net    ports:      - "8762:8762"    environment:      - spring.profiles.active=peer2  peer3:    # 高可用eureka註冊節點3    image: 192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT    deploy:      replicas: 1   #定義 replicated 模式的服務的複本數量      update_config:        parallelism: 1    #每次更新複本數量        delay: 2s       #每次更新間隔      restart_policy:        condition: on-failure     #定義服務的重啟條件    networks:      - eureka-net    ports:      - "8763:8763"    environment:      - spring.profiles.active=peer3networks:  eureka-net:            #網路名稱    driver: overlay

8、打包

雙擊install

9、在192.168.6.130機器上查看鏡像

表示上傳成功

10、把的docker-compose.yml檔案上傳到擁有swarm環境下,執行命令如下

[[email protected] docker-compose]# docker stack deploy -c docker-compose.yml eurekaCreating service eureka_peer2Creating service eureka_peer3Creating service eureka_peer1[[email protected] docker-compose]# docker stack ps eurekaID            NAME            IMAGE                                                                   NODE             DESIRED STATE  CURRENT STATE           ERROR  PORTSnjhk2gkh7b6r  eureka_peer1.1  192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT  node3.jacky.com  Running        Running 55 seconds ago         y5xwabq42zx4  eureka_peer3.1  192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT  node3.jacky.com  Running        Running 55 seconds ago         468xoiu6lv6l  eureka_peer2.1  192.168.6.132:5000/jacky/microservice-discovery-eureka-ha:1.0-SNAPSHOT  node2.jacky.com  Running        Running 57 seconds ago

說明eureka叢集部署成功

微服務之springCloud和docker-Eureka(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.