Spring Cloud 高可用網關

背景:

公司測試環境的網關一直不能正常工作,每天都需要被前端催重啓,測試催重啓,移動端開發催重啓,簡直了。雖然只需要一行命令就可以重啓完成,但是內心還是覺得無比煩悶。要不把網關部署爲高可用的??

解決

這是一個不太大膽的想法,說搞就搞,把網關服務的代碼部署到測試環境的另一臺服務器上,然後讓兩個網關服務同時註冊到兩個Eureka。心裏想到,Eureka 是互相註冊,高可用的,現在兩個網關注冊到高可用的註冊中心,理論上高可用的網關不就輕鬆實現了嗎?

問題發現

在部署完成之後,簡單的測試了一下,發現如果我殺一個網關進程,整個服務還是不能正常工作,意味着高可用全是騙人的。一波操作猛如虎,一看戰績0-5。

解決問題

既然我可以在Eureka的控制檯看到兩個網關的實例,但是還是不能實現高可用,說明,我一開始就錯了。重新捋一捋網關這個東西。前端請求一個域名,然後網關吧這個鏈接轉發到相應的服務器。問題應該就出在這個域名這裏了,域名先被阿里雲解析,然後轉發到相應的服務器,然後在服務器上通過Nginx 轉發到相應的端口,那麼只要在nginx 那裏做一個負載均衡就可以了。

upstream mygateway{
	server 172.16.*.**:10200 weight=1;
	server 172.16.*.**:10200 weight=1;
}
server {
        listen       80;
        server_name  testapi.sayyoo.cn;
        large_client_header_buffers 4 16k;
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
       location / {
            proxy_set_header X-Real-IP $remote_addr;
	    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://mygateway;
        }
    }

重啓NGINX,然後殺掉其中一個網關服務,終於實現了網管的高可用。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章