當前位置:首頁 » 雲伺服器 » 自帶固定公網ip的微伺服器

自帶固定公網ip的微伺服器

發布時間: 2023-03-14 13:21:25

1. Nacos微服務注冊地址為Docker內網IP的解決辦法

Nacos(注冊中心)是通過 【 IP+PORT】 的形式調用其他服務。

問題:

Docker 容器使用虛擬 IP,當 Docker 中的服務 A,向 Nacos 注冊的時候,Nacos 獲取到了 Docker 的內部 IP,導致另外一個服務 B,想通過注冊中心調用服務 A,但由於服務 B從 nacos 注冊中心獲取到的是服務 A 的內部 IP,這樣導致了兩個處於公網的微服務之間無法互相訪問

當然,配置了上述網路類型後,nacos 是可以拿到宿主機的 IP,但是此時拿到的是宿主機的內網 IP,解決辦法如下:

啟動 Docker 的時候,用 --network 參數,可以指定網路類型

2. 聯通固定公網ip地址,外網訪問不穩定

關閉iis那台伺服器的 自帶防火牆,路由映射80埠~ 公網即可用IP訪問,不一定非要域名,域名只是方便記憶!
如果訪問不了,因為你的路由是做了NAT的,為了提供內網的機器上網,但路由的管理頁面訪問地址也是80埠! 要不就修改IIS埠,要不就修改路由埠,或者增加公網IP!

3. 基於docker部署的微服務架構(二): 服務提供者和調用者

前一篇 基於docker部署的微服務架構(一):服務注冊中心 已經成功創建了一個服務注冊中心,現在我們創建一個簡單的微服務,讓這個服務在服務注冊中心注冊。然後再創建一個調用者,調用此前創建的微服務。

新建一個maven工程,修改pom.xml引入 spring cloud 依賴:

在 resources 目錄中創建 application.yml 配置文件,在配置文件內容:

這里eureka的注冊地址為上一篇中設置的defaultZone。
java 目錄中創建一個包 demo ,在包中創建啟動入口 AddServiceApplication.java

在demo包下新建一個子包controller,在controller子包下創建一個controller對外提供介面。

在服務注冊中心已經運行的情況下,運行 AddServiceApplication.java 中的 main 方法,啟動微服務。
訪問服務注冊中心頁面 http://localhost:8000 , 可以看到已經成功注冊了 ADD-SERVICE-DEMO 服務。

啟動第二個實例,修改埠為 8101 ,修改 AddController.java 中的輸出信息為

再次運行 AddServiceApplication.java 中的 main 方法。
訪問服務注冊中心頁面 http://localhost:8000 , 可以看到已經成功注冊了兩個 ADD-SERVICE-DEMO 服務,埠分別為 8100 8101

新建一個maven工程,修改pom.xml引入 spring cloud 依賴:

在 resources 目錄中創建 application.yml 配置文件,在配置文件內容:

在 java 目錄中創建一個包 demo ,在包中創建啟動入口 RibbonClientApplication.java

這里配置了一個可以從服務注冊中心讀取服務列表,並且實現了負載均衡的 restTemplate

在demo包下新建一個子包controller,在controller子包下創建一個controller對外提供介面。

可以看到這里的請求url用了服務注冊中心對應的 Application 。

運行 RibbonClientApplication.java 中的 main 方法,啟動項目。
在瀏覽器中訪問 http://localhost:8200/add?a=1&b=2 ,得到返回結果:

多次訪問,查看 AddServiceApplication 的控制台,可以看到兩個 ADD-SERVICE-DEMO 被負載均衡的調用。
demo源碼 spring-cloud-1.0/ribbon-client-demo

新建一個maven工程,修改pom.xml引入 spring cloud 依賴:

在 resources 目錄中創建 application.yml 配置文件,在配置文件內容:

在 java 目錄中創建一個包 demo ,在包中創建啟動入口 FeignClientApplication.java

在demo包下新建一個子包service,在service子包下創建一個介面 AddService.java 調用之前創建的微服務 ADD-SERVICE-DEMO

這里 @FeignClient 註解中的參數為服務注冊中心對應的 Application 。

