原理:
-
nginx
-
HAProxy
-
nfs
搭建实验环境
关闭防火墙和核心防护(所有主机)
部署nginx:
-
依赖包安装
-
下载版本并解压
-
编译安装
-
启动nginx
部署HAProxy:
-
安装HAProxy
-
修改配置文件vi /etc/haproxy/haproxy.cfg
-
启动服务
部署nfs:
-
安装软件包
-
创建共享文件
-
修改NFS服务的主配置文件vim /etc/exports
-
启动服务
-
创建html
-
使用 showmount 命令来查看服务端(本机)是否可连接
-
挂载目录
-
挂载目录到nginx服务器
原理:
1.nginx
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。nginx作为一款高性能的服务器,除了可以做后端服务器的代理、负载均衡之外,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html、js、css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问。
2.HAProxy
HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。
HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速。最关键的是,HAProxy具备媲美商用负载均衡器的性能和稳定性。
因为HAProxy的上述优点,它当前不仅仅是免费负载均衡软件的首选,更几乎成为了唯一选择。
3.nfs
网络文件系统(network files system)简称NFS是一种基于TCP传输协议的文件共享习通。
NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。应用于web服务器作为视频、图片资源的服务器、域用户家目录服务器、内容文件存储服务器。
搭建实验环境:
192.168.126.145 | nginx |
192.168.126.148 | nginx |
192.168.126.140 | HAProxy |
192.168.126.150 | nfs |
关闭防火墙和核心防护(所有主机):
systemctl stop firewalld
setenforce 0
部署nginx:
1.依赖包安装
yum -y install gcc gcc-c++ autoconf automake libtool make openssl openssl-devel pcre pcre-devel #依赖包安装
2.下载版本并解压
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 #解压安装包
3.编译安装
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 #安装
4.启动nginx
cd /usr/local/nginx #进入生成目录
/usr/local/nginx/sbin/nginx -t #测试
/usr/local/nginx/sbin/nginx -V #查看编译模块信息
/usr/local/nginx/sbin/nginx #启动
nginxIP地址浏览器访问:
部署HAProxy:
1.安装HAProxy
yum install haproxy -y #安装HAProxy
2.修改配置文件vi /etc/haproxy/haproxy.cfg
# Global settings
global
#日志管理为local2载体,需要在rsyslog中设置存放目录
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
defaults
#设定为HTTP模式
mode http
log global
option httplog
option dontlognull
#设置为关闭长连接
option httpclose
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
#前端设置
frontend main
#绑定5000端口进行负载均衡
bind *:80 #设置为80端口
#对用户申请的不同请求进行分流
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
acl url_html url_reg -i \.html$
#设置不同请求的后端服务器组
use_backend static if url_static
use_backend app if url_html
#设置默认后端服务器组
default_backend app
#后端转发设置
#static后端组服务器设置
backend static
balance roundrobin
server static 127.0.0.1:4331 check
#app后端组服务器设置
backend app
#设置转发策略
balance roundrobin
#以下设置为把真实服务器的ID插入到回复用户的信息中,用户相同的请求可根据cookie找到相同的服务器
#cookie SERVERID insert indirect nocache
#server app1 192.168.29.132:80 check cookie 3
#server app2 192.168.29.138:80 check cookie 4
#设定转发的后台服务器地址并开启对后台服务器的健康检查
server app1 192.168.126.145:80 check #nginxiP地址
server app2 192.168.126.148:80 check n#ginxiP地址
#设定监控平台
listen admin_stats
stats enable
#绑定监控端口号
bind *:8080
mode http
option httplog
log global
maxconn 10
stats refresh 30s
stats uri /admin
stats realm haproxy
#设定访问权限,用户名和密码
stats auth admin:admin
stats hide-version
stats admin if TRUE
3.启动服务
systemctl start haproxy #启动服务
netstat -tnlp |grep haproxy #查看启动情况
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 3257/haproxy
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3257/haproxy
浏览器访问haproxy服务器的IP地址192.168.126.40进行验证,能够成功访问并且刷新网页能跳转到另一台nginx服务器的页面代表实验成功:
查看监控情况:
部署nfs :
1.安装软件包
yum install -y rpc-bind nfs-utils 安装软件包
2.创建共享文件
mkdir /xhm
chmod -R 777 /xhm
3.修改NFS服务的主配置文件vim /etc/exports
/xhm *(rw,sync) #*代表所有主机都可以访问(添加规则)
4.启动服务
systemctl start rpcbind #启动rpcbind服务
systemctl start nfs #启动nfs服务
exportfs -r #执行生效
5.创建html
touch /xhm/index.html
vim /xhm/index.html
xhm040623 #在里面写入一个xhm040623
6.使用 showmount 命令来查看服务端(本机)是否可连接
[root@localhost wwx]# showmount -e localhost
Export list for localhost:
/xhm *
7.挂载目录
mount localhost:/xhm /mnt
8.挂载目录到nginx服务器
mount -v -t nfs 192.168.126.150:/xhm /usr/local/nginx/html/ #ip是nfs的ip 将服务端的共享目录挂载到本机的
浏览器中访问haproxy服务器的IP地址 怎么刷新都会是nfs上的html就完成了: