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自動會發送心跳給每個服務,檢查服務狀態,如果服務狀態正常就可以正常使用了。