SpringCloud学习之路(三)-Eureka服务配置

本文详细介绍了如何使用Eureka搭建微服务注册中心,并实现客户端注册、服务发现、安全配置、集群部署和服务发布等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://blog.youkuaiyun.com/hsrlzg/article/details/79388121

在之前的项目中,我们可以看到我们客户端要记录大量的地址信息,而且无法确定某个服务是否可用。所以我们启用Eureka注册中心来统一管理微服务,新建一个模块microcloud-eureka-7001:


里面包含pom.xml和配置文件application.yml以及启动类Eureka_7001_StartSpringCloudApplication.java

pom.xml


   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <parent>
  6. <groupId>com.jmx </groupId>
  7. <artifactId>microcloud </artifactId>
  8. <version>0.0.1 </version>
  9. </parent>
  10. <groupId>com.jmx </groupId>
  11. <artifactId>microcloud-eureka-7001 </artifactId>
  12. <version>0.0.1 </version>
  13. <name>microcloud-eureka-7001 </name>
  14. <url>http://maven.apache.org </url>
  15. <properties>
  16. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.cloud </groupId>
  21. <artifactId>spring-cloud-starter-eureka-server </artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.cloud </groupId>
  25. <artifactId>spring-cloud-starter-config </artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot </groupId>
  29. <artifactId>spring-boot-starter-jetty </artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.boot </groupId>
  33. <artifactId>spring-boot-starter-web </artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot </groupId>
  37. <artifactId>spring-boot-starter-test </artifactId>
  38. <scope>test </scope>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.springframework </groupId>
  42. <artifactId>springloaded </artifactId>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework.boot </groupId>
  46. <artifactId>spring-boot-devtools </artifactId>
  47. </dependency>
  48. </dependencies>
  49. </project>

application.yml


   
  1. server:
  2. port: 7001
  3. eureka:
  4. instance: #定义Eureka实例
  5. hostname: eureka-7001.com #Eureka实例所在的主机名
  6. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  7. client:
  8. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  9. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true

Eureka_7001_StartSpringCloudApplication.java


   
  1. package com.jmx.microcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. /**程序主类
  6. * @author JMX
  7. *
  8. */
  9. @SpringBootApplication
  10. @EnableEurekaServer
  11. public class Eureka_7001_StartSpringCloudApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(Eureka_7001_StartSpringCloudApplication.class, args);
  14. }
  15. }

同样的,我们在C:\Windows\System32\drivers\etc路径下的hosts里最后面添加地址用于模拟Eureka注册中心

127.0.0.1   eureka-7001.com #Eureka注册中心
   

启动启动类,浏览器输入http://eureka-7001.com:7001/


我们的Eureka注册中心就配置好了.

2.在我们的微服务中注册成Eureka的客户端,修改microcloud-provider-dept-8001的pom.xml,添加Eureka的客户端相关依赖

pom.xml


   
  1. <!-- Eureka服务-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-eureka</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-config</artifactId>
  9. </dependency>

修改application.yml配置文件添加客户端相关配置


   
  1. server:
  2. port: 8001
  3. eureka:
  4. client: #客户端进行Eureka注册的配置
  5. service-url:
  6. defaultZone: http://eureka-7001.com:7001/eureka/
  7. mybatis:
  8. config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  9. type-aliases-package: com.jmx.vo # 定义所有操作类的别名所在包
  10. mapper-locations: # 所有的mapper映射文件
  11. - classpath:mybatis/mapper/**/*.xml
  12. spring:
  13. datasource:
  14. type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
  15. driver-class-name: org.gjt.mm.mysql.Driver # 配置MySQL的驱动程序类
  16. url: jdbc:mysql://localhost:3307/jmx8001?useUnicode=true&characterEncoding=utf-8 # 数据库连接地址
  17. username: root # 数据库用户名
  18. password: 123456 # 数据库连接密码
  19. dbcp2: # 进行数据库连接池的配置
  20. min-idle: 5 # 数据库连接池的最小维持连接数
  21. initial-size: 5 # 初始化提供的连接数
  22. max-total: 5 # 最大的连接数
  23. max-wait-millis: 200 # 等待连接获取的最大超时时间
  24. application:
  25. name: provider-8001 # Eureka注册中心服务名

