1. cat <<EOF > /etc/sysctl.d/k8s.conf
    2. net.ipv6.conf.all.disable_ipv6 = 1 #禁用ipv6
    3. net.ipv6.conf.default.disable_ipv6 = 1 #禁用ipv6
    4. net.ipv6.conf.lo.disable_ipv6 = 1 #禁用ipv6
    5. net.ipv4.neigh.default.gc_stale_time = 120 #决定检查过期多久邻居条目
    6. net.ipv4.conf.all.rp_filter = 0 #关闭反向路由校验
    7. net.ipv4.conf.default.rp_filter = 0 #关闭反向路由校验
    8. net.ipv4.conf.default.arp_announce = 2 #始终使用与目标IP地址对应的最佳本地IP地址作为ARP请求的源IP地址
    9. net.ipv4.conf.lo.arp_announce = 2 #始终使用与目标IP地址对应的最佳本地IP地址作为ARP请求的源IP地址
    10. net.ipv4.conf.all.arp_announce = 2 #始终使用与目标IP地址对应的最佳本地IP地址作为ARP请求的源IP地址
    11. net.ipv4.ip_forward = 1 #启用ip转发功能
    12. net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量
    13. net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理
    14. net.ipv4.tcp_max_syn_backlog = 1024 #接受SYN同包的最大客户端数量
    15. net.ipv4.tcp_synack_retries = 2 #活动TCP连接重传次数
    16. net.bridge.bridge-nf-call-ip6tables = 1 #要求iptables对bridge的数据进行处理
    17. net.bridge.bridge-nf-call-iptables = 1 #要求iptables对bridge的数据进行处理
    18. net.bridge.bridge-nf-call-arptables = 1 #要求iptables对bridge的数据进行处理
    19. net.netfilter.nf_conntrack_max = 2310720 #修改最大连接数
    20. fs.inotify.max_user_watches=89100 #同一用户同时可以添加的watch数目
    21. fs.may_detach_mounts = 1 #允许文件卸载
    22. fs.file-max = 52706963 #系统级别的能够打开的文件句柄的数量
    23. fs.nr_open = 52706963 #单个进程可分配的最大文件数
    24. vm.overcommit_memory=1 #表示内核允许分配所有的物理内存,而不管当前的内存状态如何
    25. vm.panic_on_oom=0 #内核将检查是否有足够的可用内存供应用进程使用
    26. vm.swappiness = 0 #关注swap
    27. net.ipv4.tcp_keepalive_time = 600 #修复ipvs模式下长连接timeout问题,小于900即可
    28. net.ipv4.tcp_keepalive_intvl = 30 #探测没有确认时,重新发送探测的频度
    29. net.ipv4.tcp_keepalive_probes = 10 #在认定连接失效之前,发送多少个TCP的keepalive探测包
    30. vm.max_map_count=524288 #定义了一个进程能拥有的最多的内存区域
    31. EOF
    32. sysctl --system

    内核优化

    1. cat >> /etc/sysctl.conf <<EOF
    2. # linux打开文件句柄数
    3. fs.file-max = 65535
    4. # 关闭SysRq
    5. kernel.sysrq = 0
    6. # 生成core文件,后缀是否带pid 1:带; 0 :不带
    7. kernel.core_uses_pid = 1
    8. vm.max_map_count = 1000000
    9. fs.nr_open = 10000000
    10. fs.file-max = 11000000
    11. #网络优化
    12. # 关闭ipv6
    13. net.ipv6.conf.all.disable_ipv6 = 1
    14. net.ipv6.conf.default.disable_ipv6 = 1
    15. # 决定检查过期多久邻居条目
    16. net.ipv4.neigh.default.gc_stale_time=120
    17. #使用arp_announce / arp_ignore解决ARP映射问题
    18. net.ipv4.conf.default.arp_announce = 2
    19. net.ipv4.conf.all.arp_announce=2
    20. net.ipv4.conf.lo.arp_announce=2
    21. # 避免放大攻击
    22. net.ipv4.icmp_echo_ignore_broadcasts = 1
    23. # 开启恶意icmp错误消息保护
    24. net.ipv4.icmp_ignore_bogus_error_responses = 1
    25. # 关闭路由转发
    26. net.ipv4.ip_forward = 0
    27. net.ipv4.conf.all.send_redirects = 0
    28. net.ipv4.conf.default.send_redirects = 0
    29. # 开启反向路径过滤
    30. # 开启rp_filter参数 减少DDoS攻击 防止IP Spoofing
    31. net.ipv4.conf.all.rp_filter = 1
    32. net.ipv4.conf.default.rp_filter = 1
    33. #处理无源路由的包
    34. net.ipv4.conf.all.accept_source_route = 0
    35. net.ipv4.conf.default.accept_source_route = 0
    36. # 开启SYN洪水攻击保护
    37. # 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
    38. net.ipv4.tcp_syncookies = 1
    39. #修改消息队列长度
    40. kernel.msgmnb = 65536
    41. kernel.msgmax = 65536
    42. #timewait的数量,默认180000
    43. # 在 TIME_WAIT 数量等于 tcp_max_tw_buckets 时,不会有新的 TIME_WAIT 产生
    44. net.ipv4.tcp_max_tw_buckets = 6000
    45. net.ipv4.tcp_sack = 1
    46. net.ipv4.tcp_window_scaling = 1
    47. # 与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值
    48. net.ipv4.tcp_rmem = 4096 87380 4194304
    49. # 为自动调优定义每个 socket 使用的内存
    50. # 第一个值是为 socket 的发送缓冲区分配的最少字节数
    51. # 第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值
    52. # 第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)
    53. net.ipv4.tcp_wmem = 4096 16384 4194304
    54. net.core.wmem_default = 8388608
    55. net.core.rmem_default = 8388608
    56. # 定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大
    57. net.core.wmem_max = 873200
    58. # 指定了接收套接字缓冲区大小的最大值(以字节为单位)
    59. net.core.rmem_max = 873200
    60. # 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    61. net.core.netdev_max_backlog = 262144
    62. # 限制仅仅是为了防止简单的DoS 攻击
    63. net.ipv4.tcp_max_orphans = 3276800
    64. # 未收到客户端确认信息的连接请求的最大值
    65. # 表示SYN队列长度,默认1024,改成8192,可以容纳更多等待连接的网络连接数
    66. net.ipv4.tcp_max_syn_backlog = 262144
    67. net.ipv4.tcp_timestamps = 0
    68. #内核放弃建立连接之前发送SYNACK 包的数量
    69. net.ipv4.tcp_synack_retries = 1
    70. #内核放弃建立连接之前发送SYN 包的数量
    71. net.ipv4.tcp_syn_retries = 1
    72. #启用timewait 快速回收
    73. net.ipv4.tcp_tw_recycle = 1
    74. # 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
    75. net.ipv4.tcp_tw_reuse = 1
    76. # 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)
    77. # 第一个值是内存使用的下限
    78. # 第二个值是内存压力模式开始对缓冲区使用应用压力的上限
    79. # 第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)
    80. net.ipv4.tcp_mem = 94500000 915000000 927000000
    81. # 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
    82. net.ipv4.tcp_fin_timeout = 1
    83. #当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
    84. net.ipv4.tcp_keepalive_time = 1800
    85. # 如果对方不予应答,探测包的发送次数
    86. net.ipv4.tcp_keepalive_probes = 3
    87. # keepalive探测包的发送间隔
    88. net.ipv4.tcp_keepalive_intvl = 30
    89. #允许系统打开的端口范围
    90. net.ipv4.ip_local_port_range = 5000 65000
    91. #修改防火墙表大小,默认65536
    92. net.netfilter.nf_conntrack_max=655350
    93. net.netfilter.nf_conntrack_tcp_timeout_established=1200
    94. # 确保无人能修改路由表
    95. net.ipv4.conf.all.accept_redirects = 0
    96. net.ipv4.conf.default.accept_redirects = 0
    97. net.ipv4.conf.all.secure_redirects = 0
    98. net.ipv4.conf.default.secure_redirects = 0
    99. net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
    100. # 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为30分钟。
    101. # Linux kernel参数,表示socket监听的backlog(监听队列)上限
    102. net.core.somaxconn = 10240
    103. # 在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为1
    104. net.ipv4.tcp_retries2 = 5
    105. net.ipv4.conf.lo.arp_ignore = 0
    106. net.ipv4.conf.lo.arp_announce = 0
    107. net.ipv4.conf.all.arp_ignore = 0
    108. EOF
    109. sysctl -p >/dev/null 2>&1
    1. #!/bin/bash
    2. #Eren by 2020-06-30
    3. #修改hosts文件
    4. if [ `id -u` -ne 0 ]; then
    5. echo "Please rerun this script as root"
    6. exit 1
    7. fi
    8. HostName=$HOSTNAME
    9. HostIP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep -v 192.168 |awk '{print $2}'|tr -d "addr:"`
    10. echo "$HostIP" " " "$HostName" >> /etc/hosts
    11. #文件系统配置
    12. pvcreate /dev/vdb
    13. if [ $? -eq 0 ];then echo -e "逻辑卷创建完成" "\033[32m Success\033[0m"; else echo -e "未添加数据盘" "\033[31m Failure\033[0m"; echo ""; exit 2; fi
    14. #创建逻辑卷
    15. vgcreate appvg /dev/vdb
    16. #
    17. lvcreate -n boccfclv -L 5G appvg
    18. mkfs.ext4 /dev/appvg/boccfclv
    19. mkdir -p /home/boccfc
    20. mount /dev/appvg/boccfclv /home/boccfc
    21. #
    22. lvcreate -n applv -L 30G appvg
    23. mkfs.ext4 /dev/appvg/applv
    24. mkdir -p /app
    25. mount /dev/appvg/applv /app
    26. #
    27. lvcreate -n apploglv -l 90%free appvg
    28. mkfs.ext4 /dev/appvg/apploglv
    29. mkdir -p /applog
    30. mount /dev/appvg/apploglv /applog
    31. #
    32. if [ $? -eq 0 ];then echo -e "文件系统创建完成" "\033[32m Success\033[0m"; else echo -e "文件系统创建失败" "\033[31m Failure\033[0m"; sleep 3; exit 3; fi
    33. cat >> /etc/fstab << EOF
    34. /dev/appvg/boccfclv /home/boccfc ext4 defaults 0 0
    35. /dev/appvg/apploglv /applog ext4 defaults 0 0
    36. /dev/appvg/applv /app ext4 defaults 0 0
    37. EOF
    38. #添加普通用户
    39. #
    40. groupadd -g 310 boccfc
    41. useradd -g 310 -u 310 -d /home/boccfc -m -G boccfc boccfc
    42. #cp -av /etc/skel/\.[[:alpha:]]* /home/boccfc
    43. echo "1qaz@WSX" | passwd --stdin boccfc
    44. #chage -d 0 boccfc
    45. chown -R boccfc:boccfc /home/boccfc
    46. #
    47. groupadd -g 320 mauser
    48. useradd -g 320 -u 320 -d /home/mauser -m -G mauser mauser
    49. #cp -av /etc/skel/\.[[:alpha:]]* /home/mauser
    50. echo "1qaz@WSX" | passwd --stdin mauser
    51. chown -R mauser:mauser /home/mauser
    52. #
    53. chown -R boccfc:boccfc /app
    54. chown -R boccfc:boccfc /applog
    55. #
    56. #修改时间服务地址
    57. sed -i "s/^server /#server /g" /etc/chrony.conf
    58. wget -qO- http://10.182.220.85/uat/ntp-gw.sh|bash
    59. wget -P /etc/yum.repos.d http://10.182.220.85/uat/epel.repo
    60. #gateway='route -n| awk 'BEGIN{OFS="\n"} NR!=2 && /Gateway/ || NR==3{print $2}''
    61. #sed -a
    62. timedatectl set-timezone Asia/Shanghai
    63. systemctl restart chronyd.service
    64. hwclock -w
    65. chronyc tracking
    66. chronyc -a makestep
    67. #普通用户禁用定时任务
    68. touch /etc/cron.allow
    69. #openssh修复
    70. sed -i 's|GSSAPIAuthentication yes|#GSSAPIAuthentication yes|' /etc/ssh/ssh_config
    71. #
    72. touch /etc/cron.allow
    73. #
    74. #HostName=$HOSTNAME
    75. #HostIP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep -v 192.168 |awk '{print $2}'|tr -d "addr:"`
    76. #echo "$HostIP" " ""$HostName" >> /etc/hosts
    77. #wget -P /tmp http://10.82.100.84/prod/prod-zabbix-agentd.tar.gz
    78. #cd /tmp && tar xf prod-zabbix-agentd.tar.gz
    79. #cd zabbix-agentd
    80. #sh install.sh
    81. #cat /var/log/zabbix/zabbix_agent2.log
    82. #检查文件系统挂载
    83. mount -a
    84. #
    85. df -Th
    86. ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep -v 192.168 |awk '{print $2}'
    87. cat /etc/hosts