负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。实际上企业当中的web后端服务器(为客户端提供资源的服务器)的性能有好有坏,性能差一点的就让它少干一点活,性能好的就多分担一点,现在server1这个web服务器性能比较差,server2这个服务器性能比较好,客户端通过日常访问时会对server1和server2进行轮询访问,但通过varnish加速器访问的时候去轮询server2。
haohao1作varnish缓存代理系统
haohao2作后台web1服务器
haohao3作后台web2服务器
ip addr show
systemctl status firewalld
getenforce
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
vim /etc/varnish/varnish.params
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));
}
}
systemctl restart varnish
netstat -antpl
id varnish
yum install httpd -y #安装httpd服务
cd /var/www/html
vim index.html #编辑默认发布界面
systemctl start httpd #开启服务
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
/usr/lib64/varnish/vmods/libvmod_directors.so
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 #重启服务
vim /etc/httpd/conf.d/vhost.conf #编辑httpd访问规则文件
DocumentRoot /www #转向目标目录
ServerName www.westos.org #当以域名www.westos.org访问时
#设置目标目录权限
Require all granted
DocumentRoot /bbs
ServerName bbs.westos.org #当以域名bbs.westos.org访问时
#设置目标目录权限
Require all granted
systemctl restart httpd #重启服务