https://blog.csdn.net/lixiang987654321/article/details/88134324
docker部署過程中遇到如下問題:
(1)docker容器創建之后,進入容器會發現容器有多個ip,一個是10.255段的一個是172段的,一個自定義集群的網絡10.0.2段的
(2)注冊到eureka注冊服務中的地址為10.255段的地址
(3)通過網關訪問注冊到eureka中的服務時候獲取到的ip是10.255段網址,是實際上各個服務監聽的ip為10.0.2段的端口
(4)網關無法連接到10.255段的服務的端口(可以查看10.0.2段的端口:nc -zv 10.0.2.84 7000)
引起問題的原因:
(1)docker部署服務的時候無法指定容器使用對應網段
(2)服務注冊到注冊服務的時候使用指定網段注冊到注冊服務(10.0.2自建網絡的網段)
(3)服務運行的時候監聽多網卡機器的所有網段
解決方式:
(1)docker運行的容器使用指定網卡(但是實際智能指定ip,而容器運行的ip是隨機分配的,當然也可以指定,不過比較復雜)--可行,比較啰嗦,運維所有配置
(2)服務注冊的時候使用指定網卡注冊到注冊服務---可行
(3)springcloud配置的端口,監聽ip為0.0.0.0--需要修改源碼,不可行
(4)eureka注冊的時候使用主機名而不是使用ip--可行但只能部署一個(同一個網絡多個hostname相同?有問題!)
方式一
方式二
方式三
忽略網卡(正則)
指定ip(正則)
以下以(2)中解決方式,在注冊的時候選擇固定的網卡注冊注冊中心,忽略哪些無法訪問的網卡即可
(1)了解springcloud網卡配置
spring-cloud-commons項目為Spring Cloud生態提供了頂層的抽象和基礎設施的實現。
網絡這個最基本的基礎設施也是在這里有對應的實現:InetUtils、InetUtilsProperties和UtilAutoConfiguration提供了網絡配置相關的功能。
spring.cloud.inetutils.default-hostname
spring.cloud.inetutils.default-ip-address
spring.cloud.inetutils.ignored-interfaces
spring.cloud.inetutils.preferred-networks
spring.cloud.inetutils.timeout-seconds
spring.cloud.inetutils.use-only-site-local-interfaces
需要解釋一下的是ignored-interfaces和preferred-networks這兩個配置。這兩個配置決定了spring cloud應用在啟動的時候所使用的網卡和IP地址。ignored-interfaces接收一個正則表達式數組,配置名字雖然是ignored-interfaces,忽略的網卡,但是因為其接收的是正則表達式,所以我們可以任意的選擇和反選本機的網卡。preferred-networks是指傾向於使用的IP地址,接收一個正則表達式數組,用於選擇Spring Cloud應用使用的本機的IP地址。通過這兩個配置,我們可以任意指定Spring Cloud應用使用的網卡和IP地址。
(2)參數配置
方式一:通過運行環境變量配置
java -jar xxx.jar --spring.cloud.inetutils.ignored-interfaces=
方式二:通過docker傳遞環境變量配置
--env spring.cloud.inetutils.ignored-interfaces=eth0
通過application.yml或properties配置文件配置
spring.cloud.inetutils.ignored-interfaces=
spring:
cloud:
inetutils:
ignored-interfaces[0]
docker服務配置實例:
注意
(1)重啟機器后mycat不能自己開機啟動
(2)重啟后需要重新配置svn監聽目錄
apt-get -y install netcat-openbsd
sudo apt-get install netcat
啟動服務
(1)注冊中心
dys_register_server: 提供所有服務模塊的統一注冊
(2)配置中心
dys_config_center: 提供所有服務的統一配置管理
(3)授權中心
dys_auth_center: 提供平台統一的權限校驗
(4)系統網關
dys_gateway_server: 提供外網訪問系統內網的唯一入口,以及統一鑒權,系統流量控制
(5)區域服務
dys_region_server: 提供區域代碼查詢服務
(6)人臉后台
dys_face_server: 提供人臉比對和人臉抓拍數據等管理
(7)文件上傳
dys_file_server: 提供人臉上傳圖片存儲服務
(8)系統校時
dys_time_server: 提供系統所有模塊的時間同步服務
(9)短信服務
dys_sms_server: 提供黑名單比中手機短信發送服務
(10)郵件服務
dys_email_server: 提供黑名單比中電子郵件發送服務
(11)人臉前端
web_face: 提供人臉系統展示資源管理服務
docker service rm eureka1
docker service rm eureka2
docker service rm config
docker service rm auth
docker service rm gateway
docker service rm region
docker service rm face
docker service rm file
docker service rm time
docker service rm email
docker service rm web_face
docker service rm door
docker service rm smart
docker service rm tvwall
docker service rm websocket
docker service rm wifi
docker service rm zfy
docker service rm zipkin
關於網卡設置
忽略指定網卡或符合正則表達式的網卡
--env spring.cloud.inetutils.ignored-interfaces[0]=^eth0 \
優先使用滿足指定名或符合正則表達式的網卡
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
注冊服務1:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name eureka1 \
--network springcloud \
--publish 7002:7002 \
--env spring.profiles.active=eureka1 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_register_server:latest
注冊服務2:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name eureka2 \
--network springcloud \
--publish 7003:7003 \
--env spring.profiles.active=eureka2 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_register_server:latest
配置中心:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name config \
--network springcloud \
--publish 7000:7000 \
--env spring.profiles.active=subversion \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_config_center:latest
授權中心:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name auth \
--network springcloud \
--publish 7006:7006 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_auth_center:latest
系統網關:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name gateway \
--network springcloud \
--publish 80:80 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_gateway_server:latest
docker node update --label-add gateway=yes docker113
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name gateway \
--network springcloud \
--publish 80:80 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
--constraint 'node.labels.gateway == yes' \
images.dondown.com:5000/dys_gateway_server:latest
區域服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name region \
--network springcloud \
--publish 7004:7004 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_region_server:latest
人臉后台:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name face \
--network springcloud \
--publish 7012:7012 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_face_server:latest
文件管理服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name file \
--network springcloud \
--publish 7016:7016 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
--constraint 'node.labels.type == file' \
images.dondown.com:5000/dys_file_server:latest
平台校時服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name time \
--network springcloud \
--publish 7013:7013 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_time_server:latest
短信服務(智能部署在windows):
郵件服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name email \
--network springcloud \
--publish 7011:7011 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_email_server:latest
人臉前端資源服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name web_face \
--network springcloud \
--publish 8080:8080 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/web_face:latest
車輛大數據服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name car \
--network springcloud \
--publish 7007:7007 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_car_server:latest
門禁+視頻服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name door \
--network springcloud \
--publish 7014:7014 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_door_server:latest
智能分析服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name smart \
--network springcloud \
--publish 7008:7008 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_smart_server:latest
電視牆服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name tvwall \
--network springcloud \
--publish 7009:7009 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_tvwall_server:latest
消息推送服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name websocket \
--network springcloud \
--publish 7019:7019 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_websoket_server:latest
電子圍欄服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name wifi \
--network springcloud \
--publish 7015:7015 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_wifi_server:latest
移動巡防服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name zfy \
--network springcloud \
--publish 7017:7017 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_zfy_server:latest
鏈路跟蹤服務:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name zipkin \
--network springcloud \
--publish 7001:7001 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_zipkin_server:latest
————————————————
版權聲明:本文為CSDN博主「貝殼里的沙」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lixiang987654321/article/details/88134324