springcloud记录篇1-eurekaserver

一。 SpringCloud简介

     Spring Cloud对Netflix的多个开源组件封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。
Spring Cloud是一个相对比较新的微服务框架,今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。

Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接

 Spring Cloud版本是使用英国城市来定义一个版本号  Dalston为稳定版本

Component

Camden.SR7

Dalston.SR3

Edgware.M1

Finchley.M2

Finchley.BUILD-SNAPSHOT

spring-cloud-aws

1.1.4.RELEASE

1.2.1.RELEASE

1.2.1.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-bus

1.2.2.RELEASE

1.3.1.RELEASE

1.3.1.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-cli

1.2.4.RELEASE

1.3.4.RELEASE

1.4.0.M1

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-commons

1.1.9.RELEASE

1.2.3.RELEASE

1.3.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-contract

1.0.5.RELEASE

1.1.3.RELEASE

1.2.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-config

1.2.3.RELEASE

1.3.2.RELEASE

1.4.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-netflix

1.2.7.RELEASE

1.3.4.RELEASE

1.4.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-security

1.1.4.RELEASE

1.2.1.RELEASE

1.2.1.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-cloudfoundry

1.0.1.RELEASE

1.1.0.RELEASE

1.1.0.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-consul

1.1.4.RELEASE

1.2.1.RELEASE

1.2.1.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-sleuth

1.1.3.RELEASE

1.2.4.RELEASE

1.3.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-stream

Brooklyn.SR3

Chelsea.SR2

Ditmars.M2

Elmhurst.M1

Elmhurst.BUILD-SNAPSHOT

spring-cloud-zookeeper

1.0.4.RELEASE

1.1.2.RELEASE

1.2.0.M1

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-boot

1.4.5.RELEASE

1.5.4.RELEASE

1.5.6.RELEASE

2.0.0.M3

2.0.0.M3

spring-cloud-task

1.0.3.RELEASE

1.1.2.RELEASE

1.2.0.RELEASE

2.0.0.M1

2.0.0.RELEASE

spring-cloud-vault

 

1.0.2.RELEASE

1.1.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-gateway

 

 

1.0.0.M1

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

