haproxy本篇只做简单介绍,进行安装及简单的测试,深入学习可参考官方文档https://www.haproxy.org/。
`简介`
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
`haproxy和nginx对比`
nginx
使用花括号,层级化的配置文件结构
除了自带的map和if语句可以实现简单逻辑,原生支持js/perl脚本,非官方支持lua
除了做负载均衡,还可以做静态web服务器,缓存服务器(haproxy不行)
模块化,按需编译,可选第三方的扩展模块
haproxy
定义和引用,命令式的配置结构
支持acl
做负载均衡比nginx好
提供状态统计监控页面
官方支持会话保持,健康检查等,可媲美硬件F5
不易于扩展,缺乏第三方资源
总结
二者现在都支持http、tcp、udp的负载均衡,nginx采用文档结构表示配置关系,看起来比较清晰,haproxy采用定义和引用。
nginx的master-works参数,多进程,每个进程单线程多核cpu充分利用;haproxy多线程,单线程可以实现超高性能。
做反向代理方面二者都具超高性能。
1、启动容器
启动haproxy容器,同时启动tomcat和apache,用于测试
2、进入容器安装服务
#haproxy
docker exec -it haproxy_haproxy_1 bash
apt update
apt upgrade
apt install haproxy -y
#tocmat
docker exec -it haproxy_tomcat_1 bash
#拷贝安装包
docker cp jdk-8u141-linux-x64.tar.gz haproxy_tomcat_1:/usr/local/
docker cp apache-tomcat-8.5.41.tar.gz haproxy_tomcat_1:/usr/local/
#安装
tar xvf jdk-8u141-linux-x64.tar.gz
echo ' export JAVA_HOME=/usr/local/jdk1.8.0_141/' >> /etc/profile
echo ' export JAVA_BIN=/usr/local/jdk1.8.0_141/bin' >> /etc/profile
echo ' export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
echo ' export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
echo ' export JAVA_HOME JAVA_BIN PATH CLASSPATH' >> /etc/profile
source /etc/profile
tar xvf apache-tomcat-8.5.41.tar.gz
#apache
docker exec -it haproxy_apache_1 bash
apt update
apt upgrade
apt install apache2 -y
3、配置haproxy
vim /etc/haproxy/haproxy.cfg
#监控状态页面配置
listen admin_stats
bind *:8000
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login
stats auth admin:redhat
stats hide-version
stats admin if TRUE
#代理配置
frontend test
bind *:5000
default_backend test_server
#负载配置
backend test_server
server test_server1 127.0.0.1:80 check
server test_server2 127.0.0.1:8080 check
4、启动服务
#haproxy
docker exec -it haproxy_haproxy_1 bash
/etc/init.d/haproxy start
#tomcat
docker exec -it haproxy_tomcat_1 bash
/usr/local/apache-tomcat-8.5.41/bin/startup.sh
#apache
docker exec -it haproxy_apache_1 bash
/etc/init.d/apache2 start
5、监控页面登录查看
http://IP:Port/haproxy-status
6、测试负载均衡
http://Ip:Port
apache
tomcat