如何在 Ubuntu 13.10 上使用 Varnish 和 Nginx 配置集群网络服务器

介绍


关于群集式 Web 服务器


群集式网页服务器是一个在网页托管中使用的技术,用于在多个机器或节点中分配负载,该技术的目的是消除单个故障点,并增加网站的可用性和运行时间。

聚合不一定是昂贵的,并且非常容易开始 - 这个指南将展示如何使用 Nginx 和 Varnish 创建一个圆形的两个节点聚合 Web 服务器。

关于Varnish


Varnish 是一个 HTTP 加速器,换句话说,是一个缓存服务器,它允许我们通过向 HTTP 请求导向由 Varnish 维护和生产的网站的静态副本来加速网站。

關於 Nginx


Nginx 是一个轻量级、高性能的 HTTP 服务器,它将作为 Varnish 的后端服务,不会直接为访问者提供网站服务;但是,它将响应 Varnish 每当需要建立缓存时的请求。

设置


要执行本教程中的步骤,您将需要 三个 滴,所有这些都可能是最小的512mb实例。

我建议将实例的主机名称命名为如下:

标签: nginx01 nginx02

当然,你可以添加尽可能多的nginx0x,但对于本教程,我会坚持2。

在初始 SSH 上,在新创建的三个实例中执行以下命令: sudo apt-get update

第一步:安装 Nginx


Nginx 是将我们的网站服务于 Varnish 的软件。

您必须在 nginx01 和 nginx02 实例上安装此步骤,这意味着在您想要使用的每个 nginx0x 服务器上重复此过程。

建议从源头安装 Nginx,以确保我们获得最新的版本。

Nginx有两个主要依赖:PCRE(Perl兼容的常规表达库)和zlib(压缩库)。

Nginx: 1.4.4

PCRE: 8.34

zlib: 1.2.8

我们现在必须下载上面的来源,准备好提取和构建;单独输入以下每个命令:

1wget http://nginx.org/download/nginx-1.4.4.tar.gz
2
3wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz

wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxvf nginx-1.4.4.4.tar.gz tar -zxvf pcre-8.34.tar.gz tar -zxvf zlib-1.2.8.tar.gz 在我们继续构建Nginx之前,我们必须先获得一个名为Make的程序和C++源代码g++的编译器,这将负责执行在我们的实例上构建Nginx所需的所有命令。

1sudo apt-get install make g++

在这个阶段,我们现在可以继续前进,并将 Nginx / First 更改目录构建到您刚刚创建的提取的 Nginx 文件夹中:

1cd nginx-1.4.4

接下来,我们必须为我们的特定实例配置构建选项:

1./configure --with-pcre=../pcre-8.34 --with-zlib=../zlib-1.2.8

然后我们可以继续创建 Nginx 二进制:

1make

最后,我们可以在我们的系统上安装 Nginx: sudo make install

第2步:安装Varnish


Varnish 将负责为访问者提供我们的网站。

您只需在 varnish 实例上安装此功能。

首先我们需要获得 GPG 密钥涂层为我们提供访问其存储库. 我们可以通过运行命令下载它:

1wget http://repo.varnish-cache.org/debian/GPG-key.txt

然后安装钥匙:

1sudo apt-key add GPG-key.txt

然后,我们需要将Varnish存储列表添加到我们的实例源列表中:

1echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list

然后确保 apt-get 知道 Varnish 包:

1sudo apt-get update

最后,安装Varnish:

1sudo apt-get install varnish

在这个阶段,我们已经准备好配置 Nginx 和 Varnish 来为外部世界提供网站服务!

步骤三:配置 Nginx


我们不需要修改 Nginx 的配置太多,它的默认值对本指南来说是好的,但是我建议我们修改我们看到的欢迎到 nginx页面,以指定哪个 VPS 正在为 Varnish 服务的网页。

导航到位于 Nginx 欢迎页面的 root html 目录:

1cd /usr/local/nginx/html/

现在编辑 index.html:

1vim index.html

更改文件以匹配以下内容:

第01章:

1<h1>Welcome to nginx!</h1>
2<p>If you see this page, the nginx web server is successfully installed and
3working. Further configuration is required.</p>

我是 nginx01

**nginx02** :
1<h1>Welcome to nginx!</h1>
2<p>If you see this page, the nginx web server is successfully installed and
3working. Further configuration is required.</p>

我是一個 nginx02

现在我们可以启动 Nginx(**注:如果这个命令没有输出,它已经成功执行):

1sudo /usr/local/nginx/sbin/nginx

第四步 - 配置 Varnish


首先,您必须设置 Varnish 以运行在端口 80。 要做到这一点,您必须修改默认的 Varnish 配置文件。

1cd /etc/default

然后我们必须打开varnish文件:

1sudo vim varnish

在文件中找到下列块:

 1## Alternative 2, Configuration with VCL
 2#
 3# Listen on port 6081, administration on localhost:6082, and forward to
 4# one content server selected by the vcl file, based on the request. Use a 1GB
 5# fixed-size cache file.
 6#
 7	DAEMON_OPTS="-a :6081 \
 8         -T localhost:6082 \
 9         -f /etc/varnish/default.vcl \
10         -S /etc/varnish/secret \
11         -s malloc,256m"

更改以匹配下列内容:

 1## Alternative 2, Configuration with VCL
 2#
 3# Listen on port 6081, administration on localhost:6082, and forward to
 4# one content server selected by the vcl file, based on the request. Use a 1GB
 5# fixed-size cache file.
 6#
 7	DAEMON_OPTS="-a :80 \
 8         -T localhost:6082 \
 9         -f /etc/varnish/default.vcl \
10         -S /etc/varnish/secret \
11         -s malloc,256m"

接下来我们需要配置我们的负载平衡器. 更改目录到我们的Varnish配置脚本位置:

1cd /etc/varnish

然后打开default.vcl文件:

1sudo vim default.vcl

您必须在该文件中删除后端默认块,该块看起来如下:

1backend default {
2	.host = "127.0.0.1";
3	.port = "8080";
4}

确保您将 nginx01 和 nginx02 的.host 分别更改为您的公共 (或私有,如果您的实例具有此功能) DigitalOcean IP:

1# define our first nginx server
2backend nginx01 {
3	.host = "192.168.0.100";
4	.port = "80";
5}

定义我们的第二个 nginx 服务器后端 nginx02 {.host = "192.168.0.101";.port = "80"; }

1# configure the load balancer
2director nginx round-robin {
3	{ .backend = nginx01; }
4	{ .backend = nginx02; }
5}

提出请求时,将后端设置为名为 nginx sub vcl_recv { set req.backend = nginx; }

步骤五:测试可用性


让我们看看我们是否可以通过我们的Varnish服务器访问我们的网站。 查找您启动的面板实例的公共IP,并通过网页浏览器浏览它。

1Welcome to nginx!
2
3If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

我是NGINX01

1For online documentation and support please refer to nginx.org.
2Commercial support is available at nginx.com.
3
4Thank you for using nginx.

您可以通过关闭 Nginx 服务器来测试网站是否保持在线,在我的情况下,这是 nginx01,要关闭 nginx,您可以执行以下操作:

1/usr/local/nginx/sbin -s stop

你可能仍然看到你刚刚关闭的VPS作为活跃的服务器;这是因为Varnish正在持有缓存。

要强迫Varnish清除缓存,请重新启动服务:

1sudo service varnish restart

结论


在这个阶段,你现在有一个完全配置的Varnish负载平衡圆轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮轮

Article Submitted By: Jacob Clark
Published At
Categories with 技术
comments powered by Disqus