二 。启动简单的eurekaserver

  eurekaserver是一个类似于zookeeper的分布式调度中心  用于注册节点和发现节点信息 

 1》准备工作:

   下载 spring开发工具 sts  进入官网(http://projects.spring.io/spring-cloud/) 拉动到网页最下端 页脚栏  Tools点击(https://spring.io/tools)

   下载sts(http://download.springsource.com/release/STS/3.9.0.RELEASE/dist/e4.7/spring-tool-suite-3.9.0.RELEASE-e4.7.0-win32-x86_64.zip)

 2》创建springcloud项目

    包视图 new - spring starter project 

    springcloud记录篇1-eurekaserver_第1张图片

 填写maven的 公司名称 项目名等 

 springcloud记录篇1-eurekaserver_第2张图片

点击下一步 选择Cloud Discory - Eureka Server

 springcloud记录篇1-eurekaserver_第3张图片

 完成创建的项目中 pom.xml自动添加eureka的maven依赖

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.     <modelVersion>4.0.0modelVersion>  
  5.   
  6.     <groupId>cn.etgroupId>  
  7.     <artifactId>eurekapubartifactId>  
  8.     <version>0.0.1-SNAPSHOTversion>  
  9.     <packaging>jarpackaging>  
  10.   
  11.     <name>eurekapubname>  
  12.     <description>Demo project for Spring Bootdescription>  
  13.   
  14.     <parent>  
  15.         <groupId>org.springframework.bootgroupId>  
  16.         <artifactId>spring-boot-starter-parentartifactId>  
  17.         <version>1.5.6.RELEASEversion>  
  18.         <relativePath/>   
  19.     parent>  
  20.   
  21.     <properties>  
  22.         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>  
  23.         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>  
  24.         <java.version>1.7java.version>  
  25.         <spring-cloud.version>Dalston.SR3spring-cloud.version>  
  26.     properties>  
  27.   
  28.     <dependencies>  
  29.         <dependency> #引用eureka  
  30.             <groupId>org.springframework.cloudgroupId>  
  31.             <artifactId>spring-cloud-starter-eurekaartifactId>  
  32.         dependency>  
  33.   
  34.         <dependency>  
  35.             <groupId>org.springframework.bootgroupId>  
  36.             <artifactId>spring-boot-starter-testartifactId>  
  37.             <scope>testscope>  
  38.         dependency>  
  39.         <dependency>   
  40.           <groupId>org.springframework.bootgroupId>  
  41.           <artifactId>spring-boot-actuatorartifactId>  
  42.         dependency>  
  43.     dependencies>  
  44.   
  45.     <dependencyManagement>  
  46.         <dependencies>  
  47.             <dependency>  
  48.                 <groupId>org.springframework.cloudgroupId>  
  49.                 <artifactId>spring-cloud-dependenciesartifactId>  
  50.                 <version>${spring-cloud.version}version>  
  51.                 <type>pomtype>  
  52.                 <scope>importscope>  
  53.             dependency>  
  54.         dependencies>  
  55.     dependencyManagement>  
  56.   
  57.     <build>  
  58.         <plugins>  
  59.             <plugin>  
  60.                 <groupId>org.springframework.bootgroupId>  
  61.                 <artifactId>spring-boot-maven-pluginartifactId>  
  62.             plugin>  
  63.         plugins>  
  64.     build>  
  65.   
  66.   
  67. project>  

 3》创建资源文件

   src/main/resources 下创建application.yml文件 内容如下

 

[html]  view plain  copy
  1. #eureka服务器的启动端口  
  2. server:  
  3.   port: 8761  
  4.     
  5. #eureka的主机名 如果不配置 会从操作系统获取  
  6. eureka:  
  7.   instance:  
  8.     hostname: mymaster  
  9.     preferIpAddress: true  #未配置hostname时 使用本机ip地址作为主机名 ipAddress是ip地址  
  10.     instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
  11.     appname: eurekaserver  #应用程序的名称  
  12.     namespace: myeureka 对外公布地址时的命名空间也就是上下文路径 不设置默认为eureka  
  13.   client:  
  14.     registerWithEureka: false   
  15.     fetchRegistry: false  #是否允许客户端抓取eureka的注册信息  
  16.     serviceUrl:  
  17.       defaultZone: http://mymaster:8761/myeureka/  
  18. security:      
  19.   basic:  
  20.     enabled: false #不启动认证    
  21.         

添加启动类

[html]  view plain  copy
  1. package cn.et;  
  2.   
  3. import java.io.InputStream;  
  4.   
  5. import org.springframework.boot.SpringApplication;  
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  7. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;  
  8. @EnableEurekaServer  //表示启用EurekaServer  
  9. @SpringBootApplication  
  10. public class EurekaServerApplication {  
  11.   
  12.     public static void main(String[] args) {  
  13.         SpringApplication sa=new SpringApplication(EurekaServerApplication.class);  
  14.         sa.run(args);  
  15.     }  
  16. }  

启动后访问 http://localhost:8761  这里管理界面只允许localhost访问 不允许使用ip

springcloud记录篇1-eurekaserver_第4张图片

三。设置eurekaserver权限

   src/main/resources下创建 application.yml文件 添加权限认证 

[html]  view plain  copy
  1. #eureka服务器的启动端口  
  2. server:  
  3.   port: 8761  
  4.     
  5. #eureka的主机名 如果不配置 会从操作系统获取  
  6. eureka:  
  7.   instance:  
  8.     hostname: mymaster  
  9.     preferIpAddress: true  #未配置hostname时 使用本机ip地址作为主机名 ipAddress是ip地址  
  10.     instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
  11.     appname: eurekaserver  
  12.     namespace: myeureka  
  13.   client:  
  14.     registerWithEureka: false   
  15.     fetchRegistry: false  #是否允许客户端抓取eureka的注册信息  
  16.     serviceUrl:  
  17.       defaultZone: http://jiaozi:jiaozi123@mymaster:8761/myeureka/ #这里url上必须带上用户名和密码  
  18. security:      
  19.   basic:  
  20.     enabled: true #启动认证    
  21.   user:  
  22.     name: jiaozi #用户名  
  23.     password: jiaozi123 #密码  
  24.         

maven中添加依赖

[html]  view plain  copy
  1. maven中添加依赖  
  2. <dependency>   
  3.  <groupId>org.springframework.bootgroupId>   
  4.  <artifactId>spring-boot-starter-securityartifactId>   
  5. dependency>  
  6. <dependency>  
  7.   <groupId>org.springframework.securitygroupId>  
  8.   <artifactId>spring-security-webartifactId>  
  9.   <version>4.2.1.RELEASEversion>  
  10. dependency>  

浏览器访问 http://localhost:8761

   

输入 用户名和密码后后 可以看到管理界面

四。eurekaserver高可用

  这里添加 一主一丛

 eurekaserver    本机ip为 192.168.88.20  主机名 mymaster 端口 8761

 eurekabackup  本机ip为 192.168.88.20  主机名 mybackup 端口 8762

hosts文件中添加

[html]  view plain  copy
  1. 192.168.88.20 mymaster  
  2. 192.168.88.20 mybackup  

同上 创建两个eureka server项目 

eurekaserver的application.yml配置 
[html]  view plain  copy
  1. #eureka服务器的启动端口  
  2. server:  
  3.   port: 8761  
  4. spring:  
  5.   application:  
  6.     name:   eurekaserver     
  7. #eureka的主机名 如果不配置 会从操作系统获取  
  8. eureka:  
  9.   instance:  
  10.     hostname: mymaster  #可以通过修改 c:/windows/system32/drivers/etc/hosts文件  
  11.     preferIpAddress: false  #未配置hostname时 使用本机ip地址作为主机名 ipAddress是ip地址  
  12.     instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
  13.     appname: eurekaserver  
  14.     lease-expiration-duration-in-seconds: 5  
  15.     lease-renewal-interval-in-seconds: 5  
  16.   client:  
  17.     registerWithEureka: true #是否允许 注册到Eureka服务器 一般集群环境需要互相注册  
  18.     fetchRegistry: true  #是否允许客户端抓取eureka的注册信息  
  19.     serviceUrl:  
  20.       defaultZone: http://jiaozi:jiaozi123@mymaster:8761/eureka/,http://jiaozi:jiaozi123@mybackup:8762/eureka/  
  21. #启动安全认证  浏览器访问 http://localhost:8761需要输入预定义的用户名和密码  
  22. security:  
  23.   user:  
  24.     name: jiaozi #用户名  
  25.     password: jiaozi123  #密码       
  26.   basic:  
  27.     enabled: true #启动认证    
  28.         
eurekabackup的application.yml配置 

[html]  view plain  copy
  1. #eureka服务器的启动端口  
  2. server:  
  3.   port: 8762  
  4. spring:  
  5.   application:  
  6.     name:   eurekabackup     
  7. #eureka的主机名 如果不配置 会从操作系统获取  
  8. eureka:  
  9.   instance:  
  10.     hostname: mybackup  
  11.     preferIpAddress: false  #未配置hostname时 使用本机ip地址作为主机名 ipAddress是ip地址  
  12.     instance-id: ${spring.cloud.client.ipAddress}:${server.port}  
  13.     appname: eurekabackup  
  14.     lease-expiration-duration-in-seconds: 5  
  15.     lease-renewal-interval-in-seconds: 5  
  16.   client:  
  17.     registerWithEureka: true #是否允许 注册到Eureka服务器 一般集群环境需要互相注册  
  18.     fetchRegistry: true  #是否允许客户端抓取eureka的注册信息  
  19.     serviceUrl:  
  20.       defaultZone: http://jiaozi:jiaozi123@mybackup:8762/eureka/,http://jiaozi:jiaozi123@mymaster:8761/eureka/  
  21. #启动安全认证  浏览器访问 http://localhost:8761需要输入预定义的用户名和密码  
  22. security:  
  23.   user:  
  24.     name: jiaozi #用户名  
  25.     password: jiaozi123  #密码       
  26.   basic:  
  27.     enabled: true #启动认证    
  28.         
两个项目添加 启动 类 分别启动 

查看 http://localhost:8761

springcloud记录篇1-eurekaserver_第5张图片

因为我的设置中 appname设置的不一样导致从 不可用 所以 需要将主从项目的appname设置为相同的名称 

修改eurekabackup配置

[html]  view plain  copy
  1. eureka:  
  2.   instance:  
  3.     hostname: mybackup  
  4.     appname: eurekaserver  
启动

springcloud记录篇1-eurekaserver_第6张图片

查看 http://localhost:8762

springcloud记录篇1-eurekaserver_第7张图片

你可能感兴趣的:(spring,cloud)