修改Dept_8001_StartSpringCloudApplication.java,在启动类添加@EnableEurekaClient注解


   
  1. package com.jmx.microcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  5. /**程序主类
  6. * @author JMX
  7. *
  8. */
  9. @SpringBootApplication
  10. @EnableEurekaClient
  11. public class Dept_8001_StartSpringCloudApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(Dept_8001_StartSpringCloudApplication.class, args);
  14. }
  15. }

启动该主类,浏览器输入http://eureka-7001.com:7001/


这样我们就把8001端口这个微服务注册到了Eureka注册中心了.

3.Eureka微服务信息,上面那张图看出我们的微服务是主机名拼凑而成的连接,这样在应用环境是非常不友好的,应该是IP或者域名

结合起来,我们先配置资源文件以及导入资源插件.打开我们的microcloud的pom.xml

pom.xml


   
  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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0 </modelVersion>
  4. <groupId>com.jmx </groupId>
  5. <artifactId>microcloud </artifactId>
  6. <version>0.0.1 </version>
  7. <packaging>pom </packaging>
  8. <name>microcloud </name>
  9. <url>http://maven.apache.org </url>
  10. <properties>
  11. <jdk.version>1.8 </jdk.version>
  12. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  13. </properties>
  14. <dependencyManagement>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.jmx </groupId>
  18. <artifactId>microcloud-api </artifactId>
  19. <version>0.0.1 </version>
  20. </dependency>
  21. <dependency>
  22. <groupId>com.jmx </groupId>
  23. <artifactId>microcloud-security </artifactId>
  24. <version>0.0.1 </version>
  25. </dependency>
  26. <dependency> <!-- 进行SpringCloud依赖包的导入处理 -->
  27. <groupId>org.springframework.cloud </groupId>
  28. <artifactId>spring-cloud-dependencies </artifactId>
  29. <version>Dalston.SR1 </version>
  30. <type>pom </type>
  31. <scope>import </scope>
  32. </dependency>
  33. <dependency> <!-- SpringCloud离不开SpringBoot,所以必须要配置此依赖包 -->
  34. <groupId>org.springframework.boot </groupId>
  35. <artifactId>spring-boot-dependencies </artifactId>
  36. <version>1.5.4.RELEASE </version>
  37. <type>pom </type>
  38. <scope>import </scope>
  39. </dependency>
  40. <dependency>
  41. <groupId>mysql </groupId>
  42. <artifactId>mysql-connector-java </artifactId>
  43. <version>5.0.4 </version>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.alibaba </groupId>
  47. <artifactId>druid </artifactId>
  48. <version>1.0.31 </version>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.mybatis.spring.boot </groupId>
  52. <artifactId>mybatis-spring-boot-starter </artifactId>
  53. <version>1.3.0 </version>
  54. </dependency>
  55. </dependencies>
  56. </dependencyManagement>
  57. <build>
  58. <finalName>microcloud </finalName>
  59. <!-- 配置资源文件 -->
  60. <resources>
  61. <resource>
  62. <directory>src/main/resources </directory>
  63. <filtering>true </filtering>
  64. </resource>
  65. </resources>
  66. <plugins>
  67. <!-- 处理资源插件-->
  68. <plugin>
  69. <groupId>org.apache.maven.plugins </groupId>
  70. <artifactId>maven-resources-plugin </artifactId>
  71. <configuration>
  72. <delimiters>
  73. <delimiter>$ </delimiter>
  74. </delimiters>
  75. </configuration>
  76. </plugin>
  77. <plugin>
  78. <groupId>org.apache.maven.plugins </groupId>
  79. <artifactId>maven-compiler-plugin </artifactId>
  80. <configuration>
  81. <source>${jdk.version} </source> <!-- 源代码使用的开发版本 -->
  82. <target>${jdk.version} </target> <!-- 需要生成的目标class文件的编译版本 -->
  83. <encode>${project.build.sourceEncoding} </encode>
  84. </configuration>
  85. </plugin>
  86. </plugins>
  87. </build>
  88. <modules>
  89. <module>microcloud-api </module>
  90. <module>microcloud-provider-dept-8001 </module>
  91. <module>microcloud-consumer-80 </module>
  92. <module>microcloud-security </module>
  93. <module>microcloud-eureka-7001 </module>
  94. </modules>
  95. </project>

