nginx

1.下载安装包http://nginx.org/en/download.html

 yum install -y java-1.8.0-openjdk.x86_64

2.解压安装包tar -zxvf nginx-1.16.1.tar.gz -C /usr/local

 

3.到安装完成的目录      cd /usr/local/ngonx-1.16.1/

 

4.  .configure   检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

./configure --prefix=/usr/local/nginx

5.yum -y install gcc pcre-devel zlib-devel openssl openssl-devel                在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel

下载依赖库 第三方的开发包
PCRE 是一个Perl库,包括 perl 兼容的正则表达式库。
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

 

6.make && make install     编译并安装

 

目录

conf 配置文件目录

html 网页

logs 日志

sbin 命令

 

常用命令:在sbin里

./nginx 启动

./nginx -s reload 重启

./nginx -s stop 停止

lsof -i:80 查看80端口是否被占用

ps -ef|grep nginx 查看ngin是否启动

firewall-cmd --state查看防火墙是否关闭

 

server {
  listen 80;  #端口号
  server_name localhost;   #域名

  location / {
    index.html #静态页面
  }

}

 基于端口和域名都可以区分

 

反向代理

server {
  listen 80;  #端口号
  server_name localhost;   #域名

  location / {
    proxy_pass http://192.168.66.66:8080 ;     #反向代理的ip地址
  }
}

 

集群的目的:减轻单台服务器的压力

缺点:

分布式session不一致的问题,登录问题

分布式定时任务调度幂等性

 

负载均衡

作用:解决高并发,将所有请求转发到负载均衡器,采用负载均衡算法分配到不同服务器,减去单台服务器压力

 

算法:轮询,ip绑定,权重,fail, url绑定

轮询(轮流访问,服务器配置一样的时候用)

权重(使用weight 配置比例等分)

ip绑定(nginx获取ip地址通过hash运算固定分配到某个服务器,可以解决session共享问题)

fail(第三方,根据页面大小和加载时间长短分配,需要安装upstream fair)

url绑定(第三方,按访问的url的哈希结果来分配请求,使每个url定向到一台后端服务器。需安装nginx的hash软件包)

 

服 务 器 集 群 ( 分 布 式 中 常 见 问題 )

1 . 分 布 式Session— 致 性 问 题 
2 - 分 布 式Job幂 等 性 问 題
3 . 分 布 式 生 成 全 局ID
4 . 分 布 式 锁 解 决 方 案 
5 .分 布 式 配 置 中 心
6 . 分 布 式 日 志 收 集 系 统

 

nginx负载均衡内置功能:故障转移,(重试机制,心跳检测)一般不用

