一、 Nginx反向代理与负载均衡概念简介
• 严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?
• 普通负载均衡软件,例如大名鼎鼎的LVS,其实功能只是对请求数据包的转发(也可能会改写数据包),传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不一样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。
• 一句话,LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。
- nginx反向代理负载均衡与LVS的区别
两者最本质的区别就是LVS等的负载均衡是转发用户请求的数据包,而Nginx是通过反向代理实现负载均衡的,是接收用户的请求然后重新发起请求去请求其后面的节点。
其次,nginx工作在OSI网络模型的第7层,所以它可以针对http协议本身来做分流策略,比如针对域名、URI等。lvs工作在网络的第四层,所以lvs并不具备nginx的这些功能,但是lvs可以支持极大的并发,工作效率明显高于nginx反向代理。
lvs数据返回时跳过lvs,即LVS :单向的(End user --->LVS---> tomcat ...> end user ) 而Ngnix 有个来回(End user --->Ngnix---> tomcat--->Ngnix ...> end user)
二、Nginx反向代理负载均衡环境准备
1.1环境部署
HOSTNAME IP 说明
lb01 192.168.0.221 Nginx主负载均衡器
lb02 192.168.0.222 Nginx副负载均衡器
web01 192.168.0.223 Web01服务器
web02 192.168.0.224 Web02服务器
1.2安装Nginx
# yum -y install openssl openssl-devel pcre pcre-devel 安装依赖软件包命令集合
# tar xf nginx-1.10.2.tar.gz -C /usr/src/ 提前下载好软件
# cd /usr/src/nginx-1.10.2/
# useradd -M -s /sbin/nologin nginx
# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install 预配置、编译、安装
# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ 做软连接
1.3 配置web服务器
(web01 web02 配置相同)
###这里故意将www虚拟主机放在下面,便于用后面的参数配置测试效果
配置完成后检查语法,并启动Nginx服务
# /usr/local/nginx/sbin/nginx
1.4 创建网页目录
#cd /usr/local/nginx/
#mkdir ./html/mail
#touch ./html/mail/bbs.html
#touch ./html/mail/yunjisuan.html
#echo "web1 i am bbs " > ./html/mail/bbs.html
#echo "web1 i am www" > ./html/mail/yunjisuan.html
1.5 Nginx 反向代理配置
# vim /usr/local/nginx/conf/nginx.conf
检查语法并重启
#/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#/usr/local/nginx/sbin/nginx -s reload
1.6 测试
在宿主计添加hosts映射
浏览器访问http://www.yunjisuan.com