Spring Cloud 服务注册和服务发现-Eureka 的服务认证和集群
2017-08-25 00:00
801 查看
一、 Eureka 的服务认证
1、 服务端添加依赖<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、 服务端添加配置
# 服务认证
security.basic.enabled=true
security.user.name=hlian
security.user.password=123456
3、 修改服务端和客户端的配置
eureka.client.serviceUrl.defaultZone=http://hlian:123456@localhost:8761/eureka/
建议:
能在内网的,尽量在内网,这样既可以保障安全,也能降低复杂度。
二、 Eureka 的集群
说明:启动3 个注册中心,我们将eureka1、eureka2、eureka3各自都将serviceUrl 指向另外两个
节点,即是eureka1、eureka2、eureka3 是两两互相注册的。
CentOS 步骤:
1、设置hosts:vi /etc/hosts
192.168.1.160 eureka0
192.168.1.161 eureka1
192.168.1.162 eureka2
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=eureka1
1、发布应用包:
/opt/eureka/
[root@eureka1 eureka]# ls
hlian-spring-cloud-service-05-0.0.1-SNAPSHOT.jar running.sh
执行脚本: running.sh
#!/bin/sh ## chang here SERVICE_DIR=/opt/eureka SERVICE_NAME=hlian-spring-cloud-service-05-0.0.1-SNAPSHOT SPRING_PROFILES_ACTIVE=prd ## java env export JAVA_HOME=/opt/jre/jre1.8.0_144 export JRE_HOME=${JAVA_HOME} case "$1" in start) procedure=`ps -ef | grep -w "${SERVICE_NAME}" |grep -w "java"| grep -v "grep" | awk '{print $2}'` if [ "${procedure}" = "" ]; then echo "start ..." if [ "$2" == "0" ]; then exec nohup ${JRE_HOME}/bin/java -Xms128m -Xmx512m -jar ${SERVICE_DIR}/${SERVICE_NAME}.jar --spring.profiles.active=prd --server.port=8761 --server.hostname=eureka0 --server.hostname1=eureka1 --server.hostname2=eureka2 >/dev/null 2>&1 & echo "start success" fi if [ "$2" == "1" ]; then exec nohup ${JRE_HOME}/bin/java -Xms128m -Xmx512m -jar ${SERVICE_DIR}/${SERVICE_NAME}.jar --spring.profiles.active=prd --server.port=8761 --server.hostname=eureka1 --server.hostname1=eureka0 --server.hostname2=eureka2 >/dev/null 2>&1 & echo "start success" fi if [ "$2" == "2" ]; then exec nohup ${JRE_HOME}/bin/java -Xms128m -Xmx512m -jar ${SERVICE_DIR}/${SERVICE_NAME}.jar --spring.profiles.active=prd --server.port=8761 --server.hostname=eureka2 --server.hostname1=eureka1 --server.hostname2=eureka0 >/dev/null 2>&1 & echo "start success" fi else echo "${SERVICE_NAME} is start" fi ;; stop) procedure=`ps -ef | grep -w "${SERVICE_NAME}" |grep -w "java"| grep -v "grep" | awk '{print $2}'` if [ "${procedure}" = "" ]; then echo "${SERVICE_NAME} is stop" else kill ${procedure} sleep 1 argprocedure=`ps -ef | grep -w "${SERVICE_NAME}" |grep -w "java"| grep -v "grep" | awk '{print $2}'` if [ "${argprocedure}" = "" ]; then echo "${SERVICE_NAME} stop success" else kill -9 ${argprocedure} echo "${SERVICE_NAME} stop error" fi fi ;; restart) $0 stop sleep 1 $0 start $2 ;; *) echo "usage: $0 [start|stop|restart] [0|1|2]" ;; esac
3、启动
分别在主机: eureka0、eureka1、eureka2 启动应用
running.sh start 0
running.sh start 1
running.sh start 2
4、打开防火墙
vi /etc/sysconfig/iptables
service iptables restart
[root@eureka1 eureka]# cat /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8761 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
Windows 步骤:
1、 设置hosts:C:\Windows\System32\drivers\etc\hosts;# Cluster hosts
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3
2、 修改配置
每个服务都需要相应的修改,服务-01
spring.application.name=spring-cloud-server-01
eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://hlian:123456@eureka2:8762/eureka/,http://
hlian:123456@eureka3:8763/eureka/
同理:服务-02,服务-03 都做相对应的修改
3、 配置修改
#这里是为了测试,生产应该保持默认值:30s
eureka.instance.lease-renewal-interval-in-seconds=5
#剔除失效服务的检测时间,默认值:60000,即60s
eureka.server.eviction-interval-timer-in-ms=5000
三、 Eureka 常用配置
a) Eureka 的服务监控
添加依赖:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
注意:服务端已经存在该依赖,可以不用添加。
# 状态页面自定义访问链接
eureka.instance.status-page-url-path=/info
# info 自定义
info.build.name=@project.name@
info.build.description=@project.description@
info.build.groupId=@project.groupId@
info.build.artifact=@project.artifactId@
info.build.version=@project.version@
注意:
1、 服务监控依赖于 spring-boot-starter-actuator 这个jar
2、 注意 management.context-path 的定义
3、 注意 server.servlet-path 的定义
4、 可以直接定义 eureka.instance.status-page-url=http://www.baidu.com,这个优先级高
b) Eureka 客户端的常用配置
1、 自定义实例 IDeureka.instance.instanceId=${spring.application.name}:${random.value}
说明:random.value 是随机值,可以确保唯一性。Spring Cloud 里面要求实例 ID 是唯一的
2、 显示 IP 地址
eureka.instance.prefer-ip-address=true
3、 设置拉取服务注册信息时间,默认 60s
eureka.client.registry-fetch-interval-seconds=30
说明:如果要迅速获取服务注册状态,可以缩小该值。比如:网关接口启动需要马上调用
4、 指定续约更新频率,默认是 30s
eureka.instance.lease-renewal-interval-in-seconds=15
说明:可以解决 Eureka 注册服务慢的问题,注意:在生产中,最好坚持使用默认值,因为在服务器内部有一些计算,他们对续约做出假设。
6、设置过期剔除时间,默认 90s
eureka.instance.lease-expiration-duration-in-seconds=45
说明:表示 eureka server 至上一次收到 client 的心跳之后,等待下一次心跳的超时时间。
如果该值太大,则很可能将流量转发过去的时候,该 instance 已经不存活了。
如果该值设置太小了,则 instance 则很可能因为临时的网络抖动而被摘除掉。
该值至少应该大于 leaseRenewalIntervalInSeconds。
c) Eureka 服务端的配置
1、 指定环境eureka.environment=dev
2、 指定数据中心
eureka.datacenter=roncoo
说明:如果配置-Deureka.datacenter=cloud,eureka 会知道是在 AWS 云上
3、关闭自我保护模式
eureka.server.enable-self-preservation=false
说明:关闭了面板会出现提示。
4、设置清理无效节点的时间间隔,默认 60000,即是 60s
eureka.server.eviction-interval-timer-in-ms=30000
相关文章推荐
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- 服务注册和服务发现-Eureka的服务认证和集群--Spring Cloud Netflix
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- Spring Cloud 服务的注册与发现(Eureka)
- 最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
- Spring Cloud学习:01服务注册及发现(Eureka)
- Spring Cloud(一)服务的注册与发现(Eureka)
- Spring cloud 系列之 服务注册与发现 Eureka
- SpringCloud 微服务注册与发现 – 为Eureka Server添加用户认证
- Spring Cloud学习---服务注册与发现(Eureka)
- SpringCloud构建微服务入门架构(二)服务注册与发现Eureka集群搭建
- 服务注册与发现-spring cloud之eureka
- Spring Cloud 服务注册发现服务器 Eureka
- Spring Cloud(一)服务的注册与发现(Eureka)
- Spring Cloud 服务注册与发现 [ eureka ]
- Spring Cloud架构教程 (九)服务注册与发现(Eureka、Consul)
- 干货实操:微服务Spring Cloud 系列(二) Eureka服务发现与服务注册(strand alone)
- Spring Cloud(一)服务的注册与发现(Eureka)