在滴滴雲快速搭建自己的簡易服務叢集[入門版]
引言
萬物互聯的時代,各行各業都或多或少的接入線上,作為開發人員,我們有了小而美的產品或服務方面的想法,就把它她做出來放到線上,讓它發展壯大。
我以 為例,教你一步一步的搭建自己的伺服器叢集,包括負載均衡、Web 應用安全防火牆、構建部署等,當然這些都是可以根據你的服務發展拆分的。
以下小節循序漸進,每一節都可以停止,滿足你線上服務發展的每一步訴求。
名詞解釋
- 內網互通: 同一賬戶下的資源互通,不同賬戶的資源內網完全隔離。
- 地域: 指物理的資料中心的地理區域,如北京、廣州。不同地域之間網路完全隔離,不同地域之間的雲產品預設不能透過內網通訊。
- 可用區: 是被設計為可以隔離其他可用區的故障的不同機房位置。如廣州一區、廣州二區。
更多關於地域和可用區的解釋和選擇請參考 。
第一節 搭建簡單的伺服器
首先,最基本的雲伺服器資源,在 對應的是 DC2。
下圖為雲伺服器的建立過程,看起來很多選項,但很多使用預設的即可,下面我們一步一步來建立你的雲伺服器:
-
選項-付費方式
一開始選擇付費方式,如果只是跟著例子先嚐試一把的話可以先買按時長計費的(相比包月可以隨時刪除,搭建好後也可以轉為包月計費),如果已經準備好做什麼了,那選擇包月付費的可以得到一定的優惠。 -
選項-可用區
你希望你的雲伺服器放在哪個地方,選擇靠近您客戶的地域,可降低網路延遲,提高客戶的訪問速度,需要注意的是不同地域的雲資源之間內網互不相通。
這裡可能你會疑問為什麼不放在中部,而普遍在廣州、北京這種相對極南靠北的地方?
機房選址是一個非常複雜的過程,涉及到技術方面、資金方面、投資環境、稅收、電力和通訊、基礎設施、交通成本、人力成本等,其實就算在中部相對較遠的地方也會有延遲問題,對於網路延遲問題,有多機房,CDN 等解決方案,在其他地區佈設機房的的情況也在逐漸增多。 -
選項-伺服器型別
對於伺服器型別可以參考 。各個型別都有自身特定場景的優勢,根據自己使用場景選擇相應的型別,達到適用、夠用不浪費就行。這裡我們選擇通用型。 -
選項-映象
映象可以簡單的理解為你的伺服器的系統。當然你還可以方便的使用一鍵部署映象,或其他已有伺服器映象,快速的建立已部署指定應用和環境的伺服器。
下面的雲安全和雲監控根據需要勾選即可。
雲監控可以時刻視覺化觀察伺服器各項指標的監控圖示;主機安全在一定程度上防護伺服器免受駭客或病毒侵害。 -
選項-配置
配置買多大合適呢?這個問題不用糾結,我們可以先買低配置的,後面根據需要,比如你的服務做大了,就可以根據業務發展在對應伺服器管理介面快速的升級配置,而不用重新建立伺服器及其應用和環境。
這裡也提供了 Open API,你可以寫指令碼根據伺服器壓力等指標自動的執行升配操作,參考 。 -
選項-系統盤
這裡我們使用高效雲盤, 。 -
選項-資料盤
-
資料盤根據需要配置,也可以後期根據業務需要配置。
-
選項-網路
如果只是一臺伺服器,選擇預設的即可,後面第三節會涉及到 VPC 詳細的建立及配置。 -
選項-頻寬
根據服務使用者規模選擇頻寬大小,也可以根據需要選自適合自己的頻寬計費方式,固定頻寬或按量計費。
租用頻寬會固定分配一個外網 EIP,沒有外網 EIP,該伺服器不能直接對外提供服務,只能透過 Web 控制檯訪問;或第二、三節會講到的同一個 VPC 下的其他伺服器間接訪問;或 SLB 的外網 EIP 間接訪問。
後面我們要建立帶負載均衡 SLB 的服務叢集,因此該項可以不勾選而透過 SLB 的外網 EIP 訪問。 -
選項-安全組
這裡可以先使用預設的,第三節會涉及到安全組詳細的建立及配置。
安全組可以理解為防火牆組,就是管理你的伺服器的一套防護牆規則的分組。這裡使用的是白名單規則,不在規則內的無法訪問。比如預設規則裡面新增了 [入方向->TCP->80 埠] 則外網才可以訪問你的伺服器的 80 埠的應用服務。 -
選項-登入方式
推薦新增 SSH key,方便後面免密登入伺服器操作。 -
選項-包月時長
根據需要和當時活動選擇。 -
選項-自動續費
按時長沒有此選項,保持賬戶充足餘額即可,包月的最好勾選自動續費,防止資源到期忘了續期被停服。] -
選項-數量和名稱
建立叢集的時候可以批次建立伺服器及配置,名稱回以你輸入的名稱為字首自動序號疊加。 -
選項-新增標籤
對資源的分組標記管理,為便於管理可以新增多個。比如我們接下來建立的 app1 叢集標籤cluster:app1
。
好了點選確認,我們的伺服器建立完後,如果選擇了頻寬會分配外網 EIP,透過外網 EIP 用 SSH 遠端登進去就可以自由的開始你的操作了。
關於其他使用說明可以參考 。
第二節 搭建簡易的伺服器叢集
首先來看下我們稍後要搭建的簡易伺服器叢集怎麼提供服務的,如下圖:
如上圖,我們涉及前面提到的專有網路 VPC,安全組 SG,負載均衡 SLB,及伺服器 DC2,從圖中可以看到所有資源在同一個 VPC 網段內,因為不同 VPC 的機器之間網路不通,這樣就形成了 cluster:app1 這個叢集的私有網路。
從左邊開始,首先是配置有公網 EIP 的 SLB,可以透過外網訪問這個 IP 下的 SLB 服務,SLB 按一定的均衡規則將請求轉發到叢集的某一臺伺服器 DC2,伺服器收到請求後再將請求響應給對應請求者,完成一次服務。
這個中間的 DC2 .22.26 伺服器是叢集的子節點(只有內網 IP,不用購置頻寬),並配置同一安全組,不讓外界隨意訪問伺服器上的應用。這裡只是示意,可以根據需要自定義動態擴充套件或縮減叢集伺服器數量。
右邊還有一個 Deploy DC2 用來給開發人員透過外網部署程式碼到叢集伺服器的跳板機。這裡我們先使用預設的 VPC 和安全組 SG 建立叢集涉及的所有資源:DC2、SLB等,下一節再講 VPC 和 SG 等的自定義配置。
第一步 建立叢集所需要的雲伺服器 DC2
按第一節中的步驟建立 3 臺伺服器,分別為 DC2.22、DC2.26、DeployDC2,前兩個作為叢集伺服器,不用購置外網 EIP 即頻寬選項,DeployDC2 作為跳板機需要外網 EIP,其他 VPC 和安全組使用預設即可。
這裡先建立 DeployDC2,透過對應的外網 EIP SSH 登入到該機器後生成該機器的 SSH key,然後在用該機器的 public ssh key 去建立叢集的伺服器,這樣後面就可以透過 DeployDC2 免密操作叢集的機器了。
第二步 配置 SLB 服務
負載均衡(Server Load Balancer)是對多臺雲伺服器 DC2 進行流量分發的負載均衡服務。
負載均衡器透過設定虛擬服務地址,將位於同一機房的多臺 DC2 例項虛擬成一個高效能、高可用的應用服務池;再根據應用指定的方式,將來自客戶端的網路請求分發到雲伺服器池中,以此來擴充套件應用系統對外的服務能力,並消除單點故障的影響進而提升服務系統的可用性。詳情參考
-
選項-地域
和伺服器一樣,子網也有特定的地域供選擇,同一叢集我們保持所有資源的地域一致。 -
選項-付費方式
同 DC2。 -
選項-設定名稱
自定義,方便識別管理即可。 -
選項-網路
整個叢集需要在同一 VPC 專有網路下,這節配置的資源都使用預設即可。 -
選項-頻寬
若不勾選,負載均衡僅提供滴滴雲私網 IP 地址,只能透過滴滴雲內部網路訪問該負載均衡,Internet 使用者無法訪問,目前只支援公網負載均衡。
從上面叢集的結構圖中也可以看到,SLB 的公網 EIP 是我們將要搭建的叢集的入口,所以勾選並選擇合適的頻寬。這裡的頻寬也支援後續彈性伸縮的,所以選擇預設的即可,後面根據業務需要動態伸縮。 -
選項-設定監聽
負載均衡負責接收連線請求,然後根據均衡演算法定義的轉發策略將請求流量分發至雲伺服器。
目前滴滴雲的 SLB 是建立在 L4 上的,比如我們配置監聽 TCP 的 80 埠,均衡演算法選擇加權輪詢,然後在選擇新增伺服器資源的時候給上面建立 DC2.22 和 DC2.26 都是 50% 的權重,使用者從 SLB 的公網 EIP 過來的請求理論上將依次交替請求到 DC2.22 和 DC2.26 伺服器,達到均衡負載的能力。
建立完成後也可以方便的新增監聽,或者在指定監聽下面增減伺服器資源。
第三步 透過 DeployDC2 部署程式碼到叢集
透過雲伺服器 DeployDC2 對應的 EIP,在 Terminal 中
ssh dc2-user@DeployDC2
的 EIP 登入到 DeployDC2 伺服器,然後在透過當前伺服器 SSH 使用 DC2.22 或 DC2.26 的內網 IP 分別登入到叢集的兩個機器上進行操作。
為了方便,你還可以在 DeployDC2 上編寫指令碼或者編寫一個 Web 部署介面來操作上線部署,回滾等。
第三節 簡易搭建安全的伺服器叢集
如下圖,除了前兩節中出現的 VPC 和安全組 SG 會在這裡看到詳細的配置外,還會講到 HTTPS 的 CA 證照,Web 應用程式防火牆,與自動化構建結合部署叢集。後面這些不是必須的,但在安全和便利上收益是很大的。
第一步 配置 VPC
這裡我們需要搭建一套伺服器叢集,會涉及到 VPC 配置(Virtual Private Cloud)提供使用者安全、隔離、IP 地址可自定義配置的網路環境。
您可以完全掌控自己的專有網路,包括申請彈性公網 IP、建立子網、設定地址範圍、子網段、設定安全組策略,部署雲伺服器、負載均衡等雲服務資源,類似於利用 VPC 搭建你不同服務的內網環境。
VPC 底層進行了網路隔離,確保不同 VPC 之間網路流量不可見。 VPC 內部網路資源在隧道內部一跳即可到達目標資源,減少網路傳輸過程中可能出現的未知隱患。此外,VPC 內提供 IP 級別安全組,可以指定對虛擬機器資源進行網路安全限制,包括針對協議,埠,進出雙向限制,確保 VPC 內部安全。詳情參考 。
-
選項-地域
和伺服器一樣,VPC 也有特定的地域供選擇,同一叢集我們選擇所有資源的地域保持一致,不同叢集也可以透過一些技術使其網路互通,比如:- 使用 EIP,可以讓 VPC 內一個 IP 與公網連線
- 使用 VPC 對等連結,可以讓 VPC 之間相互打通
- 使用 VPN 或專線連通,VPC 可以與使用者資料中心連線
-
… …
-
選項-名稱
按規則自定義即可。 -
選項-VPC網段
這裡提供了為私有網路預留的三個 IP 網段 10.0.0.0/8、172.16.0.0.0/12、192.168.0.0/16, 包含可用的 IP 數依次減少,根據你的叢集中伺服器等資源的使用場景和規模選擇合適夠用的 IP 段即可。 -
選項-子網名稱
按規則自定義即可。 -
選項-子網可用區
這裡需要和當前叢集中的伺服器的可用區保持一致,同一應用服務可在不同可用區部署互作災備。 -
選項-子網網段
VPC 子網網段是 VPC 網段下的子集,可以為不同的應用服務叢集配置不同的子網網段,以便批次網路管理。
建立好後 VPC 及子網後,我們來建立叢集中的伺服器,建立過程同前面小節中的 DC2 建立過程,不同的是在 選項-網路 這一步選擇這裡建立的 VPC 及對應子網。當然在 VPC 的管理列表裡面也有從對應子網直接以此建立 DC2 的快捷功能。
同理,SLB 的建立在選擇 VPC 及子網的時候選擇這裡建立的同一 VPC 及子網即可。
其他詳情參考 。
第二步 配置應用安全組
安全組規則採用的是白名單方式,允許規則外的流量都會被禁止,滴滴雲預設提供了一個基礎的安全組,裡面配置了基本埠的規則,比如 22,80 等,如果理解並確定不需要的規則可以修改或刪除,或者不使用預設的安全組。
一個安全組對應多個規則,每個雲伺服器資源上可以疊加多個安全組,這樣有便於你分類管理。詳情可以參考 。
-
選項-地域
選擇你的 VPC 所在的地域。 -
選項-名稱
自定義即可。 -
選項-描述
比如某一服務需要開啟一批埠號,為了後面服用,加一個描述便於區別,自定義即可。 -
選項-VPC
選擇與叢集伺服器在同一個地域的 VPC。 -
選項-新增安全組規則
這裡使用的是白名單形式,不指定則無法透過只應用該安全組的雲伺服器訪問外部資源,也不能透過外網訪問該雲伺服器上的服務。非必填項,可以建立後在新增配置。 -
選項-應用到 DC2
選擇同一 VPC 地域的雲伺服器 DC2,非必填項,可以建立後在新增配置,也可以在 DC2 的操作頁面配置改安全組。
第三步 配置 Web 應用防火牆 WAF
開通 WAF
如下圖根據需要按步驟操作,開通後可以配置多個不同域名:
配置新增域名
-
選項-填寫域名
填寫你需要保護的站點的域名,例如: -
選項-協議
你的站點使用的協議是 HTTP 還是 HTTPS,根據需要選擇,如果是 HTTPS 的需要配置對應域名的 HTTPS 認證證照。個人站點的話網上提供了一些免費的證照獲取方式,企業的話可以在滴滴雲上 。 -
選項-源站IP
這裡選擇使用 SLB 的外網 EIP 即可。
配置完成後,我們在 WAF 列表找到對應域名項,複製 CNAME ,然後去購買域名的商家管理頁面,將你的域名使用 CNAME 解析方式解析到剛才複製的 CNAME 。
好了,現在總算把本節開頭的叢集結構圖上涉及的雲資源配置完了。剩下最下面的自動化部署部分的方案很多,這裡使用 GitLab CI&CD 的方案,可以參考前面的文章 Gitlab CI&CD 在前端專案自動化構建部署中的實踐 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2637582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在滴滴雲上搭建 MongoDB 叢集 (一):MongoDB
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- 在滴滴雲上學習 Kubernetes v1.13.0:叢集搭建
- 在滴滴雲 DC2 雲伺服器上搭建 RabbitMQ 叢集伺服器MQ
- 在滴滴雲 VPC 內搭建內網 DNS 服務內網DNS
- 使用Docker Swarm快速搭建與部署你的服務叢集DockerSwarm
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 ZooKeeper 叢集實戰(一)伺服器
- 如何在滴滴雲 DC2 上搭建 ETCD 叢集
- 使用containerd搭建MinIO叢集服務AI
- 使用 Docker 快速搭建單機版的 Kubernetes 叢集Docker
- 前端學習 node 快速入門 系列 —— 簡易版 Apache前端Apache
- Docker極簡入門:使用Docker-Compose 搭建redis叢集DockerRedis
- 快速搭建Jenkins叢集Jenkins
- 如何在滴滴雲 DC2 上搭建高可用 MySQL 叢集MySql
- 13、nginx服務叢集搭建以及優化Nginx優化
- 分散式協調服務☞zookeeper叢集搭建分散式
- 使用容器快速在阿里雲 ECS 多節點上搭建 Citus 12.1 叢集阿里
- 如何在滴滴雲 DC2 上搭建 MySQL 服務MySql
- PingCAP Clinic 服務:貫穿雲上雲下的 TiDB 叢集診斷服務PingCAPTiDB
- 用 Docker 快速搭建 Kafka 叢集DockerKafka
- linux shell快速搭建NSQ叢集Linux
- 使用 Terraform 在阿里雲上快速部署 MQTT 叢集ORM阿里MQQT
- 搭建分散式 Redis Cluster 叢集與 Redis 入門分散式Redis
- 在華為雲 OSC 上快速部署 EMQX MQTT 叢集MQQT
- 服務設計入門篇--理論與方法(摘抄滴滴)
- Zookeeper簡介與叢集搭建
- Hadoop HA叢集簡單搭建Hadoop
- 基於阿里雲日誌服務快速打造簡版業務監控看板阿里
- kafka入門:簡介、使用場景、設計原理、主要配置及叢集搭建(轉)Kafka
- 【工具-Nginx】從入門安裝到高可用叢集搭建Nginx
- 實時計算框架:Spark叢集搭建與入門案例框架Spark
- 快速掌握RabbitMQ(五)——搭建高可用的RabbitMQ叢集MQ
- yii2 restful web服務快速入門RESTWeb
- Zookeeper叢集搭建和簡介(二)
- Redis叢集搭建與簡單使用Redis
- WEB叢集- 高可用服務Web
- Kubernetes部署叢集Mysql服務MySql