做一个高可用的Eureka教程二(springboot)
接着上次的文章,
其实部署Eureka是需要多台主机的,在这里我们只是实验,因此可以修高配置文件模拟出这种效果linux是etc/hosts Windows是C;\windows\System32\drivers\etc\hosts
修改方式像这样(我是Linux),添加一个主机名,像我就是localhost和kali 2个主机名
添加pop依赖
这个是我们在访问Eureka时的帐号密码认证
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
然后我们修改yml配置文件
spring:
application:
name: demo-cloud-Eureka-ha
security:
user:
name: admin
passward: admin
eureka:
client:
service-url:
defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@kali:8762/eureka
---
spring:
profiles: localhost
server:
port: 8761
eureka:
instance:
hostname: localhost
---
spring:
profiles: kali
server:
port: 8762
eureka:
instance:
hostname: kali
解释下这个配置
security:
user:
name: admin
passward: admin
这是设置登录时帐号密码
spring:
profiles: kali
这个 是主机名
—是分开的意思将代码分为3段,第一段没有知道spring.profiles,所以是对全部配置有效
第二段在主机名设置为localhost时才有效。
http://admin:admin@localhost:8761/eureka/是添加了帐号密码认证后的注册UML
如果出现拒绝连接问题并且帐号密码正确进不去,说明你的springboot版本过高,需要在启动类里加一下代码:
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.anyRequest()
.authenticated()
.and()
.httpBasic();
}
}
版本太高毛病其实挺多的,比较建议降低版本。
结果是这样正常
、
登录后
微服务中的UML也需要修改为http://admin:admin@localhost:8761/eureka/,http://admin:admin@kali:8762/eureka
在微服务中我们可以通过微服务定义元数据,Eureka是可以查询的。
微服务中也可以通过Eureka获得另一个微服务状态
@RequestMapping("/user-instance")
public List<ServiceInstance> showIndo(){
return this.dis.getInstances("demo-cloud-user");//另一个微服务的id
}
Eureka的高可用构造方式就是通过这样做成的,不过现实中我们使用的服务器,而且构造数目要比这个例子多很多。
更多推荐
所有评论(0)