Rancher+Docker部署apollo(來自一個新手超詳細的總結)【1】

apollo官方網址:https://github.com/ctripcorp/apollo
先仔細閱讀官方的apollo介紹,大致瞭解apollo的架構及功能。我在部署這個項目之前對docker及rancher基本不瞭解,所以是邊學習邊部署,所以這是一個適合新手閱讀的文章,如果發現文章中的問題,歡迎留言。本文會先介紹在虛擬機上使用docker部署apollo,然後再介紹部署到rancher。
一、在虛擬機上使用docker部署
1.將apollo項目下載到本地

apollo的架構圖主要的三部分:(引用官方文檔)
(1)Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端
(2)Admin Service提供配置的修改、發佈等功能,服務對象是Apollo Portal(管理界面)
(3)Apollo Portal 提供界面

2.查看作者提供好的dockerfile(以apollo-configservice爲例)

apollo-configservice的dockerfile
我是docker的初學者,所以在dockerfile中加了些自己的理解。三個dockerfile大同小異,不再贅述其他兩個。

3.在在官網上獲得作者打包好的壓縮包,注意版本,1.1.2的版本在使用時可能會有url解析異常的錯誤(兩個//的問題),所以在部署時要使用1.2.0版本,也可以自己在本地打包的,(自己在本地打包請按照下面一步配置好數據庫及meta信息後執行build.sh進行打包,官網也有詳細描述)https://github.com/ctripcorp/apollo/releases
在這裏插入圖片描述
4.創建數據庫,作者已經寫好的sql語句直接執行即可
文件位置
我在docker部署的時候直接將數據庫放在了我的windows主機上,這樣就要保證mysql的root可以被遠程訪問(可以百度,很簡單),也可以安裝在虛擬機上(我覺得安裝很麻煩),後期將鏡像放在rancher的時候可以使用docker官方的mysql鏡像,所以在docker部署的時候沒有很注重mysql。

5.對安裝包的內容進行修改(主要是數據庫地址,meta-service地址)
[1](apollo-configservice壓縮包打開)在config->application-github.properties文件中。修改爲你的ip,用戶名及密碼

apollo支持四個環境的配置,想要多環境部署的,apolloconfigdb在每個環境都要有一套(在每個環境做的配置要分別保存)在rancher上很簡單多起幾個mysql容器即可。在本地的話可以修改下數據庫的名字(表保持不動),一定保證每個環境對應的apolloconfigdb不同
比如上圖爲dev環境的apollo-configservice的apolloconfigdbdb ,下圖爲其他環境的db【fat環境】

[2](apollo-adminservice壓縮包打開)在config->application-github.properties文件中,修改爲你的ip,用戶名及密碼

apollo-adminservice中也是ApolloConfigDB所以在多環境部署時記得更換數據庫的連接地址
[3] (apollo-portal壓縮包打開)兩處需要修改
在config->application-github.properties文件中,修改爲自己的ip及用戶名密碼

在config->apollo-env.properties文件中,meta-service配置

apollo-configservice,apollo-adminservice,apollo-portal是三個服務,Config Service和Admin Service都是多實例、無狀態部署,所以需要將自己註冊到Eureka中並保持心跳,Portal通過域名訪問Meta Server獲取Admin Service服務列表(IP+Port),而後直接通過IP+Port訪問服務,同時在Portal側會做load balance、錯誤重試。作者將apollo-configservice和Eureka放在一起,所以portal需要知道每個環境的Eureka地址也就是apollo-configservice的地址如上圖
。設計好端口後,在容器啓動時就要用-p指定(後面會講)

6.現在安裝包和dockerfile都準備好了,開始在虛擬機上打鏡像(安裝好docker)
在usr目錄下創建一個apollo目錄

(1)先打apollo-configservice鏡像
在apollo目錄項創建config目錄

將apollo-configservice的壓縮包以及dockerfile放在config目錄下
創建鏡像
docker build是創建鏡像的語句,-t 相當於給鏡像起名字 config/csdn就是這個鏡像的名字 .是標識dockerfile就在當前目錄
出現這樣的日誌證明build鏡像成功
使用docker image ls 可以查看所有的鏡像
在這裏插入圖片描述
【注意】
如果出現這樣的問題,說明沒有找到源文件。仔細查看下源文件在不在。注意文件名。我出現這個問題就是因爲我的dockerfile中使用的壓縮包是1.2.0版本的,但是我的壓縮包是1.1.2版本的所以找不到
(2)打apollo-adminservice鏡像
在apollo目錄下創建admin目錄,並且把apollo-adminservice的壓縮包和dockerfile放在admin目錄下
在這裏插入圖片描述
build鏡像
在這裏插入圖片描述
(3)打portal鏡像
在apollo目錄下創建portal,把壓縮包和dockerfile正確放置
build鏡像
在這裏插入圖片描述
7.使用容器啓動這三個服務。注意一點
apolloconfig
apolloconfigdb中的serverconfig表的eureka.service.url字段是apollo-configservi ce,apollo-adminservice註冊的地址,這個地址作者已經設置爲何apollo-configservice的地址,也就是說虛擬機對應的啓動apollo-configservice容器的地址,我們使用32782,作爲dev環境apollo-configservice的地址(和portal中配置保持一致)
(1)用容器啓動apollo-configservice
在這裏插入圖片描述
docker run 是啓動容器的命令 、
-d:後臺運行(不使用-d則是前臺啓動,那關閉頁面的時候容器就停止,而且啓動一個容器後這個頁面就不能使用了)
-pport1:port2 port1是宿主機會開啓的端口,port2是這個容器會打開的端口
–name爲容器指定名字
17abccab1d22:是鏡像的id
使用docker ps可以查看正在運行的容器(docker ps -a查看所有的容器)
在這裏插入圖片描述
再使用docker logs 容器id 來查看日誌,看到如下日誌證明啓動成功
在這裏插入圖片描述
測試:訪問宿主機ip:端口,像這樣說明apollo-configservice啓動完成
在這裏插入圖片描述
(2)啓動apollo-adminservice
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
看到上面的日誌證明啓動成功
再次訪問宿主機ip:32782
在這裏插入圖片描述
發現apollo-adminservice也註冊成功
(3)啓動apollo-portal
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
訪問宿主機ip:32784就可以看到部署成功,使用apollo admin就可以登錄。部署成功後可以使用自己的項目做配置測試,熟練apollo的運用。
在這裏插入圖片描述
寫着寫着覺得有點長,rancher部署會在第二篇寫。

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