您的位置:首页 > 运维架构 > Docker

用Docker配置简单的Nginx+Apache的web负载均衡

2016-07-21 10:58 591 查看
这是本人第一次写CSDN博客,有出错的地方欢迎大家指正(别喷我~~),谢谢!应该是原创吧,网上大都是Nginx+Tomcat的配置。。。

介绍一下基本配置,宿主机系统是Ubuntu14.04,Docker容器也是用的Ubuntu14.04。

Docker的安装就不在这赘述了,首先说说容器的配置吧。

1、首先是用Dockerfile做镜像

mkdir apache-php
cd apache-php
touch Dockerfile
mkdir php


编辑Dockerfile内容如下:

FROM ubuntu:14.04
MAINTAINER Adward

RUN apt-get -yqq update
RUN apt-get -yqq install php5
RUN apt-get -yqq install apache2

VOLUME ["/var/www/html"]
WORKDIR /var/www/html

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2

RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
EXPOSE 80

ENTRYPOINT ["/usr/sbin/apache2"]
CMD ["-D", "FOREGROUND"]


因为用的语言是php,所以在容器中也需要安装php环境,用VOLUME创建可挂载的文件夹,创建容器时挂载宿主机文件夹,这样方便传代码,EXPOSE 80端口,最后用ENTRYPOINT和CMD指令组合来在容器启动时默认运行Apache。

创建镜像:

sudo docker build -t apache-php .


2、在创建的php文件夹中写个简单的获取服务器ip的php代码

<?php
$server_ip = apache_getenv("server_addr");
echo "the ip of this apache server is: ".$server_ip;
?>




3、建立容器  

sudo docker run -p 1180:80 -d -name apache1 -v /root/apache-php/php:/var/www/html apache-php
用宿主机的1180端口作为容器的80端口,挂载php文件夹到容器apache工作文件夹,同理再建一个容器,用宿主机的1280端口

sudo docker run -p 1280:80 -d -name apache1 -v /root/apache-php/php:/var/www/html apache-php


接下来是在宿主机中安装配置Nginx服务器

1、安装Nginx服务器

sudo apt-get install -y nginx


2、配置Nginx,这个网上很多说法,都试了试,最后综合了一下才成功,不知道是不是我的问题,不过还是说一下我自己的配置

编辑/etc/nginx/sites-available/default这个文件

先找到server { 修改index这一行,添加index.php,index index.php index.html index.htm;

然后找到location ~ \.php$ {这,取消这6行注释

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
保存文件,命令行输入/etc/init.d/nginx reload 使配置生效

3、安装php sudo apt-get install -y php5-fpm



4、配置php监听端口 /etxc/php5/fpm/pool.d/www.conf
把 listen = /var/run/php5-fpm.sock 改成 listen = 127.0.0.1:9000

重启php

最后是负载均衡的配置,编辑/etc/nginx/nginx.conf文件

在http { 下添加,

http {
upstrem balance {
server 192.168.1.99:1180 weight=5;
server 192.168.1.99:1280 weight=5;
}
server {
listen 80;
server_name 192.168.1.99;
location / {
proxy_pass http://balance; }
}
}


保存文件,重启Nginx服务器,service nginx restart。

用浏览器访问192.168.1.99/info.php就会发现浏览器显示



刷新后,显示,说明配置成功

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息