国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從docker到istio之二 - 使用compose部署應用

yy13818512006 / 1015人閱讀

摘要:使用導出端口,使用掛載數據卷。清理應用使用一鍵清理應用總結已經實現了容器擴容自動擋更直觀的控制容器啟動順序及依賴。從部署到編排,單字面理解,看起來能夠維護的容器量都增長了。推薦應用包括多個服務,推薦部署方式就是。

前言

容器化,云原生越演越烈,新概念非常之多。信息爆炸的同時,帶來層層迷霧。我嘗試從擴容出發理解其脈路,經過實踐探索,整理形成一個入門教程,包括下面四篇文章。

容器化實踐之路-從docker到istio之一 - 使用Docker將應用容器化

容器化實踐之路-從docker到istio之二 - 使用compose部署應用

容器化實踐之路-從docker到istio之三 - kubernetes編排應用

容器化實踐之路-從docker到istio之四 - istio管理應用

這是第二篇,使用compose部署應用,同樣演示都在docker2istio目錄。

compose

Compose是一個用于定義和運行多容器Docker應用程序的工具,采用python編寫。

部署應用及測試 編寫應用部署文件

compose部署應用,采用編寫docker-compose.yml

version: "3"
services:

  redis:
    image: redis:4-alpine3.8
    restart: always
  
  flaskapp:
    depends_on:
      - redis
    build: ./app
    image: flaskapp:0.0.2
    links:
      - redis

  nginx:
    image: nginx:1.15.8-alpine
    depends_on:
      - flaskapp
    volumes:
      - ./nginx:/etc/nginx/conf.d
    restart: always
    ports:
      - "80:80"
    environment:
      - NGINX_PORT=80
    links:
      - flaskapp

這里描述了下面幾件事情:

    依次啟動redisflaskappnginx 三個服務。服務順序由depends_on 決定。

    使用build命令,自動編譯 flaskapp:0.0.2

    使用links命令,描述服務間依賴。

    使用ports導出端口,使用volumes掛載數據卷。

這一過程,把第一篇中啟動容器的過程,語義化,流程更清晰。

啟動應用

啟動應用,使用docker-compose up 命令:

Creating network "docker2istio_default" with the default driver
Building flaskapp
Step 1/5 : FROM python:3.6-alpine
 ---> 1d981af1e3b4
Step 2/5 : WORKDIR /code
 ---> Using cache
 ---> 7f2b07b16752
Step 3/5 : RUN pip install redis flask
 ---> Using cache
 ---> 79e39b6c2e93
Step 4/5 : ADD . /code
 ---> 4266029c0709
Step 5/5 : CMD ["python", "flaskapp.py"]
 ---> Running in 56e799a2fb61
Removing intermediate container 56e799a2fb61
 ---> 1a61773c4c07

Successfully built 1a61773c4c07
Successfully tagged flaskapp:0.0.2
WARNING: Image for service flaskapp was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating docker2istio_redis_1 ... done
Creating docker2istio_flaskapp_1 ... done
Creating docker2istio_nginx_1    ... done
Attaching to docker2istio_redis_1, docker2istio_flaskapp_1, docker2istio_nginx_1
flaskapp_1  |  * Serving Flask app "flaskapp" (lazy loading)
flaskapp_1  |  * Environment: production
flaskapp_1  |    WARNING: Do not use the development server in a production environment.
flaskapp_1  |    Use a production WSGI server instead.
flaskapp_1  |  * Debug mode: on
redis_1     | 1:C 09 Apr 12:06:15.892 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1     | 1:C 09 Apr 12:06:15.893 # Redis version=4.0.12, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1     | 1:C 09 Apr 12:06:15.893 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
flaskapp_1  |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
flaskapp_1  |  * Restarting with stat
flaskapp_1  |  * Debugger is active!
redis_1     | 1:M 09 Apr 12:06:15.894 * Running mode=standalone, port=6379.
redis_1     | 1:M 09 Apr 12:06:15.894 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1     | 1:M 09 Apr 12:06:15.894 # Server initialized
flaskapp_1  |  * Debugger PIN: 323-612-506
redis_1     | 1:M 09 Apr 12:06:15.894 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command "echo never > /sys/kernel/mm/transparent_hugepage/enabled" as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1     | 1:M 09 Apr 12:06:15.894 * Ready to accept connections

啟動日志中,展示了創建網絡,編譯鏡像,啟動容器這幾個過程

訪問應用

使用 docker-compose ps 檢查服務狀況:

         Name                        Command               State         Ports
-------------------------------------------------------------------------------------
docker2istio_flaskapp_1   python flaskapp.py               Up
docker2istio_nginx_1      nginx -g daemon off;             Up      0.0.0.0:80->80/tcp
docker2istio_redis_1      docker-entrypoint.sh redis ...   Up      6379/tcp