在demo包下再新建一個子包controller,在controller子包下創建一個 FeignController.java 對外提供介面。

FeignController 里注入了剛才創建的 AddService 介面。

運行 FeignClientApplication.java 中的 main 方法,啟動項目。
在瀏覽器中訪問 http://localhost:8300/add?a=1&b=2 ,得到返回結果:

多次訪問,查看 AddServiceApplication 的控制台,可以看到兩個 ADD-SERVICE-DEMO 被負載均衡的調用。
demo源碼 spring-cloud-1.0/feign-client-demo

以 add-service-demo 為例,
復制 application.yml ,重命名為 application-docker.yml ,修改 defaultZone 為:

這里修改了 defaultZone 的訪問url,如何修改取決於部署docker容器時的 --link 參數, --link 可以讓兩個容器之間互相通信。

修改 application.yml 中的 spring 節點為:

這里增加了 profiles 的配置,在maven打包時選擇不同的profile,載入不同的配置文件。

在pom.xml文件中增加:

選擇 docker profile,運行 mvn install -P docker ,打包項目並生成docker鏡像, 注意docker-maven-plugin中的 <entryPoint> 標簽里的內容不能換行,否則在生成docker鏡像的時候會報錯
運行成功後,登錄docker節點,運行 docker images 應該可以看到剛才打包生成的鏡像了。

在前一篇中,已經創建了一個 service-registry-demo 的docker鏡像,這里先把這個鏡像運行起來。

對這條命令做個簡單說明, -d 指定當前容器運行在後台, --name 指定容器名稱, --publish 指定埠映射到宿主機, --volume 這個掛載是為了解決容器內的時區和宿主機不一致的問題,讓容器使用宿主機設置的時區,最後指定使用的docker鏡像,鏡像名稱和標簽需要根據自己的情況做修改。
運行這條命令之後, service-registry-demo 的容器就啟動了。訪問 http://宿主機IP:8000 ,打開注冊中心的頁面。
下邊啟動 add-service-demo 容器,

這條命令和上一條差不多,只是增加了一個 --link 參數, --link 指定容器間的連接,命令格式 --link 容器名:別名 ,這里連接了之前創建的名為 service-registry-demo 的容器,這里的別名和 application-docker.yml 文件中配置的 defaultZone 一致。其實就是通過別名找到了對應的容器IP,進到容器里查看 hosts 文件就明白了,其實就是加了條hosts映射。
add-service-demo 容器啟動成功之後,刷新配置中心的頁面,發現已經注冊到配置中心了。

4. Spring Cloud微服務升級總結

Spring Boot框架是由Pivotal團隊提供的全新框架,其設計目的是用來簡化基於Spring應用的初始搭建以及開發過程。SpringBoot框架使用了特定的方式來進行應用系統的配置,從而使開發人 員不再需要耗費大量精力去定義模板化的配置文件。

Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務注冊,服務發現、斷路器、智能路由、微代理、控制匯流排、全局鎖、決策競選、分布式會話和集群狀態管理等操作提供了一種簡單的開發方式。

Spring Boot通過@SpringBootApplication註解標識為Spring Boot應用程序。所有的應用都通過jar包方式編譯,部署和運行.

每個Spring Boot的應用都可以通過內嵌web容器的方式提供http服務,僅僅需要在pom文件中依賴spring-boot-start-web即可,原則上微服務架構希望每個獨立節點都提供http服務。

在Spring Boot需要啟動任務時,只要繼承CommandLineRunner介面實現其run方法即可。

在Spring Boot需要執行定時任務時,只需要在定時任務方法上增加@Scheled(cron = 「0 15 0 **?」)註解(支持標准cron表達式),並且在服務啟動類上增加@EnableScheling的註解即可。

Actuator是spring boot提供的對應用系統自身進行監控的組件,在引入spring-boot-start-web基礎上引入spring-boot-starter-actuator即可。

在我們實現微服務架構時,每個微服務節點都需要自身的相關配置數據項,當節點眾多,維護就變得非常困難,因此需要建立一個中心配置服務。

Spring Cloud Config分為兩部分。Spring Cloud Config server作為一個服務進程,Spring Cloud Config File為配置文件存放位置。