http{
  upstream backServer{   #在http{}中配置需要被代理的真实服务器,默认轮询
    server 192.168.43.26:8080;
    server 192.168.43.27:8080;
    server 192.168.43.28:8080;

  }

  server {
    listen 80;  #端口号
    server_name localhost;   #域名

    location / {
      #指定上游负载均衡服务器       proxy_pass http://backServer;     }   } }
 
根据域名相同拦截不同项目
server {
  listen 80;  #端口号
  server_name www.abc.com;   #域名
  #匹配项目名称为8080的开头
  location /tomcat_8080/ {
    proxy_pass http://192.168.66.66:8080 ;     #反向代理的ip地址
  }

  #匹配项目名称为8081的开头
  location /tomcat_8081/ {
    proxy_pass http://192.168.66.66:8081 ;     #反向代理的ip地址
  }
}
访问
www.abc.com/tomcat_8080/ 和 www.abc.com/tomcat_8081/ 跳到不同的项目

动态负载均衡
(动态配置,不停止运行nginx,修改配置)
实现方式:
1.Consul+Consul-template每次更改配置需要重启nginx
2.Consul+OpenResty 不用重启nginx
3.Consul+upsync+Nginx也不用重启

实现:nginx(1.9版本以上)+consul(注册中心)+upsync(异步)
1.搭建consul server专门存放负载均衡的注册配置信息
2.nginx 每间隔一段时间(upsync
)到consul动态获取最新的注册中心配置信息
一共用两台服务器,一台放consul,一台放nginx和upsync

注 册 中 心

对动态负载均衡配置实现注册,安装好consul后就能注册了

谷歌,go语言编写,实现分布式服务与注册功能

Consul — 款 开 源 的 分 布 式 服 务 注 册 与 发 现 系 统 。 可 以 通 过 http api 把 服 务 注 册 服 务 变 的 非 常 简 单 。
服 务 注 册 : 服 务 实 现 我 们 可 以 使 用 http api 将 服 务 注 册 到 consul;
服 务 发 现 : 可 以 通 过 http api从consul中 获 取 服 务 的 ip 和 端 口
故 障 检 测 : 支 持tcp http等 方 式 健 康 检 测 机 制 。 如 果 出 现 问 题 自 动 摘 除 某 个 服 务 。
k/v存 储 : 使 用k/v存 储 实 现 动 态 配 置 中 心 。 使 用http长 轮 询 实 现 变 更 触 发 和 配 置 修 改 。
多 数 据 中 心 : 支 持 多 个 数 据 中 心 。


配置consul:
1.下载consul,并rz到 /opt
2.解压 unzip consul_0.7.5_linux_amd64.zip 报错的话yum -y install unzip 添加unzip插件
3.启动consul ./consul agent -dev -ui -node=consul-dev -client=192.168.66.30(注册中心ip)
4.页面访问192.168.66.30:8500 就能看到可视化consul注册中心管理平台

 可以使用postman注册http服务

Datacenter指 定 数 据 中 心 ,Address指 定 服 务IP, Service. Id指 定 服 务 唯 一 标 识 ,Service. Service指定服 务 分 组.Service, tags
指 定 服 务 标 签 ( 如 測 试 环 境 、 预 发 环 境 等 ) ,Service. Port指 定 服 务 端 口。

 

 

 nginx_upsync_module

动态获取最新的upstream

upsync是新浪开源的基于nginx实现动态配置的第三方模块,功能是拉取consulserver列表并动态更新nginx的路由信息

1.上传nginx-upsync-module-master.zip
2.解压unzip nginx-upsync-module-master.zip
3.cd /usr/local/nginx-1.16.1/
4../configure --add-module=/opt/nginx-upsync-module-master 安装第三方模块
5.make && make install 编译并安装
6.改nginx配置

 

upstream backServer{   #在http{}中配置需要被代理的服务器,默认轮询
    upsync 指令指定从哪个consul的什么路径拉取上游服务器(配置信息)
    upsync_timeout 配置从consul拉取上游服务器配置的超时时间
    upsync_interval 配置从consul中拉取上游服务器配置间隔时间
     upsync_type指定注册中心配置服务器
    strong——dependency配置nginx在启动时是否强制依赖配置服务器
    upsync_dump_path 从指定consul拉取上游服务器的配置信息持久化的位置(这个目录要提前创建好)

    upsync 192.168.66.35:8500/v1/kv/upstreams/itmayiedu 
    upsync_timeout=6m 
    upsync_interval=500ms 
    upsync_type=consul strong_dependency=off;
       upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf
  }

给注册中心添加配置:
curl -X PUT http://192.168.66.35:8500/v1/kv/upstreams/itmayiedu/192.168.66.39:8080 把39这台服务配到注册中心35,
key是 /v1/kv/upstreams/itmayiedu/ 
value是  192.168.66.39:8080
或者用注册中心管理平台consul可视化界面添加
 
location ~* /js/.*/\.js   正则
    • =开头表示精确匹配
      如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。
    • ^~ 开头表示uri以某个常规字符串开头,不是正则匹配
    • ~ 开头表示区分大小写的正则匹配;
    • ~* 开头表示不区分大小写的正则匹配
    • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

 

 

 

 四层负载均衡:,基于传输层,也叫做基于TCP协议实现,LVS(软负载)、F5硬件负载,   nginx1.9版本前不支持四层负载均衡

七层负载均衡:基于应用层,也叫做基于HTTP协议实现负载均衡,Web服务实现负载均衡

 

LVS+KeepAlived+Nginx

Nginx+Keeplived搭建双机主从热备实现7*24小时运行

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。linux自带LVS

  1. 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
  2. 很好的可伸缩性(Scalability)
  3. 很好的可靠性(Reliability)
  4. 很好的可管理性(Manageability)

LVS作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,

当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

 

 

  

LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目
前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr.wr..Ic.wLc..blc.lblcr,dh.sh).

 

LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS仍然会把请求转发给故障的rs服务器,这样就
会导致请求的无效性。keepalive软件可以进行健康检查,而且能同时实现LVS的高可用性,解决LVS单点故障的问题,其实keepalive就是为LVS而生的。

 

Nginx与LVS区别什么
Nginx是七层负载均衡主要针对于应用层负载均衡(Http),在1.9之后开始支持
对四层负载均衡支持。
LVS 是四层负载均衡,主要针对传输层负载均衡。
LVS应用场景比Nginx负载均衡应用场景更加广泛,而且LVS支持所有服务负载
均衡业务功能。

Keepalived是在LVS基础之上实现心跳检测、监控服务器实现故障转移,如果服务
器发生宕机的时候,可以尝试自动重试脚本。如果多次重试还是失败状
态,会发送邮件给运维人员。实现高可用。

 

环境配置

两台nginx服务器

nginx主服务器192.168.26.11

nginx主服务器192.168.26.12

LVS虚拟VIP 192.168.26.88

 

·环境搭建,装keeplived,lvs自带
安装keepalived
1.下载keepalived
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gZ*
2.解压安装:
tar.-zxxfkeepalived-1.2.18.tar.gz -C/usr/local/.
3.下载插件openssl
yum install -y..openssl...penssl.dexel(需要安装一个软件包)。
4.开始编译keepalived.
cd keepalived-1.2.18/&&./configureyprefix=/usr/local/keepalived

报错;eepalived.执行./configure --prefix=/usr/local/keepalived时报错: configure; error:Popt libraries is required
出现此错误的原因:
未安装popt的开发包
解决方法:
yum install popt-develu
安装好popt的开发包。重新./configure即可。

5.make一下
make && make install

 

把 keepalived 安装成linux系统服务

因为没有使用keenalived.的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作


首先创建文件夹,将keepalived配置文件进行复制:
mkdir/etc/keepalived
cp/usr/local/keepal.ixed/eta/keepalived/keepalived..conf./ete/keepalived/
然后复制keepalived脚本文件:
cp/usr/local/keepaLixed/etc/rc.d/ init.d/keepalixed/etc/init.d/
cp/usr/local/keepalixed/etc/sysconfig/keepalived/etc/sysconfig/
In -s /usr/local/sbin/keepalived/usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived/sbin/.
可以设置开机启动:chkconfigkeepalived on,到此我们安装完毕!

service keepalived start
service keepalixed stop

启动报错Starting keepalived(via systematl): Job for keepalived.service failed. See 'systemctlstatus

keepalived..serxice’ and 'journalctl-xn' for details.o
解决办法。
[root@edu-proxy-01 sbin]# cd /src/sbin
Lroot@edu-proxy-01 sbin]# rm-f keepalived
Lroot@edu-proxy-01sbin] cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

