企业级——搭建具有多个web服务器的varnish服务系统
负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。实际上企业当中的web后端服务器(为客户端提供资源的服务器)的性能有好有坏,性能差一点的就让它少干一点活,性能好的就多分担一点,现在server1这个web服务器性能比较差,server2这个服务器性能比较好,客户端通过日常访问时会对server1和server2进行轮询访问,但通过varnish加速器访问的时候去轮询server2。
1.搭建环境
haohao1作varnish缓存代理系统
haohao2作后台web1服务器
haohao3作后台web2服务器
haohao3、haohao2、haohao1中查看状态:
ip addr show
systemctl status firewalld
getenforce
2.定义后端服务器
haohao1中:
(1)安装varnish及依赖项
yum install jemalloc-3.6.0-1.el7.x86_64.rpm varnish-4.0.5-1.el7.x86_64.rpm varnish-libs-4.0.5-1.el7.x86_64.rpm -y
(2)查看varnish配置文件及版本
rpm -qc varnish # 查看varnish服务的配置文件
rpm -qa | grep varnish # 查看varnish版本
(3)修改系统参数
永久修改:
vim /etc/security/limits.conf #修改系统参数
varnish - nofile 131072 #varnish用户最大开启文件个数
varnish - memlock 82000 #运行varnish时内存允许其占用82M内存空间
varnish - nproc unlimited #varnish用户开启进程数不受限制
临时修改:
ulimit -n 131072
ulimit -l 82
ulimit -a
(4)配置服务开启端口为80端口
vim /etc/varnish/varnish.params
(5)配置两个后端服务器
vim /etc/varnish/default.vcl #编辑varnish核心配置文件
backend default {
.host = "172.25.76.2"; ##配置后端realserver
.port = "80";
}
backend web2 {
.host = "172.25.76.3";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend_hint = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend_hint = web2;
} else {
return (synth(405));
}
}
(6)重启varnish服务,查看生成的默认用户及80端口
systemctl restart varnish
netstat -antpl
id varnish
在haohao2中搭建web1后端服务:
yum install httpd -y #安装httpd服务
cd /var/www/html
vim index.html #编辑默认发布界面
systemctl start httpd #开启服务
在haohao3中搭建web2后端服务:
yum install httpd -y #安装httpd服务
cd /var/www/html
vim index.html #编辑默认发布界面
systemctl start httpd #开启服务
真机中测试:
vim /etc/hosts #添加varnish域名解析
curl www.westos.org
curl bbs.westos.org
3.负载均衡的实现
在server1中:
(1)查看负载均衡模块路径
/usr/lib64/varnish/vmods/libvmod_directors.so
(2)编辑default.vcl配置文件
vim /etc/varnish/default.vcl #编辑varnish核心配置文件
import directors from "/usr/lib64/varnish/vmods/libvmod_directors.so";
# Default backend definition. Set this to point to your content server.
sub vcl_init { ##定义负载均衡
new lb = directors.round_robin();
lb.add_backend(web1);
lb.add_backend(web2);
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend_hint = lb.backend(); ##当访问www.westos.org时,请求转到web1
#return (pass); ##测试时可打开此选项,不进行缓存
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend_hint = web2;
} else {
return (synth(405));
}
}
systemctl restart varnish #重启服务
在真机中测试:
4.搭建一个varnish系统为具有多个资源的web后端服务器服务
在haohao3中:
(1)编辑vhost.conf文件
vim /etc/httpd/conf.d/vhost.conf #编辑httpd访问规则文件
<VirtualHost *:80>
DocumentRoot /www #转向目标目录
ServerName www.westos.org #当以域名www.westos.org访问时
</VirtualHost>
<Directory "/www"> #设置目标目录权限
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org #当以域名bbs.westos.org访问时
</VirtualHost>
<Directory "/bbs"> #设置目标目录权限
Require all granted
</Directory>
systemctl restart httpd #重启服务
(2)创建目录,编辑默认发布文件