當然,compose也是使用docker,也可以 docker ps

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                NAMES
c96fd468c415        nginx:1.15.8-alpine   "nginx -g "daemon of…"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp   docker2istio_nginx_1
b61d1d0ca201        flaskapp:0.0.2        "python flaskapp.py"     3 minutes ago       Up 3 minutes                             docker2istio_flaskapp_1
73a2359655d2        redis:4-alpine3.8     "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        6379/tcp             docker2istio_redis_1

對比可見 docker-compose ps ,更偏應用層。

然后訪問服務:

?  ~ curl http://127.0.0.1
Hello World by 172.19.0.3 from 172.19.0.1 ! 該頁面已被訪問 1 次。
應用擴容

使用 docker-compose up --scale flaskapp=2flaskapp進行擴容。

查看擴容的結果:

?  docker2istio docker-compose ps
         Name                        Command               State         Ports
-------------------------------------------------------------------------------------
docker2istio_flaskapp_1   python flaskapp.py               Up
docker2istio_flaskapp_2   python flaskapp.py               Up
docker2istio_nginx_1      nginx -g daemon off;             Up      0.0.0.0:80->80/tcp
docker2istio_redis_1      docker-entrypoint.sh redis ...   Up      6379/tcp

刷新訪問應用

?  docker2istio curl http://127.0.0.1
Hello World by 172.20.0.4 from 172.20.0.1 ! 該頁面已被訪問 101 次。
?  docker2istio curl http://127.0.0.1
Hello World by 172.20.0.3 from 172.20.0.1 ! 該頁面已被訪問 102 次。

同時觀察服務日志輸出:

nginx_1     | 172.22.0.1 - - [10/Apr/2019:01:38:02 +0000] "GET / HTTP/1.0" 200 76 "-" "ApacheBench/2.3" "-"
flaskapp_1  | [2019-04-10 01:38:02,140] DEBUG in flaskapp: Hello out 172.22.0.3 172.22.0.1 65:
flaskapp_1  | 172.22.0.5 - - [10/Apr/2019 01:38:02] "GET / HTTP/1.0" 200 -
flaskapp_1  | [2019-04-10 01:38:02,141] DEBUG in flaskapp: Hello out 172.22.0.3 172.22.0.1 63:
flaskapp_2  | [2019-04-10 01:38:02,145] DEBUG in flaskapp: hello in
flaskapp_1  | 172.22.0.5 - - [10/Apr/2019 01:38:02] "GET / HTTP/1.0" 200 -
nginx_1     | 172.22.0.1 - - [10/Apr/2019:01:38:02 +0000] "GET / HTTP/1.0" 200 76 "-" "ApacheBench/2.3" "-"
flaskapp_1  | [2019-04-10 01:38:02,150] DEBUG in flaskapp: hello in
flaskapp_2  | [2019-04-10 01:38:02,151] DEBUG in flaskapp: hello in
nginx_1     | 172.22.0.1 - - [10/Apr/2019:01:38:02 +0000] "GET / HTTP/1.0" 200 76 "-" "ApacheBench/2.3" "-"
flaskapp_2  | [2019-04-10 01:38:02,153] DEBUG in flaskapp: Hello out 172.22.0.4 172.22.0.1 67:
flaskapp_2  | 172.22.0.5 - - [10/Apr/2019 01:38:02] "GET / HTTP/1.0" 200 -
nginx_1     | 172.22.0.1 - - [10/Apr/2019:01:38:02 +0000] "GET / HTTP/1.0" 200 76 "-" "ApacheBench/2.3" "-"
flaskapp_2  | [2019-04-10 01:38:02,156] DEBUG in flaskapp: Hello out 172.22.0.4 172.22.0.1 69:
flaskapp_1  | [2019-04-10 01:38:02,156] DEBUG in flaskapp: hello in
flaskapp_2  | 172.22.0.5 - - [10/Apr/2019 01:38:02] "GET / HTTP/1.0" 200 -
flaskapp_1  | [2019-04-10 01:38:02,159] DEBUG in flaskapp: hello in
flaskapp_2  | [2019-04-10 01:38:02,161] DEBUG in flaskapp: hello in
nginx_1     | 172.22.0.1 - - [10/Apr/2019:01:38:02 +0000] "GET / HTTP/1.0" 200 76 "-" "ApacheBench/2.3" "-"
flaskapp_1  | [2019-04-10 01:38:02,160] DEBUG in flaskapp: Hello out 172.22.0.3 172.22.0.1 70:

對比純docker的方式,擴容變簡單了。

