作者:手辨
實為吾之愚見,望諸君酌之!聞過則喜,與君共勉
适用于:
1,跨地域/本地主機如何公網通路經典/vpc網絡的rds?
2,經典網絡的ecs如何内網和公網通路經典/vpc網絡的rds?
3,vpc網絡的ecs如何公網和内網通路經典/vpc網絡下的rds?
4,經典/vpc網絡的ecs如何内網通路經典/vpc網絡的mongodb?
5,經典/vpc網絡的ecs如何内網通路經典/vpc網絡的redis?
6,經典/vpc網絡的ecs如何内網通路經典/vpc網絡的ocs(memcached)?
阿裡雲的資料庫種類較多,但是網絡連接配接問題出現以及排查和解決方式大部分是一樣的,是以以下以RDS控制台為例子進行說明,控制台會與redis,mongodb,ocs等有差别,主要目的是為了舉一反三
第一章 使用阿裡雲ECS和資料庫前需要了解的相關概念
1.1地域和可用區
地域:地域是指實體的資料中心,類似下面的表格
地域名稱 | 華北 1 | 2 | 3 | 華東 | 華南 | |
所在城市 | 青島 | 北京 | 張家口 | 杭州 | 上海 | 深圳 |
RegionId | cn-qingdao | cn-beijing | cn-zhangjiakou | cn-hangzhou | cn-shanghai | cn-shenzhen |
可用區:可用區是指在同一地域内,電力和網絡互相獨立的實體區域
詳細說明看這裡:
https://help.aliyun.com/document_detail/40654.html?spm=5176.doc51704.6.543.jd1ts91.2内網
同地域内的雲資源互相通路位址,不同可用區也可以内網通路,但是不同地域正常是不可以内網通路的,不同地域需要公網通路
https://help.aliyun.com/document_detail/25385.html?spm=5176.doc40654.6.557.68NSeb1.3外網
跨地域之間雲資源互相通路的位址,不可以内網通路,可以立即為滿足公網通路的位址
1.4安全組
Ecs所特有可以了解為防火牆,差別于windows或者linux系統内部的防火牆,安全組和系統内部防火牆互不影響
https://help.aliyun.com/document_detail/25387.html?spm=5176.doc25385.6.560.F1KUoi https://help.aliyun.com/document_detail/25387.html?spm=5176.doc25385.6.560.F1KUoi1.5vpc(專有網絡)
阿裡雲的内網隔離的私有網絡,同一個vpc内,不同交換機預設是互通的,不同vpc下正常是無法聯通的
https://help.aliyun.com/document_detail/34217.html?spm=5176.doc55051.6.539.4PVhVn1.6白名單
Rds所特有,ip位址寫入白名單之後,主機才可以進行通路
https://help.aliyun.com/document_detail/26198.html?spm=5176.product26090.6.686.2Y3o4E https://help.aliyun.com/document_detail/26198.html?spm=5176.product26090.6.686.2Y3o4E1.7網絡類型
經典網絡以及專有網絡(vpc),經典網絡差別于專有網絡,經典網絡中的雲服務在網絡上不進行隔離
差別的詳細說明看這裡:
https://help.aliyun.com/document_detail/26194.html?spm=5176.product26090.6.682.2mjTIX https://help.aliyun.com/document_detail/26194.html?spm=5176.product26090.6.682.2mjTIX1.8 Â 通路模式
Rds特有分為高安全模式和标準模式
https://help.aliyun.com/document_detail/26193.html?spm=5176.doc26194.6.681.iNVL3c https://help.aliyun.com/document_detail/26193.html?spm=5176.doc26194.6.681.iNVL3c第二章 ECS連接配接RDS問題
以下是指同地域之間的的阿裡雲ecs通路rds的說明
,皆為正常情況,排除了特殊配置的情況,以下四類情況同樣适用于同地域ECS連接配接雲MONGODB,ECS連接配接雲REDIS,ECS連接配接雲OCS(MEMCACHED),并且也适用于不同地域之間連接配接的問題排查,需要注意的是:
1,雲MONGODB,雲REDIS,雲OCS正常隻支援内網連接配接,是以跨地域公網通路時不支援的,本地主機通過公網通路也是不支援的
2,雲REDIS,雲OCS在切換到vpc後,是不支援再切換到經典網絡的
3,RDS,雲MONGODB(複制集版)是可以從經典網絡切換到vpc并且也可以從vpc切換到經典網絡的
4,雲MONGODB(叢集版)建立完成後不支援網絡類型切換
2.1.1經典網絡ECS通路經典網絡RDS異常
情況描述:ECS是經典網絡(公網和内網都有),RDS是經典網絡(公網和内網都有),如下:
Ecs的網絡配置:
Rds的網絡配置:
通過ECS和RDS的配置,它們網絡類型相同,又都存在公網和内網位址,是以理論上公網和内網的通路都是沒問題的,測試如下:
下面模拟一個不可以正常連接配接的例子進行連通性測試:
Ecs連接配接rds内網:
通過ping内網位址和telnet内網位址,擷取了如上的資訊,上面說明了如下兩點:
1,該rds目前的内網位址是10.50.144.213
2,通過3306端口連接配接10.50.144.213無法連接配接
網絡類型相同,而無法連接配接,此類問題一般是ECS的内部的防火牆(或者其他安全軟體)或者ECS的安全組設定以及RDS的白名單設定的問題,按照這個思路,往下查:
自帶防火牆:
結果:狀态關閉
Ecs的安全組設定:
通過安全組可以看到,”内網出方向”的規則中有一條規則如上,該規則會拒絕發往發往10.50.144.213且目的端口是3306的資料包,是以從ECS發出來的資料包就不可達了
RDS的白名單配置(rds目前提供了高安全的白名單模式,如果是高安全白名單模式,經典網絡白名單分組适用于經典網絡以及外網主機通路,而專有網絡白名單分組适用于專有網絡的主機通路):
通過白名單可以看到,rds的白名單設定隻允許來着127.0.0.0的通路,其他的位址是不允許的
通過上面的檢視,一方面是ecs的安全組設定有問題,一方面是rds的白名單設定有問題,先更改ecs的安全組,删除之前的規則(保持rds的白名單不改動),進行測試:
紅框中的提示是:#28000ip not in whitelist,再結合之前查到的rds的白名單問題,可以判斷這是rds的白名單阻止了該ECS的通路,下面修改RDS的白名單,将ecs的内網ip位址10.132.35.143加入:
再次測試:
測試正常了,同網絡類型的公網通路問題排查方法同上,同地域網絡類型相同而無法連接配接的問題一般是源端或者目标端的安全限制導緻的
2.1.2經典網絡ECS通路專有網絡RDS異常
情況描述:ECS是經典網絡(公網和内網都有),RDS是專有網絡(公網和内網都有),如下:
ECS網絡配置:
RDS網絡配置:
通過上面的資訊可以看到,ECS與RDS的網絡類型是不同的,ecs是經典網絡,rds是專有網絡(vpc),這樣的話正常内網是無法通路的,隻有公網才可以正常通路,測試如下:
此類情況的解決辦法:
1,使用rds的公網位址進行通路
2,如果想使用内網通路,必須是相同網絡類型才可以,因為ecs無法直接切換網絡類型,則比較好的解決辦法就是把rds切換為與ecs相同的網絡類型(經典網絡),并設定好安全組防火牆已經白名單,具體操作方法如下:
2.1.3專有網絡ECS内網通路經典網絡RDS異常
情況描述:ECS是專有網絡(隻有内網,沒有eip),RDS是經典網絡(公網和内網都有),如下:
Rds網絡配置:
通過上面的資訊可以看到,ECS與RDS的網絡類型是不同的,ecs是專有網絡,rds是經典網絡,這樣的話與2.1.2相同,也是正常内網是無法通路的,又因為ecs沒有eip,是以rds的公網也是無法通路的。
解決辦法:
1,配置ECS的eip(取決于購買時的配置,此處我購買時選擇的不配置設定公網位址),使用rds的公網通路RDS,操作如下:
測試如下:
2,如果需要内網的話,需要将rds切換到與ecs相同的vpc下才可以(交換機可以不同,但是交換機必須在同一個vpc下),具體操作如下:
Ecs所在vpc以及交換機:
相應的vpc以及交換機資訊
Rds進行網絡類型切換:
測試内網如下:
2.1.4專有網絡ECS内網通路專有網絡RDS異常
情況描述:ECS是專有網絡(隻有内網,沒有eip),RDS是專有網絡(公網和内網都有),如下:
通過上面的資訊,可以看到ECS和RDS都是同一個vpc下的,但是他們内網可以連接配接嗎?外網可以嗎?做個測試(測試公網需要申請eip):
綁定eip:
内網測試:
結果:内網測試不通
外網測試:
結果:外網測試可以聯通,隻是提示白名單問題
内網無法連通原因:通過上面的ecs的rds的網絡類型,可以看到RDS和ECS的vpc是不同的,是以他們處在兩個不同的vpc下,是以他們無法連通
下面将RDS切換到與ecs相同的vpc下再測試(ecs無法直接切換vpc):
再次内網測試:
結果:内網測試可以聯通,隻是提示白名單問題
第三章 問題延伸
通過第二章的測試和驗證,當選擇ECS和RDS時,如果需要内網正常連接配接,可能需要滿足(以下均不包括特殊情況):
1,同地域如果需要内網連接配接,則網絡類型要相同,如果是經典網絡ecs和rds都為經典網絡才可以内網連接配接,如果是vpc網絡,ecs和rds必須是在同一個vpc下才可以内網連接配接
2,不同地域時,經典網絡以及VPC網絡的ecs和rds一般需要公網位址進行連接配接,不同地域無法内網連接配接
3,雲mongodb,雲redis,雲ocs此類隻允許内網連接配接,一般無法通過公網來連接配接,是以ecs需要與其在同一地域下,
4,當遇到某個ECS連接配接資料庫出現問題時,可以嘗試使用如下方法進行分析:
1)“ping 執行個體位址”:解析出ip位址即可,如下
2)“telnet 執行個體位址 端口” 或者”telnet ip 端口”
Ps: 28000ip not in whitelist是因為白名單未設定,可以看另一篇:
https://yq.aliyun.com/articles/158321?spm=5176.100240.searchblog.8.XNCQSl https://yq.aliyun.com/articles/158321?spm=5176.100240.searchblog.8.XNCQSl3)如果telnet失敗(失敗如下,表現為長時間無反應或者逾時):
可以執行route -n檢查下路由資訊
如果路由資訊也沒問題,可以考慮檢查下網絡類型以及安全限制方面是否符合,如果網絡類型和安全限制也沒有問題的話,需要檢查系統是否有其他的特殊配置,尤其是網絡方面的特殊配置(回憶下我在這台主機上做過什麼?)