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

資訊專欄INFORMATION COLUMN

使用Docker+Nginx模擬負載均衡

davidac / 1697人閱讀

摘要:以及自動剔除因故障負載均衡列表中宕機的服務(wù)器。這兩天折騰了一下的安裝配置,并通過模擬出在多服務(wù)器提供服務(wù)的狀態(tài)下的負載均衡。修改好配置文件后,使用重新載入配置。

原文發(fā)表于我的博客,轉(zhuǎn)載請注明出處

一直聽說Nginx的強大,它不僅可以作為Web服務(wù)器,按照調(diào)度規(guī)則實現(xiàn)動態(tài)、靜態(tài)頁面的分離;還可以作為反向代理服務(wù)器,構(gòu)建服務(wù)集群,按輪詢、權(quán)重等多種方式對后端服務(wù)器做負載均衡。以及自動剔除因故障負載均衡列表中宕機的服務(wù)器。這兩天折騰了一下Nginx的安裝、配置,并通過Docker模擬出Nginx在多服務(wù)器提供服務(wù)的狀態(tài)下的負載均衡。

(一) 系統(tǒng)環(huán)境
操作系統(tǒng) Docker Nginx
Ubuntu 16 1.12.1 1.8.0
(二) 準(zhǔn)備Nginx環(huán)境

  使用Docker這種容器技術(shù),可以很方便地將所需要的環(huán)境打包和快速部署。所以我將Nginx的環(huán)境做成Docker鏡像,當(dāng)需要多個Nginx服務(wù)時,只需要通過鏡像啟動多個容器。

鏡像已經(jīng)PUSH到Docker Hub上,如果需要,可以直接在Docker拉取配置好nginx環(huán)境的鏡像docker pull raomengnan/ubuntu:nginx-1.8.0

raomengnan/ubuntu:nginx-1.8.0 包含的基礎(chǔ)環(huán)境: nginx,zsh,vim,ssh,python