然后修改我们的微服务microcloud-provider-dept-8001的pom.xml导入微服务监控插件


   
  1. <!--微服务监控插件-->
  2. <dependency>
  3. <groupId>org.springframework.boot </groupId>
  4. <artifactId>spring-boot-starter-actuator </artifactId>
  5. </dependency>

然后配置我们微服务的相关信息,修改application.yml


   
  1. server:
  2. port: 8001
  3. eureka:
  4. client: #客户端进行Eureka注册的配置
  5. service-url:
  6. defaultZone: http://eureka-7001.com:7001/eureka/
  7. instance:
  8. instance-id: dept-8001.com #在信息列表时显示主机名称
  9. prefer-ip-address: true #访问路径变为IP地址
  10. info:
  11. app.name: jmx-microcloud
  12. company.name: www.52jmx.com
  13. build.artifactId: $project.artifactId$
  14. build.version: $project.version$

我们启动Eureka以及微服务,浏览器输入http://eureka-7001.com:7001/


双击我们微服务的地址



输入账号密码


我们在application.yml的配置就显示出来了。

4.Eureka发现服务以及相关保护模式,实际项目中我们的Eureka是作为所有微服务的监控处理的,新服务追加的时候应该可以进行注册,某个微服务下线后可以进行清理。(此项如无特殊需求,一般我们都是默认处理)既然是设置Eureka的设置我们便修改microcloud-eureka-7001的application.yml的内容

application.yml


   
  1. server:
  2. port: 7001
  3. eureka:
  4. instance: #定义Eureka实例
  5. hostname: eureka-7001.com #Eureka实例所在的主机名
  6. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  7. client:
  8. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  9. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  10. server:
  11. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  12. enable-self-preservation: false #关闭保护模式

微服务与Eureka注册中心的心跳时间自定义,心跳检测是检测微服务是否宕机的重要手段,我们修改microcloud-provider-dept-8001的application.yml


   
  1. server:
  2. port: 8001
  3. eureka:
  4. client: #客户端进行Eureka注册的配置
  5. service-url:
  6. defaultZone: http://eureka-7001.com:7001/eureka/
  7. instance:
  8. lease-expiration-duration-in-seconds: 5 #设置心跳的周期间隔(默认90s)[如果5s没响应默认服务宕机]
  9. lease-renewal-interval-in-seconds: 2 #设置心跳时间间隔(默认30s)
  10. instance-id: dept-8001.com #在信息列表时显示主机名称
  11. prefer-ip-address: true #访问路径变为IP地址
  12. info:
  13. app.name: jmx-microcloud
  14. company.name: www.52jmx.com
  15. build.artifactId: $project.artifactId$
  16. build.version: $project.version$

微服务端直接通过发现服务获取一些服务信息,我们修改DeptRest.java与启动类Dept_8001_StartSpringCloudApplication.java

DeptRest.java


   
  1. package com.jmx.microcloud.rest;
  2. import java.util.List;
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.cloud.client.discovery.DiscoveryClient;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RequestBody;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import com.jmx.microcloud.service.IDeptService;
  12. import com.jmx.vo.Dept;
  13. @RestController
  14. public class DeptRest {
  15. @Autowired
  16. private IDeptService ideptService;
  17. @Autowired
  18. private DiscoveryClient client; //Eureka的发现服务
  19. @RequestMapping(value= "/dept/get/{id}",method=RequestMethod.GET)
  20. public Dept get(@PathVariable(value="id")int id) {
  21. return ideptService.get(id);
  22. }
  23. @RequestMapping(value= "/dept/add",method=RequestMethod.POST)
  24. public boolean add(@RequestBody Dept dept) {
  25. return ideptService.add(dept);
  26. }
  27. @RequestMapping(value= "/dept/list",method=RequestMethod.GET)
  28. public List<Dept> list() {
  29. return ideptService.list();
  30. }
  31. @RequestMapping( "/dept/sessionid")
  32. public String id(HttpServletRequest request) {
  33. return request.getSession().getId();
  34. }
  35. @RequestMapping( "/dept/discover")
  36. public DiscoveryClient discover() {
  37. //直接返回发现服务信息
  38. return this.client;
  39. }
  40. }

