一、Nginx

1、简介

1、通常作为反向代理

2、作用:集群(单节点风险,提高并发)

      反向代理(不暴露真实IP),也即http服务器

      虚拟服务器

      静态服务器

3、优势:性能高,占内存小,轻量级服务器,能同时支持5w并发

4、安全架构方案:

  3.1 反向代理(不暴露真实IP)

  3.2 使用HTTPS,防止抓包分析

  3.3 搭建企业黑、白名单系统

  3.4 防模拟请求(csrf),XSS,sql注入,ddos(流量攻击),防盗链

5、反向代理服务器:Nginx、lvs、F5(硬件)、haproxy

6、跨域方案:使用nginx搭建企业级api接口网关

2、Nignx安装

1、简介

1、目录:conf-配置文件目录,html-静态文件目录

2、linux安装nginx

  参考:https://blog.csdn.net/t8116189520/article/details/81909574

3、Nginx反向代理服务器

1、负载均衡策略

  权重、轮询、IP绑定

2、集群产生问题:

  2.1 分布式任务幂等问题(使用分布式任务调度平台)

  2.2 session共享

  2.3 分布式全部ID

3、使用nginx搭建集群

1、概念:

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

  分布式:将一个项目拆分成n个子项目,分布式开发。

2、集群配置:

1、反向代理配置:

  1.1 单个服务反向代理:

    server {
      listen 80;
      server_name www.dy.com;#拦截地址

      location / {#/表示拦截所有请求
        proxy_pass http://127.0.0.1:8080;#代理地址
        index index.html index.htm;
      }。。。

2、负载均衡配置

  2.1 策略:轮询,权重,绑定IP

  2.2 配置---轮询

    与server同级:

      upstream backserver {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
      }

    location中修改为:

      location / {
        proxy_pass http://backserver;
        index index.html index.htm;
      }

3、宕机容错机制

  3.1 Nginx一主一备或一主多备

  3.2 集群宕机,自动轮询下一台服务器

    配置:location中

      proxy_connect_timeout 1;
      proxy_send_timeout 1;
      proxy_read_timeout 1;

4、Nginx高可用

1、keepalived

1、安装keepalived

  yum install -y openssl openssl-devel(需要安装一个软件包)

  cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

  make && make install

 

  将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:

  首先创建文件夹,将keepalived配置文件进行复制:

  mkdir /etc/keepalived

  cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

  然后复制keepalived脚本文件:

  cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

  cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

  ln -s /usr/local/sbin/keepalived /usr/sbin/

  ln -s /usr/local/keepalived/sbin/keepalived /sbin/

  可以设置开机启动:chkconfig keepalived on

2、配置

! 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 eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写,ip a查看
virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须不同
mcast_src_ip 192.168.110.141 #填写本机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.110.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}
}

#!/bin/bash
A=`ps -C nginx ¨Cno-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

 5、session共享解决方案

1、spring-session + redis(推荐)

2、负载均衡的ip绑定策略

3、使用cookie

4、数据库

5、tomcat配置session共享

6、token重写session

6、高并发解决方案

1、数据库

慢查询定位,执行计划,sql优化,使用索引

主从复制,读写分离

2、缓存机制

使用redis

redis集群(主从复制)

redis读写分离

redis哨兵

3、服务器

反向代理

负载均衡

集群

动静分离

CDN加速(从近访问服务器,多地部署)

4、客户端

较少请求,动静分离

5、项目优化

代码重构

jvm调优,主要垃圾回收机制(老年代,新生代)

posted on 2019-10-13 17:35  dysdhd  阅读(132)  评论(0)    收藏  举报