HAproxy的负载均衡,以及基于TCP和HTTP的应用程序代理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了HAproxy的负载均衡,以及基于TCP和HTTP的应用程序代理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6951字,纯文字阅读大概需要10分钟。
内容图文
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
##首先我们要有一个安装包 haproxy-1.6.11.tar.gz
yum install -y rpm-build ##源码编译软件
cd /pub##这里面有你的安装包
rpmbuild -tb haproxy-1.6.11.tar.gz
yum install prce-devel gcc openssl-devel #解决依赖性
rpmbuild -tb haproxy-1.6.11.tar.gz #重新编译,成功之后进行下步操作
cd ##切换到/root
cd rpmbuild
ls
cd RPMS
ls
cd x86_84
ls
rpm -qpl haproxy-1.6.11.x86_64.rpm ##查看安装haproxy会生成的文件,没有主配置文件,需要将压缩包解压获取
rpm -ivh haproxy-1.6.11.x86_64.rpm ##安装haproxy
cd /pub
tar zxf haproxy-1.6.11.tar.gz
ls
cd haproxy-1.6.11
ls
cd examples/
ls
cp content-sw-sample.cfg /etc/haproxy/
cd /etc/haproxy
ls #此时有 content-sw-sample.cfg 文件,我们需要给他改名字,因为在haproxy启动脚本中读取的配置文件是/etc/haproxy/haproxy.cfg
mv content-sw-sample.cfg haproxy.cfg
ls##此时应该改名字成功
vim haproxy.cfg ##我们可以看见他有用户组和用户id,所以我们要给他建立用户和用户组,
groupadd -g 200 haproxy
useradd -g 200 -u 200 haproxy
id haproxy
vim /etc/security/limits.conf ##因为我们进配置文件看到他的最大连接数为10000,所以要改
haproxy - nofile 10000
vim haproxy.cfg
# This is a sample configuration. It illustrates how to separate static objects
# traffic from dynamic traffic, and how to dynamically regulate the server load.
#
# It listens on 192.168.1.10:80, and directs all requests for Host 'img' or
# URIs starting with /img or /css to a dedicated group of servers. URIs
# starting with /admin/stats deliver the stats page.
#
global #全局定义
maxconn 10000 ##最大连接数
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0 ##本机日志
uid 200
gid 200
chroot /var/empty
daemon
defaults ##我门把后端和前端共用的条件放在默认条件下
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
stats uri /admin/stats
option prefer-last-server
retries 2
option redispatch
timeout connect 30s
timeout server 30s
# The public 'www' address in the DMZ
frontend public
bind 172.25.17.11:80 name clear
# use_backend static if { hdr_beg(host) -i img }
# use_backend static if { path_beg /img /css }
default_backend dynamic
backend dynamic
balance roundrobin
server dynsrv1 172.25.17.12:80 check inter 1000 ##后端服务器
server dynsrv2 172.25.17.13:80 check inter 1000
/etc/init.d/haproxy start
/etc/initd/haproxy reload
2和3的httpd服务均要开启 ##在浏览器输入172.25.17.11,出现论调
haproxy有8种均衡算法分别如下:
roundrobin, 简单的轮询
static-rr, 根据权重
leastconn, 最少连接者先处理
source, 根据请求源IP
uri, 根据请求的URI
url_param, 根据请求的URl参数
hdr(name), 根据HTTP请求头来锁定每一次HTTP请求
rdp-cookie(name), 很据cookie(name)来锁定并哈希每一次TCP请求
cat /var/log/messages ##发现什么都没有,因为我们并没有设置他的服务
vim /etc/rsyslog.conf
将$ModLoad imudp $UDPServerRun 541 的注释打开
在local7.*下面加 local0.* /var/log/haproxy.log
在*.info;mail.none;authpriv.none;cron.none;加local0.none
/etc/init.d/rsyslog restart
cat /var/log/haproxy.log ##发现什么都没有,我们需要让浏览器访问几次,再次查看就有了
vim haproxy.cfg
在default后面加 stats auth admin:westos
defaults
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri ##看到的是ok字样,表明你haproxy是好的
maxconn 8000
timeout client 30s
stats uri /admin/stats ##看到的是表格样式界面,这也可以更改为stats,
option prefer-last-server 搜索变成http://172.25.17.11/stats
retries 2
option redispatch
timeout connect 30s
timeout server 30s
stats auth admin:westos
/etc/init.d/haproxy reload
在浏览器访问http://172.25.17.11/admin/stats ##此时访问需要用户和密码admin westos
###在黑名单里面的不能访问
在前端frontend public 加
acl blacklist src 172.25.17.250
http-request deny if blacklist #如果在黑名单里,访问拒绝
frontend public
bind 172.25.17.11:80 name clear
acl blacklist src 172.25.17.250
http-request deny if blacklist
/etc/init.d/haproxy reload
在浏览器访问http://172.25.17.11 ##403被拒
##我们可以让拒绝链接到server1的httpd上
在前端frontend public 加
acl blacklist src 172.25.17.250
http-request deny if blacklist
errorloc 403 http://172.25.17.11:8080
或者直接链接到server1上 redirect location http://172.25.17.11:8080
/etc/init.d/haproxy reload
此时server1要开启httpd服务,并改8080端口,重启httpd服务
在浏览器访问http://172.25.17.11 ##出现server1里面的内容
##更改循环算法
在后端注释论叫增加 balance source ##根据ip进行访问,同一个ip访问的是同一种东西
/etc/init.d/haproxy reload
在浏览器访问http://172.25.17.11 ##不会改变访问的内容
动静页面分离(在没有分离之前,两个ip一直在一起)
backend dynamic
balance roundrobin
# balance source
server dynsrv1 172.25.17.12:80 check inter 1000
backend static
balance roundrobin
server dynsrv2 172.25.17.13:80 check inter 1000
将前端访问默认的后端改为static静态
use_backend dynamic if { path_end -i *.php }
default_backend static
/etc/init.d/haproxy reload
在动态ip上下载php
yum install php
vim /var/www/html/index.php
<?php
phpinfo()
?>
/etc/init.d/httpd restart
在浏览器访问http://172.25.17.11 可以看见动静轮询
##给浏览器上传某东西
在前端加
acl write method POST
acl write method PUT
use_backend dynamic if write
default_backend static
/etc/init.d/haproxy reload
给动态ip里面下载安装包同时删除/var/www/html里面所有的东西
cd /var/www/html/
rm -fr *
把upload包放在html里面
cd upload
ls
mv * .. ##把upload里面的东西放在html里面
ls#此时什么都没有了
cd ..
ls
ll
chmod 777 upload
ll
vim upload_file.php
将你上传的东西的尺寸改大一般在后面加2个0,使上传的东西为2兆
scp -r * root@172.25.17.13:/var/www/html
在server3里面
cd /var/www/html
ls##此时应该有传过来的东西
yum install -y php
/etc/init.d/httpd restart
ll#看upload的权限是否为777
在浏览器访问http://172.25.17.11
上传照片,照片的格式一定要改为人家要求的格式,否则上传失败
然后去动态ip里面也就是server2里面
cd /var/www/html/upload
ls ##可以看见你上传的照片的名字
内容总结
以上是互联网集市为您收集整理的HAproxy的负载均衡,以及基于TCP和HTTP的应用程序代理全部内容,希望文章能够帮你解决HAproxy的负载均衡,以及基于TCP和HTTP的应用程序代理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。