nginx 安装部署以及负载均衡
Nginx
什么是 Nginx?
Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev 在建立的项目时,使用基于 BSD 许可。
Nginx 特点
Nginx 做为 HTTP 服务器,有以下几项基本特性:
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲. 无缓存的反向代理加速,简单的负载均衡和容错.
FastCGI,简单的负载均衡和容错. 模块化的结构。包括 gzipping, byte ranges, chunkedresponses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。 支持 SSL 和 TLSSNI. Nginx
专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达
50,000 个并发连接数。Nginx 具有很高的稳定性。其它 HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。
实验环境:
1设置一台新的虚拟机:
安装包:nginx-1.14.0
安装环境:因为nginx是静态服务器安装和以往安装环境不同分三步走:
1> ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio #configure编译安装nginx源程序生成makefile文件在make编译过程中读取MAKEFILE文件
2> make
3> make install
实验步骤:
tar zxf nginx-1.14.0.tar.gz
cd nginx-1.14.0/src/core/
vim nginx.h
#define NGINX_VER "nginx/" #删除nginx版本显示
cd /root/nginx-1.14.0/auto/cc/
vim gcc #取消gcc的编译调试
# debug
#CFLAGS="$CFLAGS -g"
yum install gcc pcre-devel openssl-devel -y#nginx安装中的依赖性安装包
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio #configure编译安装nginx源程序生成makefile文件在make编译过程中读取MAKEFILE文件
make
make install
修改操作系统配置使之与程序相匹配
cd /usr/local/nginx/conf/
vim nginx.conf #主配置文件
events {
worker_connections 65535; #worker能接受的最大文件连接数
}
nginx -s reload
lscpu #查看cpu内核个数
vim nginx.conf
worker_processes auto;#自动设置
#worker_processes 2; #当服务器中cpu个数为2个时设置为2 01 10 表示他两种方式
#worker_cpu_affinity 01 10;
sysctl -a |grep file #查看程序能接受最大文件连接数
vim /etc/security/limits.conf
nginx - nofile 65536 #修改操作系统能支持的最大文件数
我的虚拟机cpu个数是6个这里的worker_processes可以设置为6也可以设置为auto自动识别系统工作线程数
开启nginx访问其网页
cd /usr/local/nginx/
du -sh
cd sbin/
pwd #/usr/local/nginx/sbin/
ln -s /usr/local/nginx/sbin/nginx /sbin/
nginx -t #检测语法nginx有自动进行健康检测
nginx #开启nginx服务
nginx -s stop #关闭
nginx
nginx -s reload #重新加载nginx
cd /usr/local/nginx/html/ #nginx根目录
vim test.html
访问nginx网页:
nginx中的参数部署:
useradd -M -d /usr/local/nginx/ nginx #nginx用户在nginx组中
vim nginx.conf #主配置文件位置:/usr/local/nginx/sbin
user nginx nginx; #用户以nginx用户身份访问,nginx用户组访问
负载均衡:
**哈希算法:均衡调度站调度最先是哪个服务器,就一直在哪个服务器上面取数据,除非该服务器坏掉才会调度到新的服务器,或着有新的域名访问,才会重新调度。
vim nginx.conf
http {
upstream westos { #调度方法,设置它为westos
ip_hash; #哈希算法
server 172.25.30.2:80; #real server1
server 172.25.30.3:80; #real server2
}
include mime.types;
default_type application/octet-stream;
server {
listen 80; #端口为80端口
server_name www.westos.org;
# 访问域名
location /{ #当客户端访问时,调度站直接扔给westos来进行调度
proxy_pass http://westos;
}
}
nginx -s reload
加权均衡调度 该设置应用于多台服务器中有一台服务器性能相比于其他服务器来说更好一点,调度站就会优先选择性能好的服务器并倾向于好的服务器在其上面调度数据概率根大
vim nginx.conf
http {
upstream westos {
#ip_hash;
server 172.25.30.2:80;
server 172.25.30.2:80 weight=2;
server 172.25.30.3:80;
}
include mime.types;
default_type application/octet-stream;
cat nginx.conf | grep weight
nginx -t
nginx -s reload
访问结果:
备用 当两台web服务器都坏掉时使用回环接口将lvs设置为备用服务器
vim nginx.conf
http {
upstream westos {
#ip_hash;
server 172.25.30.2:80;
server 172.25.30.3:80;
server 127.0.0.1:80 backup; #使用回环接口将调度站本身设置为备用,不到万不得已他是不会上战场的
}
include mime.types;
default_type application/octet-stream;
}
nginx -t
cat nginx.conf | grep backup
nginx -s reload
当两个real server都挂掉时:502
配置文件:
添加新的功能模块
当我们安装的版本不支持我们要用的算法时就会出现下面类似的情况:
面对这种情况我们可以安装新的版本添加新的模块功能但不希望覆盖我们源有的版本就需要:
在nginx中添加功能添加新的模块需要重新.configure+make+make install
Congigure #静态编译生成MAKEFILE
make
make install
安装能够支持新功能版本:
#当安装的nginx版本不支持某些功能时,可以安装其他版本,但是又不想覆盖掉原来的nginx:
下载安装包nginx-1.10.1.tar.gz nginx-sticky-module-ng.tar.gz
nginx -s stop
tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-sticky-module-ng.tar.gz
cd nginx-1.10.1
./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
make
make install
安装部署:
cp /usr/local/nginx/conf/nginx.conf /opt/nginx/conf/ #配置相同但可以支持sticky算法
cd /opt/nginx/conf/
vim nginx.conf
http {
upstream westos {
sticky; #算法
server 172.25.30.2:80;
server 172.25.30.3:80;
}
include mime.types;
default_type application/octet-stream;
/opt/nginx/sbin/nginx -t #检测语法是否错误
/opt/nginx/sbin/nginx #绝对路径开启该服务避免和/sbin下的nginx冲突
/opt/nginx/sbin/nginx -s reload #重新加载该服务
在客户端访问:www.westos.org
for i in {1..10}; do curl www.westos.org;done
作者:dreamer_xixixi
来源链接:https://blog.csdn.net/dreamer_xixixi/article/details/81334392
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。