Dockerfile
  # Ubuntu with Nginx
  # Author raomengnan
  FROM raomengnan/ubuntu-base
  MAINTAINER raomengnan

  # 安裝升級gcc
  RUN rm -rf /var/lib/apt/lists/*
  RUN apt-get update

  # 添加相關(guān)的src
  RUN apt-get -y install build-essential
  RUN apt-get -y install supervisor
  RUN mkdir -p /usr/local/temp

  COPY supervisor.conf /etc/supervisor/conf.d/supervisord.conf

  RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz && tar -zxvf nginx-1.8.0.tar.gz -C /usr/local/temp
  RUN wget http://zlib.net/zlib-1.2.8.tar.gz && tar -zxvf zlib-1.2.8.tar.gz -C /usr/local/temp
  RUN wget http://www.openssl.org/source/openssl-1.0.1q.tar.gz && tar -zxvf openssl-1.0.1q.tar.gz -C /usr/local/temp
  RUN wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz && tar -zxvf pcre-8.37.tar.gz -C /usr/local/temp

  RUN rm *.tar.gz

  # 安裝
  RUN ls /usr/local/temp/nginx-1.8.0
  RUN cd /usr/local/temp/nginx-1.8.0 
        && ./configure --sbin-path=/usr/local/nginx-1.8.0/nginx --conf-path=/usr/local/nginx-1.8.0/nginx.conf --pid-path=/usr/local/nginx-1.8.0/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/temp/pcre-8.37 --with-zlib=/usr/local/temp/zlib-1.2.8 --with-openssl=/usr/local/temp/openssl-1.0.1q 
        && make 
        && make install

  # 設(shè)置nginx是非daemon啟動,否則nginx無法啟動
  RUN echo "
daemon off;" >> /usr/local/nginx-1.8.0/nginx.conf
  RUN echo "master_process off;" >> /usr/local/nginx-1.8.0/nginx.conf
  RUN echo "error_log  logs/error.log;" >> /usr/local/nginx-1.8.0/nginx.conf

  RUN rm -rf /usr/local/temp/*

  ENV NGINX_HOME /usr/local/nginx-1.8.0

  # 將nginx添加到command
  update-alternatives --install /usr/bin/nginx nginx /usr/local/nginx-1.8.0/nginx 300

  EXPOSE 80
  # 使用supervisor來管理多個進程同時啟動
  # 若不想使用supervisor,可以使用:
  #   CMD nginx $/NGINX_HOME/nginx.conf
  #   或者進入容器手動啟動nginx
  CMD ["/usr/bin/supervisord"]
supervisor.conf
[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:nginx]
command=/usr/local/nginx-1.8.0/nginx -c /usr/local/nginx-1.8.0/nginx.conf
(三) 啟動Nginx服務(wù)

啟動nginx時,可以提供Nginx的welcome頁面的訪問服務(wù),可以通過這個頁面簡單地嘗試nginx提供的負載均衡。

通過鏡像啟動三個nginx服務(wù)
docker run --name ser1 -p 8881:80 raomengnan/ubuntu:nginx-1.8.0

docker run --name ser2 -p 8882:80 raomengnan/ubuntu:nginx-1.8.0

docker run --name ser3 -p 8883:80 raomengnan/ubuntu:nginx-1.8.0

-p參數(shù)將容器的80端口映射到宿主機的888×端口上

以ser1作為主服務(wù)器,進入容器內(nèi)修改nginx配置文件

使用docker inspect ser1便可以看到容器的詳細信息,其中注意NetworkSetting下的這一段信息就可以知道容器的網(wǎng)關(guān)和ip地址

"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",

docker exec -it ser1 bash進入容器內(nèi)部
nginx安裝目錄在"/usr/local/nginx-1.8.0"下,vim /usr/local/nginx-1.8.0/nginx.conf編輯配置文件:

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    # 配置負載均衡,weight代表權(quán)重,權(quán)重越高,分配到的可能就越搭
    upstream 172.17.0.2 {

           server 172.17.0.2:8888 weight=5;
           server 172.17.0.3:80   weight=4;
           server 172.17.0.4:80   weight=3;
    }
    # 配置反向代理
    server {
           listen 80;
           server_name 172.17.0.2;
           location /{
              # 反向代理的主機頭
              proxy_pass  http://172.17.0.2;
              proxy_set_header Host   $host;
              proxy_set_header   X-Real-IP        $remote_addr;
              proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
           }
    }

    # 偵聽本地8888端口,以便為反向代理到本地的請求提供服務(wù)
    server {
           listen       8888;
           server_name  localhost;
           # 如過沒有對代理的鏈接形式有特殊要求,可以直接將root和index寫在server中
           location / {
               root   /home/html;
               index  index.html index.htm;
           }
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
                 root   /home/html;
         }
       }
}

在ser1這個容器中配置反向代理,要關(guān)注server 172.17.0.2:8888 weight=5;這一行,之所以反向代理到本機的8888端口,很好理解,因為若再次代理到80端口,永遠不能代理到本機的服務(wù)中,陷入死循環(huán)。

以ser×作為服務(wù)器
#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    server {
           listen       80;
           server_name  172.17.0.2;
           # 如過沒有對代理的鏈接形式有特殊要求,可以直接將root和index寫在server中
           location / {
               root   /home/html;
               index  index.html index.htm;
           }
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
                 root   /home/html;
         }
       }
}

serx和ser1的區(qū)別就在于http的設(shè)置,沒有upstream,server_name 為要負載的服務(wù)器的ip。修改好配置文件后,使用nginx -s reload重新載入配置。

(四) 刷新網(wǎng)頁測試

修改三個ser中的index.html,方便觀察

在瀏覽器中打開 localhost:8881 或者 172.17.0.2,刷新網(wǎng)頁

不斷刷新,可以看到會打開不同容器中的index頁面,說明服務(wù)被Nginx均衡地分配到不同的service上,這就是Nginx的負載均衡的作用。

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39389.html

相關(guān)文章

  • 使用Docker+Nginx模擬負載均衡

    摘要:以及自動剔除因故障負載均衡列表中宕機的服務(wù)器。這兩天折騰了一下的安裝配置,并通過模擬出在多服務(wù)器提供服務(wù)的狀態(tài)下的負載均衡。修改好配置文件后,使用重新載入配置。 原文發(fā)表于我的博客,轉(zhuǎn)載請注明出處 一直聽說Nginx的強大,它不僅可以作為Web服務(wù)器,按照調(diào)度規(guī)則實現(xiàn)動態(tài)、靜態(tài)頁面的分離;還可以作為反向代理服務(wù)器,構(gòu)建服務(wù)集群,按輪詢、權(quán)重等多種方式對后端服務(wù)器做負載均衡。以及自動剔...

    import. 評論0 收藏0
  • Kubernetes上的負載均衡詳解

    摘要:部署只是一種規(guī)則,控制器組件會將這一規(guī)則應(yīng)用于實際負載均衡器中。原因是功能僅允許將端口用于路由,負載均衡器和則可作為全局啟動。負載均衡的限制提供了功能豐富的負載均衡器支持詳細介紹在此。截至目前,我們暫時無法使用工具將負載均衡器配置從轉(zhuǎn)換為。 如果您的應(yīng)用程序是面向大量用戶、會吸引大量流量,那么一個不變的目標(biāo)一定是在高效滿足用戶需求的同時、不讓用戶感知到任何類似于服務(wù)器繁忙!的情況。這一...

    CoderBear 評論0 收藏0

發(fā)表評論

0條評論

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