成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

web應(yīng)用集群入門-利用docker在單機(jī)搭建web應(yīng)用集群實(shí)現(xiàn)session共享

jcc / 2793人閱讀

摘要:環(huán)境要求安裝了的主機(jī)本文示例環(huán)境為準(zhǔn)備鏡像首先把所有需要用到的鏡像拉取下來容器編排是容器進(jìn)行編排的工具,定義和運(yùn)行多容器的應(yīng)用,可以一條命令啟動(dòng)多個(gè)容器。

環(huán)境要求:安裝了docker的主機(jī) (本文示例環(huán)境為centos7.4)

準(zhǔn)備鏡像

首先把所有需要用到的鏡像拉取下來

# nginx
$ docker pull nginx

# php & php-fpm
$ docker pull php:7.1.0-fpm

# redis
$ docker pull redis
docker-compose容器編排

Docker Compose 是 Docker 容器進(jìn)行編排的工具,定義和運(yùn)行多容器的應(yīng)用,可以一條命令啟動(dòng)多個(gè)容器。

安裝Compose

直接從github下載即可,前提要先安裝Docker,版本要1.9.1以上

$ curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

安裝后確認(rèn):

$ docker-compose --version

使用Compose啟動(dòng)多個(gè)Nginx容器 創(chuàng)建編排腳本

在 /docker/nginx 目錄下創(chuàng)建 docker-compose.yml

version: "2"
services:
        web1:
          image: nginx
          links: 
            - web2
            - web3
            - web4
          ports: 
            - "8080:8080"
          volumes: 
            - "/docker/nginx/web1/conf.d:/etc/nginx/conf.d"

        web2: 
          image: nginx
          volumes:
            - "/docker/slb/www2:/www"
            - "/docker/nginx/web2/conf.d:/etc/nginx/conf.d"

        web3: 
          image: nginx
          volumes:
            - "/docker/slb/www3:/www"
            - "/docker/nginx/web3/conf.d:/etc/nginx/conf.d"

        web4: 
          image: nginx
          volumes:
            - "/docker/slb/www4:/www"
            - "/docker/nginx/web4/conf.d:/etc/nginx/conf.d"

啟動(dòng)容器

# up:創(chuàng)建并啟動(dòng) -d:后臺(tái)運(yùn)行
$ docker-compose up -d

# 查看容器
$ docker-compose ps

配置Nginx 反向代理Nginx配置

添加upstream節(jié)點(diǎn),默認(rèn)使用輪詢方式進(jìn)行負(fù)載
編輯并保存 /docker/nginx/web1/conf.d/slb.conf

upstream slb {
   server web2;
   server web3;
   server web4;
}

