<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      docker分布式部署pyspider

      docker分布式部署pyspider

      一、部署環境:

      總共三臺物理機、用戶名都為docker 密碼123456

      主機1:ip為192.168.5.44;

                         部署postgres、redis、scheduler各1個

      主機2:ip為192.168.5.45:

                         部署phantomjs組件(2個)、phantomjs-lb負載均衡服務一個、webui組件(4個)、                          webui-lb負載均衡服務一個、fetcher組件(1個)、fetcher-lb負載均衡服務一個、                     processor組件(2個)、result-worker組件(2個)

      主機3:ip為192.168.5.43:

                         部署組件同主機2

      docker需要用超級用戶來操作, 因此我們先給docker添加權限之后,就可以一直用docker用戶而不是root來操作了。

      $ sudo groupadd docker           # 添加docker用戶組

      $ sudo gpasswd -a docker docker    # 把自己加到docker用戶組中

      $ sudo service docker restart       # 重啟docker后臺服務

      $ exit                          # 注銷,然后再登陸

      (注:如果docker執行不了sudo命令則用root

      打開/etc/sudoers文件加上"docker    ALL=(ALL)   ALL"即可 )

      二、主機1的部署

      1、安裝docker:

      我們安裝的是docker社區版參照:

      https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/#先決條件

      2、安裝pyspider組件:

      1、#postgres數據庫

               docker run --name postgres -v /data/postgres/:/var/lib/postgresql/data -d -p 5432:5432 -e      POSTGRES_PASSWORD="" postgres

      用docker啟動數據庫的時候必須要映射到物理機的目錄上,否則docker刪除之后原來的數據將全部被刪除。這里我將容器postgres的data目錄掛載到物理機的/data/postgres/目錄下。

      2、#redis隊列

               docker run --name redis -d --rm -p 6379:6379 redis

      3、#調度器scheduler

             docker run --name scheduler -d -p 23333:23333 binux/pyspider \

               --taskdb "sqlalchemy+postgresql+taskdb://postgres@192.168.5.44:5432/taskdb" \

               --resultdb "sqlalchemy+postgresql+resultdb://postgres@192.168.5.44:5432/resultdb" \

               --projectdb "sqlalchemy+postgresql+projectdb://postgres@192.168.5.44:5432/projectdb" \

      --message-queue "redis://192.168.5.44:6379" \

       scheduler --inqueue-limit 5000 --delete-time 43200

      三、主機2的部署

      1、#安裝docker-compose:

      主機2的部署我們用的是docker-compose的方式管理多個docker容器的。

      首先下載docker-compose工具,用官方手冊的命令如下會有問題,命令無法使用

      curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

       

      所以最好選擇從github上下載好https://github.com/docker/compose/releases

      找對應的版本docker-compose-Linux-x86_64 7.67 MB

                       docker-compose-Windows-x86_64.exe 5.97 MB

      然后重命名為docker-compose 拷貝到 /usr/local/bin/

      修改為可執行的權限sudo chmod +x /usr/local/bin/docker-compose

      可使用docker-compose --version測試安裝是否成功。

      2、配置docker-compose.yum文件:

      內容如下:

      phantomjs:

        image: 'binux/pyspider:latest'

        command: phantomjs

        cpu_shares: 512

        environment:

          - 'EXCLUDE_PORTS=5000,23333,24444'

        expose:

          - '25555'

        mem_limit: 512m

        restart: always

      phantomjs-lb:

        image: 'dockercloud/haproxy:latest'

        links:

          - phantomjs

        restart: always

      fetcher:

        image: 'binux/pyspider:latest'

        command: '--message-queue "redis://192.168.5.44:6379"

                 --phantomjs-proxy "phantomjs:80" fetcher --xmlrpc'

        cpu_shares: 512

        environment:

          - 'EXCLUDE_PORTS=5000,25555,23333'

        links:

          - 'phantomjs-lb:phantomjs'

        ports:

          - '24444:24444'

        mem_limit: 128m

        restart: always

      fetcher-lb:

        image: 'dockercloud/haproxy:latest'

        links:

          - fetcher

        restart: always

      processor:

        image: 'binux/pyspider:latest'

        command: '--projectdb "sqlalchemy+postgresql+projectdb://postgres@192.168.5.44:5432/projectdb"

                 --taskdb "sqlalchemy+postgresql+taskdb://postgres@192.168.5.44:5432/taskdb"

                 --resultdb "sqlalchemy+postgresql+resultdb://postgres@192.168.5.44:5432/resultdb"

                 --message-queue "redis://192.168.5.44:6379" processor'

        cpu_shares: 512

        mem_limit: 256m

        restart: always

      result-worker:

        image: 'binux/pyspider:latest'

        command: '--taskdb "sqlalchemy+postgresql+taskdb://postgres@192.168.5.44:5432/taskdb" 

                 --projectdb "sqlalchemy+postgresql+projectdb://postgres@192.168.5.44:5432/projectdb"

                 --resultdb "sqlalchemy+postgresql+resultdb://postgres@192.168.5.44:5432/resultdb"

                 --message-queue "redis://192.168.5.44:6379" result_worker'

        cpu_shares: 512

        mem_limit: 256m

        restart: always

      webui:

        image: 'binux/pyspider:latest'

        command: '--taskdb "sqlalchemy+postgresql+taskdb://postgres@192.168.5.44:5432/taskdb"

                 --projectdb "sqlalchemy+postgresql+projectdb://postgres@192.168.5.44:5432/projectdb"

                 --resultdb "sqlalchemy+postgresql+resultdb://postgres@192.168.5.44:5432/resultdb"

                 --message-queue "redis://192.168.5.44:6379" webui

                 --max-rate 0.2 --max-burst 3

                 --scheduler-rpc "http://192.168.5.44:23333/"

                 --fetcher-rpc "http://192.168.5.43:24444/"'

        cpu_shares: 512

        environment:

          - 'EXCLUDE_PORTS=24444,25555,23333'

        links:

          - 'fetcher-lb:fetcher'

        mem_limit: 256m

        restart: always

      webui-lb:

        image: 'dockercloud/haproxy:latest'

        links:

          - webui

        restart: always

      nginx:

        image: 'nginx:latest'

        links:

          - 'webui-lb:HAPROXY'

        ports:

          - '0.0.0.0:80:80'

        volumes:

          - /home/nginx/nginx.conf:/etc/nginx/nginx.conf

          - /home/nginx/www:/home/nginx/www

          - /home/nginx/conf.d/:/etc/nginx/conf.d/

        restart: always

      配置文件注意要點:

      1、官方文檔也沒有指定fetcher端口,webui連接時直接用域名指向了fetcher,我們自己沒有域名的時候,默認fetcher端口為24444,需要掛載出來用ip+端口的方式指定。

      2、"http://postgres@192.168.5.44:5432/" 這里的postgres為數據庫用戶名。

      3、防火墻記得關閉。否則容器之間的link會出問題。

      4、加--scheduler-rpc 這些參數必須跟在容器名稱后面,不能弄返,否則啟動容器會報不識別參數的錯。

      5、pyspider的存儲用postgres時,必須提前將項目、任務及結果三個數據建好,其他的mysql和mongodb數據庫不用建。

      6、docker-compose.yum配置文件建立好了之后,在該文件所在目錄下執行docker-compose up命令即可啟動所有docker容器,但是由于我們此配置文件中用到了nginx做webui組件的負載均衡服務,因此需要配置nginx的訪問規則。

      3、配置nginx:

      我們做nginx的配置時分為主配置文件nginx.conf和default.conf子配置文件(子配置文件在主配置文件中用include包含進去了)。當然可以不分開配合成一個文件也可以。

      根據docker-compose.yum中nginx的volumes配置的內容,將主配置文件放在對應的目錄下。此時注意到一個坑,掛載一般是掛載目錄而nginx.conf是一個文件因此需要提前建立好。否則文件不存在的情況下,會自動創建一個叫nginx.com的目錄到時候nginx的docker容器將啟動不起來并報不能將目錄掛載到文件的錯誤。

      1、配置nginx.conf

      user  root;

      worker_processes  1;

      error_log  /var/log/nginx/error.log warn;

      pid        /var/run/nginx.pid;

      events {

          worker_connections  1024;

      }

      http {

          include       /etc/nginx/mime.types;

          default_type  application/octet-stream;

          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                            '$status $body_bytes_sent "$http_referer" '

                            '"$http_user_agent" "$http_x_forwarded_for"';

          access_log  /var/log/nginx/access.log  main;

          sendfile        on;

          #tcp_nopush     on;

          keepalive_timeout  65;

          autoindex  on;

          #gzip  on;

          include /etc/nginx/conf.d/*.conf;

          client_max_body_size 100M;

          client_header_buffer_size    128k;

          large_client_header_buffers  4  128k;

          upstream web_ui {

               server HAPROXY weight=1;

          }

      }

      2、配置default.conf

      server {

          listen       80;

          server_name  localhost;

          #access_log  /var/log/nginx/log/host.access.log  main;

          location / {

                  proxy_pass http://web_ui;

                  proxy_redirect default;

                  proxy_set_header Host $host;

                  proxy_set_header X-Real-IP $remote_addr;

              }

          location /favicon.ico {

              root html;

          }

      }

      至此配置完成。在含有docker-compose.yum配置文件的目錄下輸入命令:docker-compose up 將啟動所有的組件各一個。由于我們要按最初的設想啟動多個組件因此,再輸入命令:

      docker-compose scale phantomjs=2 processor=2 webui=4

      此時,可以在瀏覽器訪問192.168.5.45 就可以進入webui組件的界面了。

      三、主機3的部署

      對于主機3的部署首先要按照同主機2完全一樣的方式配置一遍,但是至此還沒有完全完成分布式部署,因為這樣的話,我們主機2是單主機的多個組件做了負載均衡,主機3也是單個主機的多個組件做了負載均衡,無法實現跨主機的負載均衡。

      因此我們對主機3多進行一步配置,實現在瀏覽器訪問192.168.5.43(即訪問主機3的ip)時,負載均衡可以跨主機進行,也就是說根據nginx的權重,實現在主機2和3之間切換訪問webui組件。下面我們具體看主機3的配置步驟

      1、配置同主機2

      省略不寫

      2、配置nginx.conf:

      user  root;

      worker_processes  1;

      error_log  /var/log/nginx/error.log warn;

      pid        /var/run/nginx.pid;

      events {

          worker_connections  1024;

      }

      http {

          include       /etc/nginx/mime.types;

          default_type  application/octet-stream;

          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                            '$status $body_bytes_sent "$http_referer" '

                            '"$http_user_agent" "$http_x_forwarded_for"';

          access_log  /var/log/nginx/access.log  main;

          sendfile        on;

          #tcp_nopush     on;

          keepalive_timeout  65;

          autoindex  on;

          #gzip  on;

          include /etc/nginx/conf.d/*.conf;

          client_max_body_size 100M;

          client_header_buffer_size    128k;

          large_client_header_buffers  4  128k;

          upstream web_ui {

               server HAPROXY weight=1;

               server 192.168.5.45 weight=1;

          }

      }

      與主機2不一樣的地方即增加了高亮的這一行。增加此行就可以實現跨主機的負載均衡了。

      posted @ 2017-11-15 17:57  風猴藍魔  閱讀(4)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 邻居少妇张开腿让我爽了一夜| 曰韩无码av一区二区免费| 中文字幕久区久久中文字幕| 洪湖市| 区一区二区三区中文字幕| 无码内射成人免费喷射| 亚洲精品国产字幕久久麻豆| 不卡视频在线一区二区三区| 国产又黄又爽又不遮挡视频| 1区2区3区4区产品不卡码网站| 精品国产一区av天美传媒| 黑人异族巨大巨大巨粗| 在线人成免费视频69国产| 午夜爽爽爽男女污污污网站| 精品 无码 国产观看| 亚洲乱码日产精品一二三| 女性| 色狠狠色婷婷丁香五月| 日日摸夜夜添夜夜添国产三级| 日日噜噜夜夜狠狠久久无码区| 日韩av片无码一区二区三区| 亚洲国产精品成人精品无码区在线| 无码一区二区三区视频| 国产精品无码a∨麻豆| 日本又色又爽又黄的a片吻戏| 成人免费无码av| 亚洲精品日韩久久精品| 日日噜噜噜夜夜爽爽狠狠视频| 精品视频国产狼友视频| 亚洲综合小说另类图片五月天| 少妇无码av无码专区在线观看| 蜜桃av无码免费看永久| 久久一夜天堂av一区二区| 最近中文字幕日韩有码| A男人的天堂久久A毛片| 天堂网av最新版在线看| 亚洲精品乱码久久久久久按摩高清| 强奷漂亮雪白丰满少妇av| 亚洲精品日韩在线观看| 激情内射亚洲一区二区三区| 亚洲第一福利网站在线观看|