Nginx+Linux负载均衡优化

目录

负载均衡配置:修改Nginx配置文件

Nginx负载均衡策略优化:

                1.轮询(默认方式)

                2.权重:通过weight参数在轮询策略的基础上设置被访问的几率.

                                (各节点机器硬件配置不一致时可使用)

                3.ip_hash(适合有状态的服务):指定负载均衡按照客户端ip进行分配,此策略确

                        保用一个ip客户端的请求始终被发送到同一台服务器节点,以保证

                        session会话不会失效.

                4.least_conn:把请求转发给连接较少的后端服务器节点,此策略适合请求处理

                        时间长短不一造成服务器过载的情况.

                5.第三方策略:

                        1.fair:按照服务器响应时间来分配请求,响应时间短的节点被优先分配

                        2.url_hash:按请求的url的hash结果来转发请求,使请求相同资源的请求

                                被转发到同一个后端服务器,这样能直接命中缓存,提高性能.

                                (需要hash软件包)

linux系统优化:

        修改linux系统配置:vim /etc/sysctl.conf


Nginx优点:

        1.高并发时响应性能好,官方描述支持5W/s的静态文件并发.

        2.反向代理性能非常强(可用于负载均衡).

        3.内存和cpu占用率低(为Apache的10%~20%).

        4.对后端服务器又健康检查功能.

        5.配置简单.

Nginx高并发处理能力原理:                

        Nginx采用epoll模型:epoll模型是异步非阻塞方式.epoll对于句柄事件的选择不是遍历的,以事件响应方式将发生的句柄事件选择出来,而不用遍历整个句柄链表,所以高效,

        Apache采用select模型:select模型选择句柄时,是遍历所有句柄,也就是说句柄有事件响应的时候,select需要遍历所有句柄才能获取到哪些句柄有事件通知,所以低效.

安装启动Nginx:

首先在本地准备我们的挂载目录以及配置文件

 将容器内的配置文件复制到本地

        docker cp nginx:/etc/nginx/conf.d/default.conf /home/mynginx/nginx/conf.d

        docker cp nginx:/etc/nginx/nginx.conf /home/mynginx/nginx/nginx.conf

启动nginx

docker run  -d --name docker_nginx -p 8081:80 \
-v /home/mynginx/nginx/log:/var/log/nginx \    #挂载日志目录
-v /home/mynginx/nginx/conf.d:/etc/nginx/conf.d \    #挂载默认配置文件
-v /home/mynginx/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \    #挂载主配置文件
-v /home/mynginx/nginx/html:/usr/share/nginx/html nginx    #挂载项目目录

负载均衡配置:修改Nginx配置文件

 log_format为nginx设置的日志格式:

        $remote_addr:客户端地址.

        $remote_user:客户端用户名称.

        $time_local:访问的时间和时区.

        $request:访问的URL和http协议.

        $status:http请求状态.

        $body_bytes_sent:发送给客户端的文件大小.

        $http_referer:URL跳转来源.

        $http_user_agent:用户终端浏览器的信息.

        $http_x_forwarded_for:

        $upstream_addr:转发到后台服务器的地址.

        $upstream_status:转发到后台的状态.

        $upstream_response_time:请求过程中,后台的响应时间.

        $request_time:整个请求的响应时间.

5.nginx重启后,配置生效,查看nginx进程个数为4个

Nginx负载均衡策略优化:

        什么是负载均衡?

             是指将请求根据策略分发到多个后台tomcat节点上,减少我们后台服务器的压力.

        负载均衡策略有哪几种?

                1.轮询(默认方式)

 max_fails与fail_timeout结合使用:如果再fail_timeout时间内,对该服务器节点的请求失败次数超过max_fails的次数,nginx会认为该节点宕机,为该节点设置down标记,下一次请求不会再分发给该节点.

                2.权重:通过weight参数在轮询策略的基础上设置被访问的几率.

                                (各节点机器硬件配置不一致时可使用)

                3.ip_hash(适合有状态的服务):指定负载均衡按照客户端ip进行分配,此策略确

                        保用一个ip客户端的请求始终被发送到同一台服务器节点,以保证

                        session会话不会失效.

                4.least_conn:把请求转发给连接较少的后端服务器节点,此策略适合请求处理

                        时间长短不一造成服务器过载的情况.

                5.第三方策略:

                        1.fair:按照服务器响应时间来分配请求,响应时间短的节点被优先分配

                                        (安装第三方插件upstream_fair)

                        2.url_hash:按请求的url的hash结果来转发请求,使请求相同资源的请求

                                被转发到同一个后端服务器,这样能直接命中缓存,提高性能.

                                (需要hash软件包)

linux系统优化:

        修改linux系统配置:vim /etc/sysctl.conf

# 当出现syn等待队列溢出时,启用cookies来处理,可防范少量syn共计
net.ipv4.tcp_syncookies = 1
#开启重用,允许将time_wait状态的sockets重新用于新的tcp连接
net.ipv4.tcp_tw_reuse = 1
#开启tcp连接中time_wait 态sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 1
#快速回收的时限
net.ipv4.tcp_fin_timeout = 10
#time_wait态sockets连接数量上限
net.ipv4.tc_max_tw_buckets = 1048576
#允许系统打开的端口范围
net.ipv4.ip_local_port_range = 1024 65000
#每个网络接口接收数据包的速率比内核处理这些数据包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_blacklog = 262144
#系统中最多有多少tcp套接字不被关联到任何一个用户文件句柄上
net.ipv4.tcp_max_orphans = 262144
#记录的那些尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
#为了打开对端的连接,内核需要发送一个syn报文,并附带也回应前一个syn的ack
net.ipv4.tcp_synack_retries = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chuntian_tester

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

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

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

打赏作者

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

抵扣说明:

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

余额充值