!Configuration File for keepalived
vrrp_script chk_nginx {

script "/etc/keepalived/nginx_check.sh"#运行脚本,脚本就是起到一个nginx宕机以后,自动开启服务
interval  2     #检测时间间隔
weight  -20   #如果条件成立的话,则权重-20

}
#定义虚拟路由,VI_1为虚拟路由的标示符,自己定义名称
vrrp_instance vI_1{
state MASTER   #来决定主从   BACKUP是从
interface ens33   #绑定虚拟I的网络接口,根据自己的机器填写,通过ip a查网卡
virtual_ router_id 121   #虚拟路由的ID号,两个节点设置必须一样
mcast_src_ip 192.168.26.11  #填写本机ip
priority 100    #节点优先级,主要比从节点优先级高
nopreempt   #优先级高的设置nopreempt解决异常恢复后再次抢占的问题
advert_int 1    #组播信息发送间隔,两个节点设置必须一样,默认1s
authentication {
auth_type PASS
auth_ pass 1111

}
#将track script块加入instance配置块
track_script {
chk_nginx    #执行Nginx监控的服务
}
virtual_ipaddress {
192.168.26.88 #虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。

}

 

主nginx搭建完毕

1.如果要实现一主一备用虚拟VIP只能在一台服务器存放。
2如果要实现多主多备的虚拟VIP可以在多台服务器存放。

克隆一台作从机,改了mcast_src_ip 和state BACKUP代表从机

项目在生产环境上的服务器发生当机的情况?怎么处理?

1.故障转移
2心跳检测
3.负载均衡
4.自动重启

 

keeplived 经常会ping一下nginx,如果心跳检测不到,keeplived 会 自动实现重启脚本

脚本nginx_check.sh

 

这个脚本配置在keeplived的配置文件里,作用是检测nginx是否启动,如果没启动,他就会帮你启动

把这个脚本放到/etc/keepalived/文件夹下,然后授权一下 chmod 777 nginx_check.sh

有了这个脚本,不用手动启动nginx,只要启动keeplived,他就会执行脚本,启动nginx

如果,nginx宕机,也会自动重启。如果重启多次还是失败,就在keeplived里配置发送邮件给运维人员

 

posted @ 2020-08-22 16:30  neona  阅读(303)  评论(0编辑  收藏  举报