Dept_8001_StartSpringCloudApplication.java


   
  1. package com.jmx.microcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  6. /**程序主类
  7. * @author JMX
  8. *
  9. */
  10. @SpringBootApplication
  11. @EnableEurekaClient
  12. @EnableDiscoveryClient
  13. public class Dept_8001_StartSpringCloudApplication {
  14. public static void main(String[] args) {
  15. SpringApplication.run(Dept_8001_StartSpringCloudApplication.class, args);
  16. }
  17. }

OK了发现服务配置好了启动微服务以及Eureka注册中心,浏览器输入:http://dept-8001.com:8001/dept/discover(我们直接跳过Eureka注册中心进行访问)


5.Eureka注册中心的安全配置,修改microcloud-eureka-7001的pom.xml文件追加SpringSecurity的依赖包,在application.yml里面追加认证账户密码.

pom.xml


   
  1. <!-- 追加Security安全依赖包 -->
  2. <dependency>
  3. <groupId>org.springframework.boot </groupId>
  4. <artifactId>spring-boot-starter-security </artifactId>
  5. </dependency>

application.yml


   
  1. server:
  2. port: 7001
  3. security:
  4. basic:
  5. enabled: true #启用安全处理
  6. user:
  7. name: edmin #用户名
  8. password: jmxhello #密码
  9. eureka:
  10. instance: #定义Eureka实例
  11. hostname: eureka-7001.com #Eureka实例所在的主机名
  12. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  13. client:
  14. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  15. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  16. server:
  17. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  18. enable-self-preservation: false #关闭保护模式

并在微服务microcloud-provider-dept-8001追加Security安全配置,修改application.yml


   
  1. server:
  2. port: 8001
  3. eureka:
  4. client: #客户端进行Eureka注册的配置
  5. service-url:
  6. defaultZone: http://edmin:jmxhello@eureka-7001.com:7001/eureka/
  7. instance:
  8. lease-expiration-duration-in-seconds: 5 #设置心跳的周期间隔(默认90s)[如果5s没响应默认服务宕机]
  9. lease-renewal-interval-in-seconds: 2 #设置心跳时间间隔(默认30s)
  10. instance-id: dept-8001.com #在信息列表时显示主机名称
  11. prefer-ip-address: true #访问路径变为IP地址
  12. info:
  13. app.name: jmx-microcloud
  14. company.name: www.52jmx.com
  15. build.artifactId: $project.artifactId$
  16. build.version: $project.version$
  17. mybatis:
  18. config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  19. type-aliases-package: com.jmx.vo # 定义所有操作类的别名所在包
  20. mapper-locations: # 所有的mapper映射文件
  21. - classpath:mybatis/mapper/**/*.xml
  22. spring:
  23. datasource:
  24. type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
  25. driver-class-name: org.gjt.mm.mysql.Driver # 配置MySQL的驱动程序类
  26. url: jdbc:mysql://localhost:3307/jmx8001?useUnicode=true&characterEncoding=utf-8 # 数据库连接地址
  27. username: root # 数据库用户名
  28. password: 123456 # 数据库连接密码
  29. dbcp2: # 进行数据库连接池的配置
  30. min-idle: 5 # 数据库连接池的最小维持连接数
  31. initial-size: 5 # 初始化提供的连接数
  32. max-total: 5 # 最大的连接数
  33. max-wait-millis: 200 # 等待连接获取的最大超时时间
  34. application:
  35. name: provider-8001 # Eureka注册中心服务名

6.Eureka的集群HA机制,我们既然要做Eureka的集群,那么就会面临多主机的处理,我们修改C:\Windows\System32\drivers\etc路径下的hosts最后添加Eureka集群的模拟地址


   
  1. 127.0.0.1 eureka-7001.com #Eureka注册中心的集群-0
  2. 127.0.0.1 eureka-7002.com #Eureka注册中心的集群-1
  3. 127.0.0.1 eureka-7003.com #Eureka注册中心的集群-2

项目中从microcloud-eureka-7001复制2份改名为microcloud-eureka-7002与microcloud-eureka-7003,如下图所示


修改microcloud-eureka-7001的application.yml

