运维八一 运维八一
首页
运维杂记
编程浅尝
周积跬步
专栏
生活
关于
收藏
  • 分类
  • 标签
  • 归档
Source (opens new window)

运维八一

运维,运维!
首页
运维杂记
编程浅尝
周积跬步
专栏
生活
关于
收藏
  • 分类
  • 标签
  • 归档
Source (opens new window)
  • 操作系统

  • 域名解析

  • 公有云

  • CI&CD

  • 数据库

  • 负载均衡&反向代理

    • keepalived
    • haproxy问题
      • 1.长连接
      • 2.缩短time_wait时间
      • 3.设置time_wait快速回收和重用
      • 4.修改本地端口可用范围
      • 5.设置可打开文件描述符
    • Nginx+keepalived
    • haproxy+keepalived
    • lvs三种模式和调度算法
    • lvs+keepalived
    • lvs+heartbeat
    • nginx缓存加速应用
    • 智能DNS+squid反向代理
  • 存储系统

  • 容器&容器编排

  • 批量管理

  • 邮件系统

  • 监控系统

  • Web服务

  • 虚拟化

  • 防火墙

  • 压测

  • 文件同步

  • 私有云

  • 日志系统

  • 代码仓库&版本管理

  • 安全审计

  • 远程拨号

  • 大数据

  • 统一认证

  • 消息队列

  • Apollo

  • 运维杂记
  • 负载均衡&反向代理
lyndon
2022-06-11
目录

haproxy问题

# TCP计数器ListenOverflows大量增加

查看方法:

cat /proc/net/netstat | awk '/TcpExt/ { print $21,$22 }'
1

原因:

系统调用listen函数(int listen(int sockfd, int backlog);)的队列长度由min(backlog ,内核参数 net.core.somaxconn ) 决定,对应socket的listen 队列已满的情况下,在新增一个连接时的情况,ListenOverflows计数器加 1 。

解决方案:

调整系统参数 net.core.somaxconn = 65535 #默认为128

cat 65535  > /proc/sys/net/core/somaxconn
1

# global常用的优化配置:

mode    http        //设置默认工作模式为http,也可以在backend段中单独设置
log     global
option  httplog     //设置记录的日志格式更为详细,可以在frontend段中单独设置
option  http-server-close   //主动断开长连接,当开启长连接时,应该开启此项。haproxy在向后端服务器发送请求时,会在header中添加“Connection:close”,但是有些服务器看到此头部时,直接会拒绝访问
option  http-pretend-keepalive  //假装自己是保持连接的,当开启此选项时,haproxy会去掉头部“Connection:close”,此选项与http-server-close一起使用
option  forwardfor  except 127.0.0.0/8  //向后端转发客户端的真实IP,except表示排除指定的网段
retries 3
timeout http-request    10s     //当客户端发送的请求,在指定时间内发送不完整时,断开连接
timeout queue           1m
timeout connect         10s     //建立连接的超时时长
timeout client          1m      //当客户超过多久不活动时的超时时长
timeout server          1m
timeout http-keep-alive 10s     //长连接超时时长
timeout check           10s     //健康检查超时时长
maxconn                 655350  //最大连接数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# linux系统的优化:

# 1.长连接

如果不设置长连接,会造成大量的timewait

# 2.缩短time_wait时间

#cat /proc/sys/net/ipv4/tcp_fin_timeout //查看timewait的默认保持时长,默认为60s

永久生效在/etc/sysctl.conf中设置

设置方法:net.ipv4.tcp_fin_timeout = 10

# 3.设置time_wait快速回收和重用

#cat /proc/sys/net/ipv4/tcp_tw_reuse

#cat /proc/sys/net/ipv4/tcp_tw_recycle

默认为0,设置为1

设置方法:

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
1
2

# 4.修改本地端口可用范围

#cat /proc/sys/net/ipv4/ip_local_port_range

默认为32768到61000

建议把32768的值设的小一点,以便可以使用更多的端口,如设为1024

设置方法:

net.ipv4.ip_local_port_range = 4000 65535
1

sysctl -p使设置生效

# 5.设置可打开文件描述符

用ulimit -n进行查看,默认为1024

echo '*  -  nofile  65535' >> /etc/security/limits.conf
1
上次更新: 2022/06/12, 15:48:09
keepalived
Nginx+keepalived

← keepalived Nginx+keepalived→

最近更新
01
ctr和crictl显示镜像不一致
03-13
02
alpine镜像集成常用数据库客户端
03-13
03
create-cluster
02-26
更多文章>
Theme by Vdoing | Copyright © 2015-2024 op81.com
苏ICP备18041258号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式