ngin概念及使用(搭建高可用集群方法)

本文详细介绍了Nginx的安装、功能、配置,包括正向代理、反向代理、负载均衡、动静分离的实现。在配置负载均衡时,通过upstream设置服务器集群,并演示了基于权重的分配策略。同时,讲解了如何搭建高可用的Nginx集群,利用keepalived实现故障转移。此外,还涉及到Nginx的动态配置和静态资源的分离,以提高服务器性能。
摘要由CSDN通过智能技术生成

1.什么是nginx?nginx的功能

1.1什么是nginx:

是高性能的http和反向代理的服务器,处理并发能力特别高。

1.2 nginx功能:

①正向代理:需要客户端指定服务器地址,并指定访问。
②反向代理:暴露代理服务器地址出去,隐藏真实地址,通过nginx进行代理出去请求指向真实服务器。
③负载均衡:增加服务器数量,nginx通过代理分发请求到各个服务器上,可以解决各种请求负担。
④动静分离:就是指把一些动态资源和静态资源隔开,通过nginx对资源进行代理请求,这样就能解决服务器页面显示慢的问题,可以先显示一部分。

1.3 nginx下载及安装

官网地址:http://nginx.org/
1.安装所需要的依赖openssl、zlib、gcc
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.安装pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
2.1解压tar -zxvf 压缩包名
2.2进入pcre目录进行./configure,然后再进行make && make install
3.安装nginx
解压文件,并./configure,然后再进行make && make install
4.解压完成后,在usr/local/nginx中发现多了个文件夹。
1.4启动nginx
进入usr/local/nginx/sbin
./nginx
启动出现错误:

sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决办法:

ln -s /usr/local/lib/libpcre.so.1 /lib64
1.5 关闭nginx
./nginx -s stop

2.nginx配置文件篇

2.1目前nginx.conf文件解析:

1.全局块
配置服务器整体运行的配置指令
worker_processes 1; 处理并发数的配置,数值越大处理的并发数的越多
2.event块
配置用户与nginx服务器的网络连接
worker_connections 1024; 支持的最大连接数为 1024
3.http块
http {//http全局块
include mime.types; //文件引入
default_type application/octet-stream; //MIME-TYPE 定义
sendfile on;//
keepalive_timeout 65;//连接超时事件
//这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
server {//每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {//每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
root html;
}

}
}
①、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
②、location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称
(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓
存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

3.配置负载均衡的用法

①配置监听的端口,新增一个server
server{
# listen 为需要监听的端口号为9001
listen 9001;
#服务器名称为localhost
server_name localhost;
location / {
#myserver为你要代理的地址多个地址的集群
proxy_pass http://myserver;
}
}

②配置集群,已tomcat为例
#配置代理服务器集群 注意该段配置在server外面,但是要配置在http块里面
upstream myserver{
#ip_hash
server 192.168.119.129:8081 weight=1;
server 192.168.119.129:8082 weight=10;
}
有几个参数,weight表示权重 可自行调整根据权重,权重越高获取客户端连接就越多跳转
Ip_hash 表示通过hash结果进行分配
默认是采用轮询
fail 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

③查询结果:浏览器输入localhost:9001,能正确访问tomact

4.配置动静分离方法

①把静态页面与动态页面类型分开通过请求,比如把照片跟静态页面分开等

5.搭建高可用nginx集群

①依赖的环境:keepalived,
下载方式:yum install keepalived –y
安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf
global_defs { #全局配置
notification_email { #指定keepalived在发生切换时需要发送email到的对象
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
smtp_server 192.168.200.1 #指定smtp服务器地址
smtp_connect_timeout 30 #指定连接超时时间
router_id LVS_DEVEL #此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
}

vrrp_instance VI_1 { #虚拟路由的标识符号
state MASTER #指定哪个为master,哪个为backup,
#如果设置了nopreempt这个值不起作用,主备考priority决定
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #VPID标记
priority 100 #优先级,高优先级竞选为master
advert_int 1 #检查间隔,默认1秒
authentication { #设置认证
auth_type PASS #认证方式,类型主要有PASS、AH 两种
auth_pass 1111 #认证密码
}
virtual_ipaddress { #虚拟vip
192.168.200.16
192.168.200.17
192.168.200.18
}
}

virtual_server 192.168.200.100 443 { #集群使用的vip端口号
delay_loop 6 #健康检查的时间间隔
lb_algo rr #调度算法
lb_kind NAT #负载均衡转发规则一般包括DR,NAT,TUN 3种
nat_mask 255.255.255.0 #子网掩码
persistence_timeout 50 #会话保持时间,就是把用户请求转发给同一个服务器,不然
#刚在1上提交完帐号密码,就跳转到另一台服务器2上了
protocol TCP #转发的协议 有tcp和udp两种
real_server 192.168.201.100 443 { #真实的服务器地址
weight 1 #权重
SSL_GET { #健康检测方式
url { #检测url
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc #需要检测的内容,检查后的摘要信息
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 #连接超时的时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试的时间间隔
}
}
}

virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358

real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP

real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

②修改keepalived.conf文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.119.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_http_port {
script “/usr/local/src/nginx_check.sh”
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 //网卡(记得修改)
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}

③在/usr/local/src下创建nginx_check.sh脚本
#!/bin/bash
A=ps -C nginx –no-header |wc -l
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
killall keepalived
fi
fi

④分别启动keepalived和nginx,主从都启动
关闭运行 192.168.17.50 能正常连接到服务器,再次测试关闭主服务器的nginx和keepalived,再次访问还是能访问到

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z J X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值