一、实验要求
- 动静都要能实现负载均衡,要注意会话的问题
- 在haproxy和后端主机之间添加varnish进行缓存
- 启用stats page,要求仅能通过本地访问使用管理接口
- 分别考虑不同的服务器组的调度算法
- 启用压缩功能
二、实验拓扑图
三、搭建各服务器环境
1. 搭建Haproxy
yum -y install haproxy
vim /etc/haproxy/haproxy.cfg
# 注释原来的 frontend 和 backend 配置段,新加如下代码:
frontend http
bind *:80
acl url_static path_beg -i /images /javascripts /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend dynamic
listen stats
bind *:8075
acl valid_user src 192.168.30.101
stats enable
stats uri /optstats
stats realm "Haproxy statistic"
stats auth admin:centos
stats admin if valid_user
stats refresh 5
backend static
balance roundrobin
maxconn 10000
server st1 192.168.30.104:80 maxconn 5000 check
backend dynamic
balance roundrobin
maxconn 10000
server dy1 192.168.30.100:80 maxconn 5000 check
vim /etc/rsyslog.conf
# 取消下面两条语句的注释
$ModLoad imudp
$UDPServerRun 514
# 在文件末尾添加一条规则
local2.* /var/log/haproxy.log
systemctl restart rsyslog
systemctl enable haproxy
systemctl start haproxy
2. 搭建后端Web服务器
yum install httpd -y
systemctl enable httpd
systemctl start httpd
yum install httpd php php-mysql php-gd php-mbstring -y
systemctl enable httpd
systemctl start httpd
3. 部署Wordpress
mysql > grant all on wordpress.* to test@'192.168.30.%' identified by 'centos';
tar xf wordpress-4.9.4-zh_CN.tar.gz -C /var/www/html/
cp wp-config-sample.php wp-config.php
# 配置MySQL连接
vim wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'test');
define('DB_PASSWORD', 'centos');
define('DB_HOST', '192.168.30.107');
4. 搭建Varnish
yum -y install varnish
cd /etc/varnish
vim default.vcl
...
backend default {
.host = "192.168.30.104";
.port = "80";
}
...
vim varnish.params
...
VARNISH_LISTEN_PORT=6081
...
VARNISH_STORAGE="malloc,256M"
...
backend static
balance roundrobin
maxconn 10000
server st1 192.168.30.103:6081 maxconn 5000 check
systemctl start varnish
systemctl restart haproxy
四、测试和验证