搭建负载均衡服务的实际需求:
1.把单台服务器无法承受的大规模并发访问或数据流量分担到多台节点设备上,分别进行处理,减少用户等待响应的时间,提升用户体验。
2.单个重负载的运算分担到多台节点设备上做并行处理,每个节点处理结束后,将结果汇总,返回给用户。
3.7*24小时的服务保证,任意一个或多个有限后面节点设备宕机,不能影响业务。
实现Nginx负载均衡需要两个组件:
l Ngx_http_proxy_module,用于把请求后抛给服务器节点或upstream服务器池;
l Ngx_http_upstream_module,可以实现网站的负载均衡功能及节点的健康检查。
硬件环境准备:
主机 |
IP |
说明 |
主负载均衡1 |
192.168.159.128 |
Nginx主负载均衡器 |
主负载均衡2 |
192.168.159.128 |
Nginx辅负载均衡器 |
Web1 |
192.168.159.130 |
Web1服务器 |
Web2 |
192.168.159.131 |
Web2服务器 |
软件环境:
操作系统:CentOS 6.8
虚拟机:VM
Web软件:nginx-1.10.2.tar.gz
终端软件:SecureCRT
操作步骤:
通过终端软件连接4台主机,同时进行批处理操作,在整个实验当中还有一个主负载均衡2还没有实现,下次完成这个子任务。
[root@www tools]# yum install openssl openssl-devel pcre pcre-devel -y
[root@www tools]# wgethttp://nginx.org/download/nginx-1.10.2.tar.gz
[root@www tools]#useradd nginx -s /sbin/nolobin -M
[root@www tools]#tar xf nginx-1.10.2.tar.gz
[root@www tools]# cd nginx-1.10.2
[root@www nginx-1.10.2]#./configure \
--user=nginx \
--group=nginx \
--prefix=/application/nginx-1.10.2\
--with-http_stub_status_module \
--with-http_ssl_module
[root@www nginx-1.10.2]#make&& make install
配置Nginx主负载均衡器:192.168.159.128
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
upstream www_server_pools{
server192.168.159.130:80 weight=1; #定义130,131两个web 节点
server192.168.159.131:80 weight=1;
}
server { #定义代理的负载均衡域名虚拟主机
listen 80;
server_name http://www.sky9896.com/;
access_log logs/host.access.log main;
location/ {
proxy_pass http://www_server_pools; #请求发送WWW_server_pools里面的节点
proxy_set_headerHost $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
Nginx web1和web2的配置相同:192.168.159.130 192.168.159.131
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local]"$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access_www.log main;
keepalive_timeout 65;
server {
listen 80;
server_name www.sky9896.com;
location/ {
root html/www;
index index.html index.htm;
}
测试:web1=web2的配置操作是一样的
[root@~]# mkdir /application/nginx/html/www
[root@localhost html]# ll
drwxr-xr-x. 2 root root 4096 Dec 29 19:31 www
[root@localhost html]# cd www
[root@localhost www]# ll
-rw-r--r--. 1 root root 21 Dec 29 19:31 index.html
[root@NFS-Server www]# cat index.html #web1站点
192.168.159.130 www
[root@localhost www]# cat index.html #web2站点
192.168.159.131 www
[root@NFS-Server html]# /application/nginx/sbin/nginx-t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.confsyntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conftest is successful
[root@NFS-Server html]# /application/nginx/sbin/nginx
[root@ www]# vi /etc/hosts #做好192.168.159.130本地hosts解析
192.168.159.130 www.sky9896.com
[root@ www]#curl www.sky9896.com #测试web1
[root@ www]# vi /etc/hosts #做好192.168.159.131本地hosts解析
192.168.159.130 www
192.168.159.131 www.sky9896.com
[root@ www]# curl www.sky9896.com #测试web2
192.168.159.131 www
主负载均衡器:192.168.159.128作为客户端的测试结果如下:
[root@www ~]# cat /etc/hosts #hosts解析
192.168.159.128 www.sky9896.com
[root@www ~]# curl www.sky9896.com
192.168.159.131 www
[root@www ~]# curl www.sky9896.com
192.168.159.130 www
测试小结:
1.如果是关掉任一个web节点,网站业务不受影响,访问请求都会定位到其他的某个节点上。
2.如果所有web节点都宕掉了,此时,会出现如下情况:
[root@www ~]# curl www.sky9896.com
502 BadGateway