server {
   listen 8080;
   server_name 127.0.0.1;

   gzip on;
   location /{
      root /www;
      index index.html index.php;

      # 反向代理的主機(jī)頭
      proxy_pass  http://slb;
      proxy_set_header Host   $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
   
}
web應(yīng)用Nginx配置

編輯并保存 /docker/nginx/web2/conf.d/demo.conf (其余的web3與web4同理)

server {
  listen  80;
  server_name localhost;
  gzip on;
  location / {
    root   /www;
    index index.html index.htm;
    autoindex off;
  }
}
標(biāo)記Nginx目錄

為了確定Nginx集群是否搭建成功,分別在 web2 web3 web4 的主目錄放置不同的html文檔
編輯并保存 /docker/nginx/slb/web2/index.html (其余的web3與web4同理)




  
  Document



  web2

瀏覽器訪問 127.0.0.1:8080 并刷新


至此,Nginx集群已搭建完成!

PHP環(huán)境安裝

在準(zhǔn)備鏡像的時(shí)候拉了一個(gè)php:7.1.0-fpm的鏡像,但為了實(shí)現(xiàn)session共享,解決集群之間session問題,需要在此鏡像改動(dòng)一下,安裝redis拓展,修改php的session儲(chǔ)存方式為redis
在 /docker/php/ 目錄下創(chuàng)建Dockerfile文件

FROM php:7.1.0-fpm

MAINTAINER xiaowei "[email protected]"

# Install php extension--redis

RUN cd /usr/local/ 
  && mkdir redis_phpext 
  && curl -o redis_phpext/redis-3.1.3.tgz http://101.96.10.64/pecl.php.net/get/redis-3.1.3.tgz 
  && cd redis_phpext 
  && tar zxvf redis-3.1.3.tgz 
  && cd redis-3.1.3 
  && phpize 
  && ./configure --with-php-config=/usr/local/bin/php-config 
  && make && make install 
  && rm -rf /usr/local/redis_phpext
創(chuàng)建自定義鏡像
# 切換目錄
$ cd /docker/php
# build: 創(chuàng)建,切記勿忽略后面的 . 意為當(dāng)前目錄
$ docker build -t php:add_redis .

創(chuàng)建完成后 docker images 查看是否成功

$ docker images

容器依賴

修改docker-compose.yml文件,添加php與redis的編排,這里已經(jīng)不需要測(cè)試集群,可以把Nginx應(yīng)用網(wǎng)站根目錄統(tǒng)一掛載到 /docker/www

最終編排腳本
version: "2"
services:
        web1:
          image: nginx
          links: 
            - web2
            - web3
            - web4
          ports: 
            - "8080:8080"
          volumes: 
            - "/docker/nginx/web1/conf.d:/etc/nginx/conf.d"

        web2: 
          image: nginx
          links: 
            - php
          volumes:
            - "/docker/www:/www"
            - "/docker/nginx/web2/conf.d:/etc/nginx/conf.d"

        web3: 
          image: nginx
          links: 
            - php
          volumes:
            - "/docker/www:/www"
            - "/docker/nginx/web3/conf.d:/etc/nginx/conf.d"

        web4: 
          image: nginx
          links: 
            - php
          volumes:
            - "/docker/www:/www"
            - "/docker/nginx/web4/conf.d:/etc/nginx/conf.d"
        php: 
          build: /docker/php/
          links: 
            - redis
          volumes:
            - "/docker/www:/www"
            - "/docker/php/conf.d:/usr/local/etc/php/conf.d"

        redis:
          image: redis
          volumes: 
            - "/docker/redis/data:/data"
          ports: 
            - "6379:6379"
          command : redis-server --appendonly yes
添加php配置文件

在 /docker/php/conf.d/ 目錄下創(chuàng)建文件redis.ini

;添加redis拓展
extension = redis.so

;設(shè)置session儲(chǔ)存方式為redis
session.save_handler = redis
session.save_path = redis:6379
修改web應(yīng)用Nginx配置

將php類型文件轉(zhuǎn)發(fā)給php-fpm處理,修改 web2 web3 web4 Nginx配置文件
/docker/nginx/web[2-3]/demo.conf

server {
  listen  80;
  server_name localhost;
  gzip on;
  location / {
    root   /www;
    index index.php index.html index.htm;
    autoindex off;
  }
  location ~ .php {
   root  /www;
   fastcgi_pass php:9000;
   fastcgi_index index.php;
   fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   include  fastcgi_params;
  }
}
重新編排容器

將一開始編排的集群容器停止并刪除,重新創(chuàng)建并啟動(dòng)容器

# 停止
$ docker-compose stop
# 刪除 需要確認(rèn) y
$ docker-compose rm
# 創(chuàng)建容器啟動(dòng)并后臺(tái)運(yùn)行
$ docker-compose up -d

測(cè)試環(huán)境! phpinfo

在 /docker/www 目錄創(chuàng)建 index.php文件


瀏覽器訪問 127.0.0.1:8080/index.php

session共享

在 /docker/www 目錄創(chuàng)建 session.php文件


瀏覽器訪問 127.0.0.1:8080/session.php 每次的session_id相同則表明已實(shí)現(xiàn)session共享


本文出自個(gè)人博客 最好的安排 轉(zhuǎn)載請(qǐng)注明出處!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27152.html

相關(guān)文章

  • web應(yīng)用集群入門-利用docker單機(jī)搭建web應(yīng)用集群實(shí)現(xiàn)session共享

    摘要:環(huán)境要求安裝了的主機(jī)本文示例環(huán)境為準(zhǔn)備鏡像首先把所有需要用到的鏡像拉取下來容器編排是容器進(jìn)行編排的工具,定義和運(yùn)行多容器的應(yīng)用,可以一條命令啟動(dòng)多個(gè)容器。 環(huán)境要求:安裝了docker的主機(jī) (本文示例環(huán)境為centos7.4) 準(zhǔn)備鏡像 首先把所有需要用到的鏡像拉取下來 # nginx $ docker pull nginx # php & php-fpm $ docker pul...

    ls0609 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    SegmentFault 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    Neilyo 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<