application.yml


   
  1. server:
  2. port: 7001
  3. security:
  4. basic:
  5. enabled: true #启用安全处理
  6. user:
  7. name: edmin #用户名
  8. password: jmxhello #密码
  9. eureka:
  10. instance: #定义Eureka实例
  11. hostname: eureka-7001.com #Eureka实例所在的主机名
  12. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  13. client:
  14. service-url:
  15. defaultZone: http://edmin:jmxhello@eureka-7002.com:7002/eureka,http://edmin:jmxhello@eureka-7003.com:7003/eureka
  16. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  17. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  18. server:
  19. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  20. enable-self-preservation: false #关闭保护模式

接着修改microcloud-eureka-7002与microcloud-eureka-7003的Springboot的启动类以及application.yml的端口号以及客户端注册Eureka地址

microcloud-eureka-7002的启动类Eureka_7002_StartSpringCloudApplication.java与application.yml

Eureka_7002_StartSpringCloudApplication.java


   
  1. package com.jmx.microcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. /**程序主类
  6. * @author JMX
  7. *
  8. */
  9. @SpringBootApplication
  10. @EnableEurekaServer
  11. public class Eureka_7002_StartSpringCloudApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(Eureka_7002_StartSpringCloudApplication.class, args);
  14. }
  15. }

application.yml


   
  1. server:
  2. port: 7002
  3. security:
  4. basic:
  5. enabled: true #启用安全处理
  6. user:
  7. name: edmin #用户名
  8. password: jmxhello #密码
  9. eureka:
  10. instance: #定义Eureka实例
  11. hostname: eureka-7002.com #Eureka实例所在的主机名
  12. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  13. client:
  14. service-url:
  15. defaultZone: http://edmin:jmxhello@eureka-7001.com:7001/eureka,http://edmin:jmxhello@eureka-7003.com:7003/eureka
  16. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  17. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  18. server:
  19. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  20. enable-self-preservation: false #关闭保护模式

microcloud-eureka-7003的启动类Eureka_7003_StartSpringCloudApplication.java与application.yml

Eureka_7003_StartSpringCloudApplication.java


   
  1. package com.jmx.microcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. /**程序主类
  6. * @author JMX
  7. *
  8. */
  9. @SpringBootApplication
  10. @EnableEurekaServer
  11. public class Eureka_7003_StartSpringCloudApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(Eureka_7003_StartSpringCloudApplication.class, args);
  14. }
  15. }

application.yml


   
  1. server:
  2. port: 7003
  3. security:
  4. basic:
  5. enabled: true #启用安全处理
  6. user:
  7. name: edmin #用户名
  8. password: jmxhello #密码
  9. eureka:
  10. instance: #定义Eureka实例
  11. hostname: eureka- 7003.com #Eureka实例所在的主机名
  12. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  13. client:
  14. service-url:
  15. defaultZone: http: //edmin:jmxhello@eureka-7001.com:7001/eureka,http://edmin:jmxhello@eureka-7002.com:7002/eureka
  16. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为 true
  17. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为 true
  18. server:
  19. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认 6000ms)
  20. enable-self-preservation: false #关闭保护模式

把我们的Eureka注册中心的所有服务都启动起来,浏览器分别输入:


   
  1. http://edmin:jmxhello@eureka-7001.com:7001
  2. http://edmin:jmxhello@eureka-7002.com:7002
  3. http://edmin:jmxhello@eureka-7003.com:7003


从上面三幅图里我们看见了我们的Eureka注册中心分别在三台主机上部署成功,成功实现了集群部署.然后我们将微服务注册进去修改microcloud-provider-dept-8001的application.yml添加其他Eureka注册中心的主机地址

