nginx 负载均衡
一, 准备三台服务器分别叫node1、node2、node3
二,分别在三台服务器上安装nginx
#配置和安装相关软件: [root@zkxh-huawei /]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree #编辑并加入以下代码 [root@zkxh-huawei /]#vim /etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo #baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
[root@zkxh-huawei /]# yum install nginx -y [root@zkxh-huawei /]# rpm -q nginx [root@zkxh-huawei /]# nginx -t -c /etc/nginx/nginx.conf [root@zkxh-huawei /]# nginx -s reload
三,连接到node1服务器
#配置nginx.conf [root@zkxh-huawei /]# vim /etc/nginx/nginx.conf #并加入以下代码:
upstream allserver{ server 192.168.80.130:80 weight=3;# node2
server 192.168.80.132:80 weight=1;# node3
server 192.168.80.80; #node1
} server{ listen 80; # 监听的端口
server_name www.changjunyong.com; # 监听的地址,多个域名用空格隔开 location / { proxy_pass http://allserver; # 代理转发
} }
#配置server_name 域名 [root@zkxh-huawei /]# vim /etc/hosts
三,新建文件目录
[root@zkxh-huawei /]# mkdir /soft/{app,logs,package/src} -p #分别在node2和node3服务器上 [root@zkxh-huawei /]# vim /soft/app/www/index.html #node2服务器
#node3服务器
四:在node2上编辑nginx.conf 文件 :
[root@zkxh-huawei /]# vim /etc/nginx/nginx.conf #加入以下代码保存退出
server{ listen 80; server_name www.changjunyong.com; location / { root /soft/app/www; index index.html; } }
五:在node3上编辑nginx.conf 文件 :
[root@zkxh-huawei /]# vim /etc/nginx/nginx.conf #加入以下代码保存退出
server{ listen 80; server_name blog.changjunyong.com; root /soft/app/blog/; index index.html; }
六:在node1服务器上测试:
七,总结以及一些注意事项:
#如果出现nginx: [error] invalid PID number "" in "/var/run/nginx.pid" 错误 #则用命令: [root@zkxh-huawei /]# sudo nginx -c /etc/nginx/nginx.conf [root@zkxh-huawei /]# sudo nginx -s reload # node1,node2,node3 服务器之间通讯 #允许某端口放行 [root@zkxh-huawei /]# firewall-cmd --permanent --add-port=80/tcp #需要留意的是在编写完规则之后,要运行--reload参数 [root@zkxh-huawei /]# firewall-cmd --reload #常见命令: #查看防火墙状态 [root@zkxh-huawei /]# firewall-cmd --state [root@zkxh-huawei /]# firewall systemctl stop firewalld.service [root@zkxh-huawei /]# ab -n 50 -c 20 http://192.168.80.80/index.html #压力测试
#反向代理流程
#浏览器访问www.changjunyong.com ,通过本地host文件域名解析,找到192.168.80.80 Nginx虚拟主机,Nginx接收客户机请求,找到server_name为www.changjunyong.com的节点,再根据proxy_pass对应的http路径,将请求转发到upstream allserver上,即端口号为8081的tomcat服务器。
#客户机访问 --->www.changjunyong.com ---> host ---> Nginx ---> server_name ---> proxy_pass ---> upstream---> tomcat