如何在Ubuntu 13.10配置与Varnish和Nginx的群集的Web服务器

介绍

关于集群Web服务器

集群Web服务器是在虚拟主机内用于在多个机器或“节点”上分布负载的技术。 这种技术的目的是消除单点故障,增加网站可用性和正常运行时间。 通常,web集群将使用多个后端和前端节点。

集群不一定是昂贵的,它是非常容易开始 - 本指南将演示如何使用Nginx和Varnish创建一个循环两节点集群Web服务器。

关于Varnish

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

关于Nginx

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

建立

执行本教程中的步骤,您将需要Droplet,所有这一切都可以是最小512MB实例。

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

  • nginx01

  • nginx02

当然你可以添加任意多的“nginx0x”,但是对于这个教程,我会坚持使用2。

在初始SSH进入三个新创建的实例后,执行以下命令:

sudo apt-get update

第一步 - 安装Nginx

Nginx是负责为我们的网站服务Varnish的软件。

跳过此步骤为您的Varnish例如 。你必须在nginx01和nginx02情况下安装此,这意味着重复你希望使用的每个nginx0x服务器上这个过程。

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

Nginx有两个主要的依赖:PCRE(Perl兼容的正则表达式库)和zlib(A压缩库)。 在撰写本指南的时候,最新版本是:

Nginx的 :1.4.4

PCRE :8.34

ZLIB :1.2.8

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

wget http://nginx.org/download/nginx-1.4.4.tar.gz

wget 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.tar.gz

tar -zxvf pcre-8.34.tar.gz

tar -zxvf zlib-1.2.8.tar.gz

在我们开始构建Nginx之前,我们必须首先获得一个名为“Make”的程序和一个用于C ++源代码“g ++”的编译器,这将负责执行在我们的实例上构建Nginx所需的所有命令。 您可以通过apt-get获取它:

sudo apt-get install make g++

在这个阶段,我们现在可以去建立Nginx /第一次更改目录到您刚刚创建的解压Nginx文件夹:

cd nginx-1.4.4

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

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

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

make

最后,我们可以安装Nginx到我们的系统:

sudo make install

第二步 - 安装varnish

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

你只必须在实例上安装此。

首先我们需要获取GPG KeyVarnish为我们提供访问他们的存储库。 我们可以通过运行命令下载它:

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

然后安装密钥:

sudo apt-key add GPG-key.txt

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

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

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

sudo apt-get update

最后,安装Varnish:

sudo apt-get install varnish

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

第三步 - 配置Nginx

我们不需要修改Nginx的配置太多,它的默认值将是罚款本指南。 但我建议我们修改“欢迎来到nginx”页面,我们看到指定哪个VPS服务网页Varnish。

导航到Nginx欢迎页面所在的根html目录:

cd /usr/local/nginx/html/

现在编辑index.html:

vim index.html

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

nginx01:

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

<p>I am nginx01</p>

nginx02:

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

<p>I am nginx02</p>

现在我们可以开始Nginx的( :如果这个命令不产生输出,它已成功执行):

sudo /usr/local/nginx/sbin/nginx

第四步 - 配置Varnish

首先,您必须将Varnish设置为在端口80上运行。为此,您必须修改默认的Varnish配置文件。 首先将目录更改为此文件所在的目录:

cd /etc/default

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

sudo vim varnish

在文件中找到以下块:

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

修改它以匹配以下内容:

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

接下来,我们需要配置我们的负载均衡器。 将目录更改为Varnish配置脚本所在的位置:

cd /etc/varnish

然后打开default.vcl文件:

sudo vim default.vcl

您必须删除backend default这个文件看起来像下列内块:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

将其替换为以下内容。 确保您将nhostx01和nginx02尊重地更改为您的公共(或私人,如果您的实例具有此功能)DigitalOcean IP:

# define our first nginx server
backend nginx01 {
    .host = "192.168.0.100";
    .port = "80";
}

# define our second nginx server
backend nginx02 {
    .host = "192.168.0.101";
    .port = "80";
}

# configure the load balancer
director nginx round-robin {
    { .backend = nginx01; }
    { .backend = nginx02; }
}

# When a request is made set the backend to the round-robin director named nginx
sub vcl_recv {
    set req.backend = nginx;
}

第五步 - 测试可用性

让我们检查我们是否可以通过我们的Varnish服务器访问我们的网站。 找到您启动的Varnish实例的公有IP,并通过Web浏览器访问浏览器。 如果你看到下面的文字,一切正常!

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

I am nginx01

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

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

/usr/local/nginx/sbin -s stop

再次尝试您的Varnish公共IP。 您仍然可以看到您刚刚关闭的VPS报告为活动服务器; 这是因为Varnish持有缓存。 一旦缓存过期,您将看到nginx02正在提供内容。

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

sudo service varnish restart

结论

在这个阶段,您现在有一个完全配置的Varnish负载平衡轮循群集。 我建议你遵循关于进一步配置的Nginx服务器的其他教程: 如何在Ubuntu 12.04安装Linux,nginx的,MySQL和PHP(LEMP)

文章提交者: 雅各布·克拉克
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