1. 共有三个服务 discovery服务,domain服务,gateway服务。
discovery服务是用来注册其他服务的,作为服务治理用。
domain服务是主业务服务。
gateway服务是所有服务的一个入口,用来做一些服务的判断和过滤用。
2. 有三台机器分别为192.168.1.1,192.168.1.2,192.168.1.3
3. 三台服务器上分别部署各个服务。
4. domain服务的需要注册到每个disscover服务上。
8002 是 discover服务的端口。
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://192.168.1.1:8002/lcs-discover/eureka/,http://192.168.1.2:8002/lcs-discover/eureka/,http://192.168.1.3:8002/lcs-discover/eureka/
5. 前端访问用nginx,配置如下:
这段在server外面
upstream gateway {
server 192.168.1.1:8001;
server 192.168.1.2:8001;
server 192.168.1.3:8001;
}
这段在server里面
location /lcs-gateway {
proxy_pass http://gateway;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}
6. 前端请求说明:
当一个服务的domain挂掉后,discover会找其他的domain顶替,这个是discover的选举原理。
http://localhost:8002/lcs-discover/eureka/apps/appID/instanceID delete 请求
curl -X PUT -i http://10.118.218.151:8002/lcs-discover/eureka/apps/DATAIMP-SERVICE/LCS218151:dataimp-service:8005/status?value=OUT_OF_SERVICE
DATAIMP-SERVICE 这个为服务名称
LCS218151:dataimp-service:8005 这个为discover中看到的服务节点名称
当执行完这个命令之后,在discover 中看到的服务状态为 out_of_service这个红色的显示。
这样当前端访问到网关的时候,网关就不会给这个服务上发送请求了。
然后运维就可以在这个服务上进行换包,上线等操作,当上线完成后,重启服务,discover自动会发送心跳给每个服务,检查服务状态,如果服务状态正常就可以正常使用了。