需要注意的是:擴容過程中要重啟nginx服務,否則雖然容器擴充成多個,但是服務流量并不會分配到新容器。不過容器啟動和創建非常迅速,可以先docker-compose down再行擴容啟動。

docker-compose scale Note: This command is deprecated. Use the up command with the --scale flag instead. Beware that using up with --scale flag has some subtle differences with the scale command as it incorporates the behaviour of up command.

清理應用

使用 docker-compose down 一鍵清理應用

Removing docker2istio_nginx_1    ... done
Removing docker2istio_flaskapp_2 ... done
Removing docker2istio_flaskapp_1 ... done
Removing docker2istio_redis_1    ... done
Removing network docker2istio_default
總結

compose 已經實現了容器擴容自動擋:

    更直觀的控制容器啟動順序及依賴。

    使用便捷,擴容方便。

不過compose的自動擋,充其量只是一個摩托版,作為小型/測試應用的部署方案還是不錯。如果是大型/正式應用,還有以下缺點:

    擴容不能夠無縫,需要重啟服務。

    單純的compose不支持多機互聯。

要實現多機部署擴容,就需要使用到 kubernetes的容器編排方案了。從部署到編排,單字面理解,看起來能夠維護的容器量都增長了。相比 docker 家的swarm+machine方案, kubernetes 已經是容器編排領域的事實標準,更值得學習了解。

推薦

    harbor harbor應用包括多個服務,推薦部署方式就是compose。

    gogs-drone-docker 。演示了如何快速使用docker compose 搭建一個ci系統。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/6995.html

相關文章

  • 數人云|服務網格新生代Istio進化,與傳統模式相較5大特性更助容器擴展

    摘要:敖小劍萬字解讀服務網格新生代添加很多新的功能以及改建,下面來談一談,讓人激動的大改進對于自定義資源和初始化器的支持,要求或更新,如果集群中啟用了特性,建議安裝初始化器,它為所有想要的管理的微服務部署注入了自動的。 關于Service Mesh,數人云之前給大家分享了敖小劍老師的《Qcon2017實錄|Service Mesh:下一代微服務》那么它對于容器相比傳統模式都有哪方面的優勢呢?...

    fnngj 評論0 收藏0
  • 云服務搭臺,AI唱戲,這是一場不遜于I/O的Google科技大會

    摘要:當地時間月日,在結束的一個半月后,名開發者再度聚首舊金山。截止到,公司資本支出為億美元,相當于去年同期的億美元的兩倍。即使是自認為對 Google 非常熟悉的人們,也可能沒有聽過 Cloud Next 大會的名字。這是 Google I/O 以外,這家公司又一個吸粉無數的開發者盛會。當地時間 7 月 24 日,在 I/O 結束的一個半月后,25000 名 Google Cloud 開發者再度...

    stonezhu 評論0 收藏0
  • 華爾街見聞基于istio的服務網格實踐

    摘要:,托管于騰訊云容器平臺容器編排工具。適配我們目前的服務部署在騰訊云托管,節點使用核的網絡增強型機器,所有的后端服務都以部署,集群外部署高可用支持集群內服務發現,數據庫以為主,消息隊列采用。 距離2017年的見聞技術架構調整接近2年,隨著業務線的發展,見聞技術部的項目數量、項目架構類型、基礎設施規模、服務變更頻率都在不斷地增長,帶給SRE的挑戰是如何能更快地助力于開發人員更快更穩定地部署...

    stonezhu 評論0 收藏0
  • 布道Istio,Rancher聯合華為“搞事兒”

    摘要:年月的華為大會上,兩人開始了對的討論。聯合創始人及梁勝在月上海中,聯合華為布道華為云和以下簡稱的合作由來已久。這一觀點與梁勝的看法不謀而合。甫一見面,方璞便向梁勝拋出了一個重磅問題:在K8S之后,你覺得未來最有前途的容器技術是什么呢?方璞是華為云容器服務域的產品總監,主要負責華為云容器的構建和部署。我覺得是Istio。方璞說。2016年9月的華為CONNECT大會上,兩人開始了對Istio的...

    付永剛 評論0 收藏0
  • 服務遷移之路 | Spring Cloud向Service Mesh轉變

    摘要:服務網關服務網關涵蓋的功能包括路由,鑒權,限流,熔斷,降級等對入站請求的統一攔截處理。具體可以進一步劃分為外部網關面向互聯網和內部網關面向服務內部管理。應用服務應用服務是企業業務核心。到此實際上已經完成服務遷移工作。 導讀 Spring Cloud基于Spring Boot開發,提供一套完整的微服務解決方案,具體包括服務注冊與發現,配置中心,全鏈路監控,API...

    rickchen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<