前面的章节弄了服务发现和注册。
那么进行Eureka集群配置之前,首先问一下,什么是集群?
比喻:一个手榴弹炸不死它,那么我们拿一捆手榴弹。
那么相当于集群指的是,在不同的机器或者服务器上面配置相同的服务对外做一个超大的运算的整体。
就好比一个入口就一个:www.taobao.com
我只知道这么一个上万台服务器提供。
那么我们为什么要配多个集群呢?
比如我们之前的项目中7001是一个集群
那么我们一个7001配置是不行的,我们多添加几个集群,当我们的微服务越来越多的时候(业主)
那么我们是不是要创新的楼盘,有新的服务器呢?(物业)
1 新建microservicecloud-eureka-7002/microservicecloud-eureka-7003
选择我们的父类工程-》新建一个Maven Moudle
创建7002
7003的步骤和上面一样
2 POM 7002 7003同样
7002 复制 7001项目的POM文件内容
7003同样的操作。
<dependencies>
<!--eureka-server服务端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 修改后立即生效,热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
接下里看一下7001的yml文件内容
难道我3个服务器都叫localhost嘛?
接下来我们要做一个域名的区分和映射。
我每次都是访问的:
localhost:7001
localhost:7002
这样是不是有点不方便?
那么我们做一个域名映射
3 修改映射配置
找到C:\Windows\System32\drivers\etc路径下的hosts文件
修改映射配置添加进hosts文件
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
4 3台eureka服务器的yml配置
7001 yml文件
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
7002 yml文件
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
7003 yml文件
server:
port: 7003
eureka:
instance:
hostname: eureka7003.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
3个yml文件的区别在于
在我们的defultZone中: 可以清楚的看到 如果我们的端口是7002
那么我们要和其他服务器端口交互,可以明显的看到有7001和7003
但是不会自己和自己交互的。
5 microservicecloud-provider-dept-8001微服务发布到上面3台eureka集群配置中
之前我们的8001客户端只交互了一个单机的7001
现在我们新增了服务器7002 和 7003
我们要休息yml配置文件
server:
port: 8001
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml #mybatis所在路径
type-aliases-package: com.atguigu.springcloud.entities #entity别名类
mapper-locations:
- classpath:mybatis/mapper/**/*.xml #mapper映射文件
spring:
application:
name: microservicecloud-dept
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB01
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8001 #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
6 现在项目运行
7001,7002 ,7003,服务器端启动,8001客户端启动
这样很耗费内存资源
之前我们修改了域名的映射
访问端口