前言
--
我們之前對系統(tǒng)進行了拆分屏歹,將單一的應用揭北,被拆分了很多的服務扳炬。RPC框架使用的是dubbo,但是這樣就帶來了其他的一些問題搔体。比如恨樟,應用的不斷增加,導致消耗的虛擬機也越來越多疚俱,這樣導致的運維的成本也非常的高劝术。
所以我們就想著使用 docker+dubbo 的方式來解決。
但是眾所周知呆奕,dubbo與docker想要結(jié)合可不是那么容易的一件事情养晋,所有怎么弄一個,整理了一個完整的流程梁钾。
解決思路與方案
--
為了更好的統(tǒng)一維護绳泉,dubbo需要在web容器里面運行,可以使用springboot或者tomcat姆泻。我們使用的是將dubbo服務全部改造零酪,可以在tomcat中運行。原因有更多的是適應我們已有的架構(gòu)拇勃,也可以選用springboot四苇。
dubbo是將服務注冊到注冊中心的時候,是需要將主機的ip與port寫到主持中心方咆。我的解決思路是這樣的月腋,容器中注冊上來的地址就是宿主的ip,并且宿主與容器映射的端口相互一致。
- 還有我們還是有mvc的應用罗售,由于docker的端口映射都是只能映射一個辜窑,所有原有所有都是8080端口的都需要有一個改造方案钩述。那么改造的鏈路就是寨躁,分配端口-》啟動容器,端口映射-》修改nginx映射牙勘。
所以以上兩點都是基于端口职恳,集群的端口管理不再贅述
- 還有我們大量的依賴日志進行問題排查與數(shù)據(jù)收集,當宿主與容器非常的多的時候方面,查閱日志就變得非常的麻煩放钦,于是我們就設(shè)計了一個日志收集方案。(ksearch是我們自研的查詢平臺)
- 還有就是需要n個宿主機的問題恭金,我們現(xiàn)在有非常多的應用操禀,所有我們的物理機也是蠻多的,所以我們需要有機器管理宿主機器的能力横腿。
[站外圖片上傳中...(image-5c137a-1512119266558)]
后記
--
現(xiàn)在alibaba研發(fā)團隊重新開始維護dubbo颓屑,之后dubbo對docker的支持也會更好。在沒有成熟之前耿焊,這些方案還沒有使用的線上環(huán)境揪惦。不過我相信容器化,是一種趨勢罗侯。作為一個高齡程序猿器腋,還是需要不斷的接觸新的事物,這是一個終生學習的時代钩杰。