如何利用docker 做负载均衡、和集群。

搭建好开发环境后随着你的网站的访问量逐渐增加。这时候我们需要做服务器集群了。

随着网站的访问量不断增大。服务器的压力越来越大。我们需要服务器支持更多的访问量。一台服务器是远远不够的。我们需要对服务器的职责进行细分。一些服务器专门运行php 程序。 一些服务器运行mysql。 还有一些服务器去运行 nginx。 这样就可以支持更大的访问量了。下图是一个比较简单易扩展的服务器集群架构图。

由于我没有那么多linux服务器。所以我用docker 的容器技术。虚拟化出多台服务器环境的容器。来搭建下面这个简单易扩展的服务器集群架构。当然docker也绝对不是玩具。多台服务器上我们可以运行许多docker容器。运用docker的网络连接。能够充分发挥服务器的所有优势。

创建2个 php-fpm 容器(为了方便实验。一个php版本是 php7.0 一个是php5.6.16)

docker run -d -p 9000 -v /xyz:/xyz --name php7 php:7-fpm

docker run -d -p 9000 -v /xyz:/xyz --name php5 php:5-fpm

查看两个容器的 IP 分别是 192.168.0.2、192.168.0.3

docker inspect  php7

docker inspect php5

修改 nginx的配置文件 在 http 配置的项中添加如下代码。

vim /etc/nginx/nginx.conf
1
2
3
4
5

upstream myfastcgi {
server 192.168.0.2:9000 weight=1;
server 192.168.0.3:9000 weight=1;
}

编辑虚拟主机配置文件 (第16行 调用 upstream 的 myfastcgi 的ip地址)

vim /etc/nginx/conf.d/wiki.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;

root /xyz/php7;
index index.html index.htm index.php;

server_name wiki.xyzphp.com;

location / {
try_files $uri $uri/ =404;
#try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass myfastcgi;
fastcgi_index index.php;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

重启nginx服务

nginx -s reload

回到浏览器访问 http://wiki.xyzphp.com 刷新页面 你会看到 phpinfo 一会是 7.0.0 一会是 5.6.16

负载均衡大功告成。如果用过访问量变大会负载均衡到这2台容器上去。从而缓解了服务器的压力。😄好开心啊。网站可以支持更多的人来访问了