好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 環信大學 | 構建一套適合微服務的高可用架構

環信大學 | 構建一套適合微服務的高可用架構

熱門標簽:寧津縣地圖標注app 400電話申請的主要特點 小R電話機器人 微碼科技電銷機器人 河南智能電銷機器人加盟 百度地圖標注怎么調整 菏澤智能外呼系統平臺 許昌自動外呼系統怎么收費 電話機器人對電銷行業的影響
  隨著近幾年微服務與云計算的飛速發展,機器由物理機逐步變為了虛擬機,應用服務由龐大的單體應用逐漸變為了若干個微服務聯合組成的應用集群,更新迭代的速度成倍上漲,傳統的部署模式已無法滿足開發日常更新需求,需要一套適合微服務的管理架構。
  技術棧及文檔
  資源調度框架MESOS
  應用編排平臺Marathon
  nginx動態修改upstream dyups
  nginx動態修改upstream upsync
  使用Mesos進行機器資源管理
  首先,是機器資源的管理。在微服務的架構中,原有的單體服務被拆分成了一個個獨立單元的應用程序,這些服務體量較小,可以獨立運行在配置較小的機器上。為了故障隔離,我們會盡可能的把這些服務部署在不同的虛擬機上,這樣機器的數量會成倍增加。對于運維來說,每個新服務部署時,需要先查看現有機器的剩余資源是否滿足新服務的需求,有時可能因為評估不準確造成來回擴容、遷移,或者資源浪費。
  開始時,我們的架構可能時這樣的
  為了解決上面的問題,可以使用MESOS(布式資源管理框架),它可以讓我們像用一臺電腦(一個資源池)一樣使用整個數據中心。
  mesos部署時分為master和agent兩個角色,當然,你可以在同一臺機器啟動它們。
  安裝Mesos前需要安裝zookeeper,mesos使用zk實現高可用和選舉,包括一個masterleader和幾個備份master避免宕機。
  Mesos master負責管理各個Framework和Slave,并將Slave上的資源非配給各個Framework。
  Mesos agent負責管理本節點上的各個MesosTask,為各個Executor分配資源(低版本為mesos-slave)。
  1. $ cat > /tmp/bintray-mesos-el.repo EOF
  2. #bintray-mesos-el - packages by mesos from Bintray
  3. [bintray-mesos-el]
  4. name=bintray-mesos-el
  5. baseurl=https://dl.bintray.com/apache/mesos/el7/x86_64
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. enabled=1
  9. EOF
  10. $ sudo mv /tmp/bintray-mesos-el.repo /etc/yum.repos.d/bintray-mesos-el.repo
  11. $ sudo yum update
  12. $ sudo yum install mesos
  13. $ tree /etc/mesos-master
  14. /etc/mesos-master/
  15. |-- hostname
  16. |-- ip
  17. |-- log_dir
  18. |-- quorum # quorum > (number of masters)/2
  19. `-- work_dir
  20. $ tree /etc/mesos-agent
  21. /etc/mesos-agent/
  22. |-- containerizers # 容器類型,默認 mesos,可以添加 docker,如: mesos,docker
  23. |-- hostname
  24. |-- ip
  25. |-- log_dir
  26. |-- master # master 地址,格式為 host:port 或
  27. zk://host1:port1,host2:port2,.../path 或 file:///path/to/file
  28. |-- resources # 設置總資源大小,可以設置小些來預留更多機器資源
  29. `-- work_dir
  30. $ cat /etc/mesos/zk # 設置 mesos 在zk 中的存儲目錄
  31. zk://192.168.100.9:2181,192.168.100.110:2181,192.168.100.234:2181/mesos
  32. $ systemctl start mesos-master
  33. $ systemctl start mesos-slave
  當mesos服務啟動后,agent會向master節點匯報機器資源,包括CPU、內存、磁盤等。當我們要發布一個服務時,只需要設置這個服務的CPU、內存、磁盤參數,mesosmaster會自動幫我們選擇有足夠資源的機器去運行,如下圖
  我們將微服務的啟動都交給Mesos管理,這樣我們只需要關注整體資源即可。MESOS提供了UI界面,可以直接訪問mesosmaster的5050端口,查看集群資源使用情況。總體使用情況及Agent節點使用情況
  完成以上后,我們的架構變成了這樣
  使用Marathon進行微服務管理
  Marathon是建立在Mesos上的私有PaaS平臺。它能自動處理硬件或者軟件故障,并確保每個應用程序都永遠在線。我們使用Marathon管理微服務有以下優勢
  支持容器和非容器,不受限于服務啟動類型,操作系統版本等
  漂亮而強大的用戶界面,可以在UI上進行快捷方便的應用程序配置
  支持約束條件,例如允許一個mesos agent節點只運行一個應用程序
  支持健康檢查。可以配置http、https、tcp、command類型的監控檢查
  完整的RESTAPI,易于集成和編寫腳本。這個對于后期集成來說至關重要
  1. # Add the repository
  2. $ sudo rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm
  3. # Install packages
  4. $ sudo yum -y install mesos marathon
  5. # marathon and mesos zk path
  6. $ cat /etc/default/marathon
  7. MARATHON_MESOS_USER="root"
  8. MARATHON_MASTER="zk://192.168.100.9:2181,192.168.100.110:2181,192.168.100.234:2181/mesos"
  9. MARATHON_ZK="zk://192.168.200.9:1181,192.168.100.110:2181,192.168.100.234:2181/marathon"
  10. systemctl start marathon
  啟動后,直接訪問marathon的8080端口,就能看到一個漂亮強大的UI界面。
  我們以springboot應用為例,在marathon上創建一個應用程序
  當我們更新應用程序時,marathon會新建相同實例數量的應用程序,待healthcheck通過之后替換老節點,所以不需要擔心新的服務沒有啟動期間老的服務停掉造成線上事故。到這里為止,我們已經可以在marathon上方便快捷的進行日常應用的創建、升級、擴容、縮容。當服務健康檢查失敗或者機器宕機后,marathon會自動在其它節點上啟動掛掉的應用程序,大大提升了高可用性。
  使用nginx upsync/dyups模塊進行平滑變更
  當我們的微服務可以隨機分配在不同機器上時,便產生了一個新的令人頭疼的問題。nginx并不知道后端節點的變更,也不可能每次都去手動修改upstream節點,reloadnginx,這樣成本就太高了。我們的解決思路是和微服務的注冊中心打通,當服務注冊、注銷時,都會對注冊中心進行更新,利用nginx upsync/dyups模塊可以動態修改upstream節點的能力進行同步,做到平滑變更。如果使用的注冊中心為consul,建議使用upsync模塊,這樣無需開發,只需要簡單的nginx配置,就可以實現我們想要的效果,支持consulkv,consul_services,consul_health,同時upsync也支持etcd。建議使用consul_health接口。upsync模塊不是nginx內置模塊,使用時需要重新編譯添加此模塊。
  1. wget 'http://nginx.org/download/nginx-1.8.0.tar.gz'
  2. tar -xzvf nginx-1.8.0.tar.gz
  3. cd nginx-1.8.0/
  4. ./configure --add-module=/path/to/nginx-upsync-module
  5. make
  6. make install
  配置文件示例
  1. http {
  2. upstream test {
  3. upsync 127.0.0.1:8500/v1/health/service/test upsync_timeout=6m upsync_interval=500ms upsync_type=consul_health strong_dependency=off;
  4. upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;
  5. include /usr/local/nginx/conf/servers/servers_test.conf;
  6. }
  7. upstream bar {
  8. server 127.0.0.1:8090 weight=1 fail_timeout=10 max_fails=3;
  9. }
  10. server {
  11. listen 8080;
  12. location = /proxy_test {
  13. proxy_pass http://test;
  14. }
  15. location = /bar {
  16. proxy_pass http://bar;
  17. }
  18. location = /upstream_show {
  19. upstream_show;
  20. }
  21. }
  22. }
  當upsync無法滿足我們的需求或者注冊中心不是consul、etcd時,我們可以考慮使用nginxdyups模塊。dyups僅對外提供upstream的增刪查改接口,和注冊中心對比、修改的工作需要我們通過腳本的方式完成。雖然這種方式麻煩一些,但是可定制化程度高,支持http,C,luaAPI,基本上可以滿足大部分的場景需求。
  dyups模塊也需要nginx編譯時添加
  1. $ git clone git://github.com/yzprofile/ngx_http_dyups_module.git
  2. # to compile as a static module
  3. $ ./configure --add-module=./ngx_http_dyups_module
  4. # to compile as a dynamic module
  5. $ ./configure --add-dynamic-module=./ngx_http_dyups_module
  示例配置
  1. http {
  2. include conf/upstream.conf;
  3. server {
  4. listen 8080;
  5. location / {
  6. # The upstream here must be a nginx variable
  7. proxy_pass http://$dyups_host;
  8. }
  9. }
  10. server {
  11. listen 8088;
  12. location / {
  13. return 200 "8088";
  14. }
  15. }
  16. server {
  17. listen 8089;
  18. location / {
  19. return 200 "8089";
  20. }
  21. }
  22. server {
  23. listen 8081;
  24. location / {
  25. dyups_interface;
  26. }
  27. }
  28. }
  特別注意,使用dyups時,proxy_pass時的upstream必須是nginx變量,否則不生效,切記。
  整體回顧
  經過以上調整,我們得到了以下優化
  服務器資源自動分配,合理利用
  提升微服務的高可用性
  減低OPS人工成本,更加便于管理和維護

