负载均衡之【pound】
作者:【吴业亮】云计算开发工程师博客:http://blog.csdn.net/wylfengyujiancheng一、架构及拓扑Pound 是一个反向 HTTP 代理,负载均衡器和 SSL 封装器。可代理客户的的 HTTPS 请求到 HTTP 的后端服务器,并对这些请求进行分发,支持会话保持,支持 HTTP/1.1。官网地址:http://www.apsis.ch/pound/index
作者:【吴业亮】云计算开发工程师
博客:http://blog.csdn.net/wylfengyujiancheng
一、架构及拓扑
Pound 是一个反向 HTTP 代理,负载均衡器和 SSL 封装器。可代理客户的的 HTTPS 请求到 HTTP 的后端服务器,并对这些请求进行分发,支持会话保持,支持 HTTP/1.1。
官网地址:http://www.apsis.ch/pound/index_html
二、安装与配置
1、安装epel源
# yum install epel-release -y
2、安装Pound
# yum --enablerepo=epel -y install Pound
3、备份配置文件
# mv /etc/pound.cfg /etc/pound.cfg.org
4、修改配置文件/etc/pound.cfg
User "pound"
Group "pound"
#日志运行级别,最大是5
LogLevel 3
# 制定日志存放
LogFacility local1
#设置检测心跳时间
Alive 30
# 定义前端,IP和端口
ListenHTTPS
Address 0.0.0.0
Port 443
#加密证书路径
Cert "/etc/pki/tls/certs/pound.pem"
End
# 定义后端
Service
BackEnd
# 后端服务器的IP
Address 192.168.8.102
# 后端服务器的端口
Port 80
# 设置权值 (value is 1-9, max 9)
Priority 5
End
BackEnd
Address 192.168.8.103
Port 80
Priority 5
End
BackEnd
Address 192.168.8.104
Port 80
Priority 5
End
End
5、生成证书
# cd /etc/pki/tls/certs
# openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/pound.pem -out /etc/pki/tls/certs/pound.pem
设置权限
# chmod 600 pound.pem
6、默认pound的PIDFILE未启用,在启动文件中取消注释
# sed -i -e "s/^PIDFile/#PIDFile/" /usr/lib/systemd/system/pound.service
7、启动服务并设置开机启动
# systemctl start pound
# systemctl enable pound
8、修改rsyslog配置文件/etc/rsyslog.conf,记录pound日志
# line 54: 增加local1.none
*.info;mail.none;authpriv.none;cron.none,local1.none /var/log/messages
local1.* /var/log/pound.log
9、重启rsyslog服务,使配置文件生效
# systemctl restart rsyslog
10、在所有的backend节点上安装和配置httpd
Node1上
安装httpd
# yum install httpd -y
关闭防火墙
# service firewalld stop
关闭selinux
setenforce 0
创建/var/www/html/index.html并写入
[root@www ~]# vi /var/www/html/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Node1 Test Page
</div>
</body>
</html>
启动服务并设置开机启动
service httpd restart
chkconfig httpd on
Node2上
安装httpd
# yum install httpd -y
关闭防火墙
# service firewalld stop
关闭selinux
setenforce 0
创建/var/www/html/index.html并写入
[root@www ~]# vi /var/www/html/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Node2 Test Page
</div>
</body>
</html>
启动服务并设置开机启动
service httpd restart
chkconfig httpd on
Node3上
安装httpd
# yum install httpd -y
关闭防火墙
# service firewalld stop
关闭selinux
setenforce 0
创建/var/www/html/index.html并写入
[root@www ~]# vi /var/www/html/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Node3 Test Page
</div>
</body>
</html>
启动服务并设置开机启动
service httpd restart
chkconfig httpd on
11、在所有的backend节点上打开http日志记录X-Forwarded-For
# vi /etc/httpd/conf/httpd.conf
# line 196: 修改日志格式
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
# systemctl restart httpd
三、测试:
三次访问结果如下:
四、url重定向
1、目标:
访问https://node1.wuyeliang.com/时,自动转发到node1上
访问https://node2.wuyeliang.com/时,自动转发到node2上
访问访问https://192.168.8.101/时,自动转发到node3上
2、示意图
3、配置文件
User "pound"
Group "pound"
LogLevel 3
LogFacility local1
Alive 30
ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/etc/pki/tls/certs/pound.pem"
End
Service
# 定义 node1.wuyeliang.com
HeadRequire "Host: .*node1.wuyeliang.com"
BackEnd
Address 192.168.8.102
Port 80
Priority 5
End
End
Service
# 定义node2.wuyeliang.com
HeadRequire "Host: .*node2.wuyeliang.com"
BackEnd
Address 192.168.8.103
Port 80
Priority 5
End
End
Service
# 定义其他访问
HeadRequire "Host: .*"
BackEnd
Address 192.168.8.104
Port 80
Priority 5
End
End
如果没有dns解析主机名,通过hosts文件解析主机
C:\Windows\System32\drivers\etc新增
192.168.8.101 node1.wuyeliang.com
192.168.8.101 node2.wuyeliang.com
4、测试
日志如下:
更多推荐
所有评论(0)