application.yml


   
  1. server:
  2. port: 8001
  3. eureka:
  4. client: #客户端进行Eureka注册的配置
  5. service-url:
  6. defaultZone: http://edmin:jmxhello@eureka-7001.com:7001/eureka/,http://edmin:jmxhello@eureka-7002.com:7002/eureka/,http://edmin:jmxhello@eureka-7003.com:7003/eureka/
  7. instance:
  8. lease-expiration-duration-in-seconds: 5 #设置心跳的周期间隔(默认90s)[如果5s没响应默认服务宕机]
  9. lease-renewal-interval-in-seconds: 2 #设置心跳时间间隔(默认30s)
  10. instance-id: dept-8001.com #在信息列表时显示主机名称
  11. prefer-ip-address: true #访问路径变为IP地址
  12. info:
  13. app.name: jmx-microcloud
  14. company.name: www.52jmx.com
  15. build.artifactId: $project.artifactId$
  16. build.version: $project.version$
  17. mybatis:
  18. config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
  19. type-aliases-package: com.jmx.vo # 定义所有操作类的别名所在包
  20. mapper-locations: # 所有的mapper映射文件
  21. - classpath:mybatis/mapper/**/*.xml
  22. spring:
  23. datasource:
  24. type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
  25. driver-class-name: org.gjt.mm.mysql.Driver # 配置MySQL的驱动程序类
  26. url: jdbc:mysql://localhost:3307/jmx8001?useUnicode=true&characterEncoding=utf-8 # 数据库连接地址
  27. username: root # 数据库用户名
  28. password: 123456 # 数据库连接密码
  29. dbcp2: # 进行数据库连接池的配置
  30. min-idle: 5 # 数据库连接池的最小维持连接数
  31. initial-size: 5 # 初始化提供的连接数
  32. max-total: 5 # 最大的连接数
  33. max-wait-millis: 200 # 等待连接获取的最大超时时间
  34. application:
  35. name: provider-8001 # Eureka注册中心服务名

启动微服务,分别刷新三个端口的Eureka注册中心,然后查看是否注册成功。我们发现三个地址的微服务都已经注册成功




7.Eureka的服务发布,我们需要新增一个microcloud-eureka-server的模块,修改application.yml

application.yml


   
  1. spring:
  2. profiles:
  3. active:
  4. - dev-7001 #设置常用的活动Eureka注册中心
  5. --- #Eureka注册中心7001
  6. spring:
  7. profiles: dev-7001
  8. application:
  9. name: microcloud-eureka-7001
  10. server:
  11. port: 7001
  12. security:
  13. basic:
  14. enabled: true #启用安全处理
  15. user:
  16. name: edmin #用户名
  17. password: jmxhello #密码
  18. eureka:
  19. instance: #定义Eureka实例
  20. hostname: eureka-7001.com #Eureka实例所在的主机名
  21. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  22. client:
  23. service-url:
  24. defaultZone: http://edmin:jmxhello@eureka-7002.com:7002/eureka,http://edmin:jmxhello@eureka-7003.com:7003/eureka
  25. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  26. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  27. server:
  28. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  29. enable-self-preservation: false #关闭保护模式
  30. --- #Eureka注册中心7002
  31. spring:
  32. profiles: dev-7002
  33. application:
  34. name: microcloud-eureka-7002
  35. server:
  36. port: 7002
  37. security:
  38. basic:
  39. enabled: true #启用安全处理
  40. user:
  41. name: edmin #用户名
  42. password: jmxhello #密码
  43. eureka:
  44. instance: #定义Eureka实例
  45. hostname: eureka-7002.com #Eureka实例所在的主机名
  46. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  47. client:
  48. service-url:
  49. defaultZone: http://edmin:jmxhello@eureka-7001.com:7001/eureka,http://edmin:jmxhello@eureka-7003.com:7003/eureka
  50. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  51. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  52. server:
  53. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  54. enable-self-preservation: false #关闭保护模式
  55. --- #Eureka注册中心7003
  56. spring:
  57. profiles: dev-7003
  58. application:
  59. name: microcloud-eureka-7003
  60. server:
  61. port: 7003
  62. security:
  63. basic:
  64. enabled: true #启用安全处理
  65. user:
  66. name: edmin #用户名
  67. password: jmxhello #密码
  68. eureka:
  69. instance: #定义Eureka实例
  70. hostname: eureka-7003.com #Eureka实例所在的主机名
  71. #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它
  72. client:
  73. service-url:
  74. defaultZone: http://edmin:jmxhello@eureka-7001.com:7001/eureka,http://edmin:jmxhello@eureka-7002.com:7002/eureka
  75. register-with-eureka: false #表示是否将自己注册到Eureka Server上,默认为true
  76. fetch-registry: false #表示是否从Eureka Server上获取注册信息,默认为true
  77. server:
  78. eviction-interval-timer-in-ms: 6000 #设置清理的间隔时间(默认6000ms)
  79. enable-self-preservation: false #关闭保护模式

然后在microcloud-eureka-server模块上运行maven的build命令[clean install package]


打包成功我们在microcloud-eureka-server的target目录下有eureka-server.jar包


到此,我们的Eureka注册中心已经完成。

项目Demo:点我下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello_world!

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值