標簽:保定 隴南 珠海 鄂州 宣城 資陽 南昌 怒江

巨人網絡通訊聲明:本文標題《環信大學 | 構建一套適合微服務的高可用架構》,本文關鍵詞  環信,大學,構建,一套,適合,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《環信大學 | 構建一套適合微服務的高可用架構》相關的同類信息!
  • 本頁收集關于環信大學 | 構建一套適合微服務的高可用架構的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本68xxxxxxxxx老师| 20厘米的茎多大图片| 极品尤物一区二区三区小说| 宝贝夹紧点| 女人高潮被爽到呻吟床戏视频| 昭和人妻农妇野外被强| 母乳人奶喷母乳av.wwww| 成人免费网站在线观看网址| xvdeviosbbc黑人| 女配穿书被强啪入侵H| 嗯啊好舒服视频| 好爽好紧别夹h| 毛片123| 好爽毛片一区二区三区色欲| 老女人性生交大片免费| 国产免费xxx视频在线观看| 五月婷婷综合在线| 色yeye在线观视频| 免费看美女部位隐私| japanbabes日本人奶水| 男男寝室互攻h啪肉np文| 嗯啊…老师你的奶真软真大| 日韩人妻无码精品一区二区三区| 午夜草莓| 内射老妇女BBWXOGOD| 飘雪电影在线手机免费观看| 少妇高潮免费看一级A片精东影视| 6080影视大全| 成人版巜女超人H版在线播放| 好紧好爽范冰冰系列| 嫩小xxxxx性bbbbb孕妇| 午夜十二点正片高清电影| 99久久精品费精品蜜臀Av| 久久精品国产屋| 全肉乱妇情满四合院h| 高清伦理电影在线看| 91?国产?爽?黄?在线| porono日本xxx| 护士系列最好看的av| 99蜜臀噜噜噜在线视频观看| 男国猛少妇色XXXXX猛交|