varnish的安装
varnish做为缓存加速应用,逐渐在取代squid ,成为缓存加速的领头羊。 目前最新版本的varnish为3.0.3 。其安装也很二进包安装和源码包安装。本文着重介绍下如何通过源码包进行varnish的安装及需要的注意点。
一、获取安装包
安装相关依赖并获取源码包安装
1yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
2wget http://repo.varnish-cache.org/source/varnish-3.0.3.tar.gz
3tar -zxf varnish-3.0.3.tar.gz && cd varnish-3.0.3
所需的依赖可以参看官方安装页的提示。通过上面解包后,我们可以通过下列方法完成自动安装和配置检查。
1sh autogen.sh
2sh configure
3make
4make check
5make install
当然也可以通过定制化的安装指定相关路径。如下:
1./configure --prefix=/App/varnish
2make
3make install
而如果感觉默认源里面的pcre版本过低,想使用最新pcre进行源码安装的话,也可以通过下面的方法进行第三方的扩展:
1tar zxvf pcre-8.32.tar.gz
2cd pcre-8.32
3./configure –prefix=/usr/local/pcre
4make && make install
5varnish安装时调整如下:
6export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
7./configure –prefix=/App/varnish
8make && make install
二、编译注重点
平时养成了一个习惯,就是安装软件前,总习惯通过./configure –help查看下其可以编译进进的优化参数。这一看确实也看出了点问题。varnish除了正则包pcre包,也对内存管理块进行了第三方的支持 。有趣的是同fackbook 、taobao tengine一样都选择了jemalloc 。具体选项如下:
1 --with-pcre-config=PATH Location of PCRE pcre-config (auto)
2 --with-jemalloc use jemalloc memory allocator. Default is yes on
3 Linux, no elsewhere
由此也从一方面说明jemalloc在内存管理方面确实有不错的稳定性和性能。由于上面pcre的安装步骤已有,下面就对pcre的部分一带而过,着重jemalloc的步骤
1tar zxvf pcre-8.32.tar.gz
2cd pcre-8.32
3./configure –prefix=/usr/local/pcre
4make && make install
5tar jxvf jemalloc-3.3.0.tar.bz2
6cd jemalloc-3.3.0
7./configure
8make && make install
9export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
10./configure –prefix=/App/varnish
注:我这里之所以没有带上面提到的关于pcre和jemalloc的参数,是因为其默认是进行自动检测的。在varnish configure的过程中会看到如下的部分
1checking for malloc_conf in -ljemalloc… yes
2……………………
3config.status: creating lib/libjemalloc/Makefile
按此方法make && make install完成安装后,还不能使用varnish,其在使用其测试配置文件时时会有下面的错误提示:
1[root@localhost ]# /App/varnish/sbin/varnishd -f /App/varnish/etc/varnish/default.vcl
2/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文件。可以通过下面的方法解决:
1ln -s /usr/local/lib/libjemalloc.so.1 /lib64/ 或
2ln -s /usr/local/lib/libjemalloc.so.1 /usr/lib64/
注:以上是在64位系统下安装的,如果要32位系统下进行请再更行更改。当然,也可以在编译jemalloc时指定lib文件的生成路径来解决,如下
1./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc
三、系统优化
为了使varnish更好的工作,还需做两方面的调整。一是ulimit参数做;一是tcp/ip参数做化。
1ulimit -HSn 131072
2ulimit -HSc unlimited
可以通过以上命令修改用户打开的最大文件数,当然,也可以通过配置文件修改指定启动varnish用户所能打开的最大文件数。打开/etc/sysctl.conf文件,加入如下内容:
1net.ipv4.ip_local_port_range = 1024 65536
2net.core.rmem_max=16777216
3net.core.wmem_max=16777216
4net.ipv4.tcp_rmem=4096 87380 16777216
5net.ipv4.tcp_wmem=4096 65536 16777216
6net.ipv4.tcp_fin_timeout = 3
7net.ipv4.tcp_tw_recycle = 1
8net.core.netdev_max_backlog = 30000
9net.ipv4.tcp_no_metrics_save=1
10net.core.somaxconn = 262144
11net.ipv4.tcp_syncookies = 0
12net.ipv4.tcp_max_orphans = 262144
13net.ipv4.tcp_max_syn_backlog = 262144
14net.ipv4.tcp_synack_retries = 2
15net.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,,”。
- 其中“”指定缓存文件的存放路径,“”指定缓存文件的大小。内存方式保存:-s malloc,
- -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运行异常缓慢。
如,我在一台测试机上以内存存储方式进行启动时的指令如下:
1/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参数用于指定启动时所用的用户和组。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/varnish-install/2333.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.