varnish的安装

2013年3月13日 发表评论 阅读评论

varnish做为缓存加速应用,逐渐在取代squid ,成为缓存加速的领头羊。 目前最新版本的varnish为3.0.3 。其安装也很二进包安装和源码包安装。本文着重介绍下如何通过源码包进行varnish的安装及需要的注意点。

一、获取安装

安装相关依赖并获取源码包安装

yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
wget http://repo.varnish-cache.org/source/varnish-3.0.3.tar.gz
tar -zxf varnish-3.0.3.tar.gz && cd varnish-3.0.3

所需的依赖可以参看官方安装页的提示。通过上面解包后,我们可以通过下列方法完成自动安装和配置检查。

sh autogen.sh
sh configure
make
make check
make install

当然也可以通过定制化的安装指定相关路径。如下:

./configure --prefix=/App/varnish
make
make install

而如果感觉默认源里面的pcre版本过低,想使用最新pcre进行源码安装的话,也可以通过下面的方法进行第三方的扩展:

tar zxvf pcre-8.32.tar.gz
cd pcre-8.32
./configure --prefix=/usr/local/pcre
make && make install
varnish安装时调整如下:
export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
./configure --prefix=/App/varnish
make && make install 

二、编译注重点

平时养成了一个习惯,就是安装软件前,总习惯通过./configure --help查看下其可以编译进进的优化参数。这一看确实也看出了点问题。varnish除了正则包pcre包,也对内存管理块进行了第三方的支持 。有趣的是同fackbook 、taobao tengine一样都选择了jemalloc 。具体选项如下:

 --with-pcre-config=PATH Location of PCRE pcre-config (auto)
 --with-jemalloc         use jemalloc memory allocator. Default is yes on
                          Linux, no elsewhere

由此也从一方面说明jemalloc在内存管理方面确实有不错的稳定性和性能。由于上面pcre的安装步骤已有,下面就对pcre的部分一带而过,着重jemalloc的步骤 

tar zxvf pcre-8.32.tar.gz
cd pcre-8.32
./configure --prefix=/usr/local/pcre
make && make install
tar jxvf jemalloc-3.3.0.tar.bz2
cd jemalloc-3.3.0
./configure
make && make install
export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
./configure --prefix=/App/varnish

注:我这里之所以没有带上面提到的关于pcre和jemalloc的参数,是因为其默认是进行自动检测的。在varnish configure的过程中会看到如下的部分

checking for malloc_conf in -ljemalloc... yes
……………………
config.status: creating lib/libjemalloc/Makefile

按此方法make && make install完成安装后,还不能使用varnish,其在使用其测试配置文件时时会有下面的错误提示:

[root@localhost ]# /App/varnish/sbin/varnishd -f /App/varnish/etc/varnish/default.vcl
/App/varnish/sbin/varnishd: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory

造成该错误的原因很简单,是因为在默认的lib库里找不到jemalloc的关so文件。可以通过下面的方法解决:

ln -s /usr/local/lib/libjemalloc.so.1 /lib64/ 或
ln -s /usr/local/lib/libjemalloc.so.1 /usr/lib64/

注:以上是在64位系统下安装的,如果要32位系统下进行请再更行更改。当然,也可以在编译jemalloc时指定lib文件的生成路径来解决,如下

./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc

三、系统优化

为了使varnish更好的工作,还需做两方面的调整。一是ulimit参数做;一是tcp/ip参数做化。

ulimit -HSn 131072
ulimit -HSc unlimited

可以通过以上命令修改用户打开的最大文件数,当然,也可以通过配置文件修改指定启动varnish用户所能打开的最大文件数。打开/etc/sysctl.conf文件,加入如下内容:

net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_tw_recycle = 1
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

然后运行sysctl -p使配置生效。根据官网的说法,此配置可以支持4000-8000 req/s的压力 。

四、varnish的启动

varnish的启用使用的指令为varnishd,其相关的参数如下:

-a address:port 表示varnish对httpd的监听地址及其端口
-b address:port 表示后端服务器地址及其端口
-d 表示使用debug调试模式
-f file 指定varnish服务器的配置文件
-p param=value 指定服务器参数,用来优化varnish性能
-P file Varnish进程PID文件存放路径
-n dir 指定varnish的工作目录
-s kind[,storageoptions] 指定varnish缓存内容的存放方式。硬盘文件保存:“-s file,<dir_or_file>,<size>”。
其中“<dir_or_file>”指定缓存文件的存放路径,“<size>”指定缓存文件的大小。内存方式保存:-s malloc,<size>
-t 指定缺省的TTL值
-T address:port 设定varnish的telnet管理地址及其端口
-w int[,int[,int]] 设定varnish的工作线程数,常用的方式有:
                     -w min,max
                     -w min,max,timeout
例如:-w5,51200,30,这里需要说明下,在varnish2.0版本以后,最小启动的线程数不能设定过大,设置过大,会导致varnish运行异常缓慢。

如,我在一台测试机上以内存存储方式进行启动时的指令如下:

/App/varnish/sbin/varnishd -u www -g www -f /App/varnish/etc/online.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80

注:-u和-g参数用于指定启动时所用的用户和组。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: 平台架构 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.