介绍
关于集群 Web 服务器
集群网络服务器是网络托管中使用的一种技术,用于在多台机器或“节点”之间分配负载。 该技术的目的是消除单点故障并提高网站可用性和正常运行时间。 Web 集群通常会使用多个后端和前端节点。
集群不一定很昂贵,而且非常容易上手——本指南将演示如何使用 Nginx 和 Varnish 创建一个循环的两节点集群 Web 服务器。
关于清漆
Varnish 是一个 HTTP 加速器; 换句话说,一个缓存服务器。 它允许我们通过引导由 Varnish 维护和生成的网站的静态副本的 HTTP 请求来加速网站。
关于 Nginx
Nginx 是一个轻量级、高性能的 HTTP 服务器,将作为 Varnish 的后端服务。 它不会直接向访问者提供网站; 但是,只要需要构建缓存,它就会响应来自 Varnish 的请求。
设置
要执行本教程中的步骤,您将需要 三个 液滴,所有这些液滴都可以是最小的 512mb 实例。
我建议将实例的主机名命名如下:
- 漆
- nginx01
- nginx02
当然,您可以根据需要添加任意数量的“nginx0x”,但对于本教程,我将坚持使用 2。
在初始 SSH 进入三个新创建的实例时,执行以下命令:
sudo apt-get update
第一步 - 安装 Nginx
Nginx 是负责将我们的网站提供给 Varnish 的软件。
为您的 varnish 实例跳过此步骤。您必须在 nginx01 和 nginx02 实例上安装它,这意味着在您希望使用的每个 nginx0x 服务器上重复此过程。
建议从源代码安装 Nginx,以确保我们获得最新版本。
Nginx 有两个主要依赖项:PCRE(Perl 兼容的正则表达式库)和 zlib(一个压缩库)。 在编写本指南时,最新版本是:
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 Key varnish 提供给我们访问他们的存储库。 我们可以通过运行以下命令下载它:
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 的配置,本指南的默认设置就可以了。 但是我建议我们修改我们看到的“Welcome to 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 在端口 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"; }
将其替换为以下内容。 确保将 nginx01 和 nginx02 的 .host 分别更改为您的公共(或私有,如果您的实例具有此功能)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) 堆栈