一、Haproxy概述、简介
(1)Haproxy简介
Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,也是目前来说比较流行的一种集群调度工具
支持双机热备、虚拟主机、基于TCP和HTTP应用代理等功能
对于双机热备来说,Haproxy配置简单,拥有很好的对服务器节点的健康检查功能,当其代理的后端服务器出现故障时,Haproxy会自动的将该故障服务器摘除,当服务器的故障恢复后Haproxy还会自动讲RS服务器添加 (和keepalived的健康检查差不多)
对于高性能的反向代理来说,Haproxy使用于那些访问量很大,但是又需要会话保持或者七层应用的业务。Haproxy运行在普通的服务器硬件上,仅仅是进行简单的优化就可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单、安全的整合到各种网站的架构中,同时使得应用服务器的ip地址不会暴露在网络中。Haproxy软件引入了frontend (前端) 和 backend (后端) 的功能,而frontend的acl匹配规则可以让运维管理人员根据任意HTTP请求作为头部来进行规则匹配,然后再把请求定向到相关的backend (即server pools 服务器池等待前端把请求转过来的服务器组) 。通过frontend和backup (备用服务器) ,我们可以很容易的实现Haproxy的七层代理功能,haproxy是一款不可多得的优秀代理服务软件
(2)Haproxy和LVS、Nginx的比较
LVS性能最好,但是相对于Haproxy来说,搭建要复杂许多
Nginx的upstream模块支持集群功能,但是对集群节点的健康检查功能不强,性能没有Haproxy好
(3)Haproxy的代理模式
主要支持两种代理模式:
第一个: 四层TCP代理
例如:可以用于邮件服务器内部协议通信服务器、Mysql服务器等
第二个: 七层代理
在四层TCP代理模式下,Haproxy仅在客户端和服务器之间双向转发流量,但是在七层模式下Haproxy会分析应用层协议,并且能够通过运行、拒绝、交换、增加、修改或者删除请求(request)或者回应(reponse)里指定内容来控制协议
主机 | IP地址 | 软件包 |
haproxy | 192.168.168.152 | haproxy-2.4.8.tar.gz |
nginx | 192.168.168.162 | nginx-1.8.1.tar.gz |
nginx | 192.168.168.163 | nginx-1.8.1.tar.gz |
NFS | 192.168.168.140 |
实验目的
利用haproxy+nginx搭建的群集,使内部web服务器不用把ip地址暴露在网络上,并且实现两台web服务器页面的来回切换,实现负载均衡
实验操作
关闭防火墙:system stop firewalld.server
1.安装web1服务器 ip:192.168.168.162
yum -y install gcc gcc-c++ autoconf automake libtool make openssl openssl-devel pcre pcre-devel 依赖包安装
cd /usr/local/src/ 切换安装路径
wget http://nginx.org/download/nginx-1.8.1.tar.gz 下载nginx,如果提示没有wget请自行安装 yum -y install wget
tar -zxvf nginx-1.8.1.tar.gz 解压安装包
cd nginx-1.8.1 打开解压出来的目录
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre 编译安装
make && make install 安装
nginx生成文件在/usr/local/nginx
# 启动
/usr/local/nginx/sbin/nginx
# 重新载入配置文件
/usr/local/nginx/sbin/nginx -s reload
# 重启
/usr/local/nginx/sbin/nginx -s reopen
# 停止
/usr/local/nginx/sbin/nginx -s stop
另一台web2同样配置
web1配置测试页面
echo "Server 192.168.168.162" >index.html
web2配置测试页面
echo "Server 192.168.168.163" > index.html
注:前提要在html这个目录下输入这两条命令,先把nginx运行停止配置完重新载入配置文件开启nginx服务
2. 配置haproxy代理
切换目录
cd /opt/
解压文件包
tar -zxvf haproxy-2.4.8.tar.gz
进去目录
cd haproxy-2.4.8.tar.gz
make TARGET=generic
export PATH=$PATH:/opt/haproxy-1.7.8/haproxy
让此环境生效
source /etc/profile
mkdir /etc/haproxy #在etc下目录创建haproxy
vim haproxy.cfg #修改配置文件
/opt/haproxy-2.4.8/haproxy -f /etc/haproxy/haproxy.cfg #开启haproxy服务
验证自启动成功:
[root@localhost haproxy-1.7.8]# lsof -i:8888 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME haproxy 45031 root 3u IPv4 228341 0t0 TCP localhost.localdomain:ddi-tcp-1 (LISTEN)
3.测试web群集
1)在客户端使用浏览器打开http://192.168.168.162浏览器显示信息如图所示
2)再次打开一个新的浏览器页面访问http://192.168.168.152,浏览器显示信息如图所示:
可以看到 群集的负载均衡已经生效,以及满足了群集的高性能要求
4.部署NFS共享目录发布资源
1)安装nfs-utils,rpcbind
yum -y install nfs-utils rpcbind
systemctl enable nfs #设置自启动服务
systemctl enable rpcbind #设置自启动rpcbind服务
2)设置共享目录
mkdir /etc/html
编辑exports
vi /etc/exports
3)启动NFS服务程序
systemctl start rpcbind
systemctl start nfs
4)查看本机发布的共享目录
在客户机安装rpc,不用开启
yum -y install rpcbind nfs-utils
5)客户机使用showmount查看nfs服务器共享了哪些目录
6)手动挂载NFS共享目录
完成挂载后访问客户机的文件夹相当于访问NFS服务器里面的