[圖片上傳失敗...(image-bfc9bd-1511489698023)]

服務注冊的概念早在微服務架構之前就出現了,微服務架構更是把原先的單一應用節點拆分成非常多的微服務節點。互相之間的調用關系會非常復雜,Spring Cloud Eureka作為注冊中心,

服務注冊的概念早在微服務架構之前就出現了,微服務架構更是把原先的單一應用節點拆分成非常多的微服務節點。互相之間的調用關系會非常復雜,Spring Cloud Eureka作為注冊中心,
所有的微服務都可以將自身注冊到Spring Cloud Eureka進行統一的管理和訪問(Eureka和Zookeeper不同,在AOP原則中選擇了OP,更強調服務的有效性)

服務注冊的概念早在微服務架構之前就出現了,微服務架構更是把原先的單一應用節點拆分成非常多的微服務節點。互相之間的調用關系會非常復雜,Spring Cloud Eureka作為注冊中心,
所有的微服務都可以將自身注冊到Spring Cloud Eureka進行統一的管理和訪問(Eureka和Zookeeper不同,在AOP原則中選擇了OP,更強調服務的有效性)

當我們把所有的服務都注冊到Eureka(服務注冊中心)以後,就涉及到如何調用的問題。Spring Cloud Zuul是Spring Cloud提供的服務端代理組件,可以看做是網關,Zuul通過Eureka獲取到可用的服務,通過映射配置,客戶端通過訪問Zuul來訪問實際需要需要訪問的服務。所有的服務通spring.application.name做標識,不同IP地址,相同spring.application.name就是一個服務集群。當我們增加一個相同spring.application.name的節點,Zuul通過和Eureka通信獲取新增節點的信息實現智能路由,增加該類型服務的響應能力。

與Spring Cloud Zuul的服務端代理相對應,Spring Cloud Ribbon提供了客戶端代理。在服務端代理中,客戶端並不需要知道最終是哪個微服務節點為之提供服務,而客戶端代理獲取實質提供服務的節點,並選擇一個進行服務調用。Ribbon和Zuul相似,也是通過和Eureka(服務注冊中心)進行通信來實現客戶端智能路由。

Spring Cloud Feign是一種聲明式、模板化的http客戶端。 使用Spring Cloud Feign請求遠程服務時能夠像調用本地方法一樣,讓開發者感覺不到這是遠程方法(Feign集成了Ribbon做負載均衡)。

1.把遠程服務和本地服務做映射

應用管理中心可以對每個已經注冊的微服務節點進行停止,編譯,打包,部署,啟動的完整的上線操作。

zookeeper數據查詢中心根據zookeeper地址,埠,命令獲取zookeeper數據信息。

健康檢測中心周期性檢查每個微服務的狀態,當發現有微服務狀態處於DOWN或連接超時時,觸發報警

健康檢測中心周期性檢查每個微服務的狀態,當發現有微服務狀態處於DOWN或連接超時時,觸發報警

我的官網

我的官網 http://guan2ye.com
我的CSDN地址 http://blog.csdn.net/chenjianandiyi
我的地址 http://www.jianshu.com/u/9b5d1921ce34
我的github https://github.com/javanan
我的碼雲地址 https://gitee.com/jamen/
阿里雲優惠券 https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=vf2b5zld&utm_source=vf2b5zld

熱點內容
重新編目資料庫 發布:2025-05-16 00:54:34 瀏覽:513
android語音控制 發布:2025-05-16 00:53:50 瀏覽:265
win8windows無法訪問 發布:2025-05-16 00:37:53 瀏覽:894
八種排序演算法 發布:2025-05-16 00:37:17 瀏覽:55
左旋螺紋數控編程實例 發布:2025-05-16 00:11:49 瀏覽:10
安卓游戲舊版本從哪個軟體下載 發布:2025-05-16 00:00:20 瀏覽:329
連接聚類演算法 發布:2025-05-15 23:55:09 瀏覽:978
工資演算法單休 發布:2025-05-15 23:52:30 瀏覽:819
超凡先鋒配置不行怎麼辦 發布:2025-05-15 23:27:54 瀏覽:532
win7取消加密 發布:2025-05-15 23:26:37 瀏覽:472