大数据集群基础环境-Linux操作系统初始化配置及生产环境调优参数
Linux操作系统初始化配置及生产环境调优参数
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.最小化安装操作系统必备命令行工具(别安装epel源哟,因为它会和openstack的源冲突)
[root@yinzhengjie ~]# yum -y install vim net-tools bridge-utils firewalld bc iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel systemd-devel bash-completion traceroute psmisc hdparm
二.禁用"NetworkManager"服务
[root@yinzhengjie ~]# systemctl status NetworkManager ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-01-20 05:13:46 CST; 41min ago Docs: man:NetworkManager(8) Main PID: 8793 (NetworkManager) CGroup: /system.slice/NetworkManager.service ├─ 8793 /usr/sbin/NetworkManager --no-daemon ├─10914 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth1.pid -lf /var/lib/NetworkManager/dhclient-9f4acf5d-7830-4a28-9e9e-55302e34e879-eth1.lease -cf /var/lib/NetworkManager/dhclient-eth1.conf eth1 ├─11011 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth3.pid -lf /var/lib/NetworkManager/dhclient-b13d19c0-ceb6-4784-97d1-6d4849b5bbb2-eth3.lease -cf /var/lib/NetworkManager/dhclient-eth3.conf eth3 ├─11579 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-e9b0ddce-25d6-495e-b31e-ab7d9864f82e-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0 └─11606 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth2.pid -lf /var/lib/NetworkManager/dhclient-75d04d31-1f9f-4015-a93c-21fbe184326d-eth2.lease -cf /var/lib/NetworkManager/dhclient-eth2.conf eth2 Jan 20 05:46:27 yinzhengjie.org.cn dhclient[11606]: bound to 172.200.1.101 -- renewal in 853 seconds. Jan 20 05:47:44 yinzhengjie.org.cn dhclient[10914]: DHCPREQUEST on eth1 to 192.168.190.254 port 67 (xid=0x127c8c39) Jan 20 05:47:44 yinzhengjie.org.cn dhclient[10914]: DHCPACK from 192.168.190.254 (xid=0x127c8c39) Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): address 192.168.190.129 Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): plen 24 (255.255.255.0) Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): lease time 1800 Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): nameserver '192.168.190.1' Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6803] dhcp4 (eth1): domain name 'localdomain' Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6803] dhcp4 (eth1): state changed bound -> bound Jan 20 05:47:44 yinzhengjie.org.cn dhclient[10914]: bound to 192.168.190.129 -- renewal in 780 seconds. [root@yinzhengjie ~]# [root@yinzhengjie ~]#
[root@yinzhengjie ~]# systemctl stop NetworkManager [root@yinzhengjie ~]# [root@yinzhengjie ~]# systemctl disable NetworkManager Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service. Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service. [root@yinzhengjie ~]#
[root@yinzhengjie ~]# systemctl status NetworkManager ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled) Active: inactive (dead) since Mon 2020-01-20 05:55:39 CST; 49s ago Docs: man:NetworkManager(8) Main PID: 8793 (code=exited, status=0/SUCCESS) CGroup: /system.slice/NetworkManager.service ├─10914 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth1.pid -lf /var/lib/NetworkManager/dhclient-9f4acf5d-7830-4a28-9e9e-55302e34e879-eth1.lease -cf /var/lib/NetworkManager/dhclient-eth1.conf eth1 ├─11011 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth3.pid -lf /var/lib/NetworkManager/dhclient-b13d19c0-ceb6-4784-97d1-6d4849b5bbb2-eth3.lease -cf /var/lib/NetworkManager/dhclient-eth3.conf eth3 ├─11579 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-e9b0ddce-25d6-495e-b31e-ab7d9864f82e-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0 └─11606 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth2.pid -lf /var/lib/NetworkManager/dhclient-75d04d31-1f9f-4015-a93c-21fbe184326d-eth2.lease -cf /var/lib/NetworkManager/dhclient-eth2.conf eth2 Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): plen 24 (255.255.255.0) Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): lease time 1800 Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6802] dhcp4 (eth1): nameserver '192.168.190.1' Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6803] dhcp4 (eth1): domain name 'localdomain' Jan 20 05:47:44 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470464.6803] dhcp4 (eth1): state changed bound -> bound Jan 20 05:47:44 yinzhengjie.org.cn dhclient[10914]: bound to 192.168.190.129 -- renewal in 780 seconds. Jan 20 05:55:39 yinzhengjie.org.cn systemd[1]: Stopping Network Manager... Jan 20 05:55:39 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470939.4225] caught SIGTERM, shutting down normally. Jan 20 05:55:39 yinzhengjie.org.cn NetworkManager[8793]: <info> [1579470939.4260] exiting (success) Jan 20 05:55:39 yinzhengjie.org.cn systemd[1]: Stopped Network Manager. [root@yinzhengjie ~]#
三.禁用"firewalld"服务
[root@yinzhengjie ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Mon 2020-01-20 15:50:11 CST; 1h 14min ago Docs: man:firewalld(1) Main PID: 4637 (firewalld) CGroup: /system.slice/firewalld.service └─4637 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid Jan 20 15:50:10 yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Jan 20 15:50:11 yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. [root@yinzhengjie ~]#
[root@yinzhengjie ~]# iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 690 48118 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 76 9940 INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 76 9940 INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 76 9940 INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 65 9320 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_direct all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_IN_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_IN_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_OUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_OUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 520 packets, 56146 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 667 98333 OUTPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD_IN_ZONES (1 references) pkts bytes target prot opt in out source destination 0 0 FWDI_public all -- bond1 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- bond0 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- eth3 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- eth2 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- eth1 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- eth0 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- + * 0.0.0.0/0 0.0.0.0/0 [goto] Chain FORWARD_IN_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain FORWARD_OUT_ZONES (1 references) pkts bytes target prot opt in out source destination 0 0 FWDO_public all -- * bond1 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * bond0 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * eth3 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * eth2 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * eth1 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * eth0 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * + 0.0.0.0/0 0.0.0.0/0 [goto] Chain FORWARD_OUT_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain FORWARD_direct (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public (7 references) pkts bytes target prot opt in out source destination 0 0 FWDI_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDI_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDI_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain FWDI_public_allow (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public_deny (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public_log (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public (7 references) pkts bytes target prot opt in out source destination 0 0 FWDO_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDO_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDO_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FWDO_public_allow (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public_deny (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public_log (1 references) pkts bytes target prot opt in out source destination Chain INPUT_ZONES (1 references) pkts bytes target prot opt in out source destination 0 0 IN_public all -- bond1 * 0.0.0.0/0 0.0.0.0/0 [goto] 39 2864 IN_public all -- bond0 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 IN_public all -- eth3 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 IN_public all -- eth2 * 0.0.0.0/0 0.0.0.0/0 [goto] 10 3280 IN_public all -- eth1 * 0.0.0.0/0 0.0.0.0/0 [goto] 27 3796 IN_public all -- eth0 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 IN_public all -- + * 0.0.0.0/0 0.0.0.0/0 [goto] Chain INPUT_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain INPUT_direct (1 references) pkts bytes target prot opt in out source destination Chain IN_public (7 references) pkts bytes target prot opt in out source destination 76 9940 IN_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 76 9940 IN_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 76 9940 IN_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 9 516 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain IN_public_allow (1 references) pkts bytes target prot opt in out source destination 2 104 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW,UNTRACKED Chain IN_public_deny (1 references) pkts bytes target prot opt in out source destination Chain IN_public_log (1 references) pkts bytes target prot opt in out source destination Chain OUTPUT_direct (1 references) pkts bytes target prot opt in out source destination [root@yinzhengjie ~]#
[root@yinzhengjie ~]# systemctl stop firewalld #临时关闭防火墙 [root@yinzhengjie ~]# [root@yinzhengjie ~]# systemctl disable firewalld #开机禁用防火墙 Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@yinzhengjie ~]# [root@yinzhengjie ~]#
[root@yinzhengjie ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Jan 20 15:50:10 yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Jan 20 15:50:11 yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. Jan 20 17:05:04 yinzhengjie.org.cn systemd[1]: Stopping firewalld - dynamic firewall daemon... Jan 20 17:05:05 yinzhengjie.org.cn systemd[1]: Stopped firewalld - dynamic firewall daemon. [root@yinzhengjie ~]#
[root@yinzhengjie ~]# iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination [root@yinzhengjie ~]# [root@yinzhengjie ~]#
四.禁用"selinux"服务
[root@yinzhengjie ~]# getenforce Enforcing [root@yinzhengjie ~]# [root@yinzhengjie ~]# setenforce 0 #临时禁用selinux [root@yinzhengjie ~]# [root@yinzhengjie ~]# getenforce Permissive [root@yinzhengjie ~]# [root@yinzhengjie ~]# grep ^SELINUX= /etc/selinux/config SELINUX=enforcing [root@yinzhengjie ~]# [root@yinzhengjie ~]# sed -r -i 's/(SELINUX=)enforcing/\1disabled/' /etc/selinux/config #开机禁用selinux [root@yinzhengjie ~]# [root@yinzhengjie ~]# grep ^SELINUX= /etc/selinux/config SELINUX=disabled [root@yinzhengjie ~]# [root@yinzhengjie ~]#
五.修改主机名及映射关系
1>.修改主机名
[root@yinzhengjie ~]# hostname yinzhengjie.org.cn [root@yinzhengjie ~]# [root@yinzhengjie ~]# cat /etc/hostname yinzhengjie.org.cn [root@yinzhengjie ~]# [root@yinzhengjie ~]#
2>.显示优化(针对命令行终端显示信息稍作修改,编辑/etc/bashrc)
1.设置ps1变量的显示 PS1(是数字1而不是字母l),每个版本bash的PS1变量内的特殊符号可能有些小的差异,你可以先man bash 一下。下面是FC4环境下默认的特殊符号所代表的意义: \d :代表日期,格式为weekday month date,例如:"Mon Aug 1" \H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux \h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 \t :显示时间为24小时格式,如:HH:MM:SS \T :显示时间为12小时格式 \A :显示时间为24小时格式:HH:MM \u :当前用户的账号名称 \v :BASH的版本信息 \w :完整的工作目录名称。家目录会以 ~代替 \W :利用basename取得工作目录名称,所以只会列出最后一个目录 \# :下达的第几个命令 \$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$ 默认的PS1内容为: PS1='[\u@\h \W]\$ ' ,所以默认的提示符就是: [root@linux ~]#。
设置ps1变量的颜色 我们能够通过配置PS1变量使提示符成为彩色。在PS1中配置字符序列颜色的格式为: \[\e[F;Bm\] 基本上是夹在 "\e["(转义开方括号)和 "m" 之间数字值。假如指定一个以上的数字代码,则用分号将他们分开。 其中 F 为字体颜色,编号30~37; B 为背景色,编号40~47。 可通过 \e[0m 关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字,请看下面的颜色表和代码表。 颜色表 前景 背景 颜色 --------------------------------------- 黑色 红色 绿色 黄色 蓝色 紫色 青色 白色

3>.添加主机名映射关系(如果有自建的DNS可忽略该步骤)
[root@yinzhengjie ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #HDP Cluster 172.200.1.101 hdp101.yinzhengjie.org.cn 172.200.1.102 hdp102.yinzhengjie.org.cn 172.200.1.103 hdp103.yinzhengjie.org.cn 172.200.1.104 hdp104.yinzhengjie.org.cn 172.200.1.105 hdp105.yinzhengjie.org.cn #CDH Cluster 172.200.2.101 cdh101.yinzhengjie.org.cn 172.200.2.102 cdh102.yinzhengjie.org.cn 172.200.2.103 cdh103.yinzhengjie.org.cn 172.200.2.104 cdh104.yinzhengjie.org.cn 172.200.2.105 cdh105.yinzhengjie.org.cn #Docker 172.200.3.101 docker101.yinzhengjie.org.cn 172.200.3.201 docker102.yinzhengjie.org.cn #K8s Cluster 172.200.4.101 k8s101.yinzhengjie.org.cn 172.200.4.102 k8s102.yinzhengjie.org.cn 172.200.4.103 k8s103.yinzhengjie.org.cn 172.200.4.104 k8s104.yinzhengjie.org.cn 172.200.4.105 k8s105.yinzhengjie.org.cn 172.200.4.106 k8s106.yinzhengjie.org.cn 172.200.4.107 k8s107.yinzhengjie.org.cn 172.200.4.108 k8s108.yinzhengjie.org.cn #Zookeeper Cluster 172.200.5.101 zk101.yinzhengjie.org.cn 172.200.5.102 zk102.yinzhengjie.org.cn 172.200.5.103 zk103.yinzhengjie.org.cn #Kafka Cluster 172.200.6.101 kafka101.yinzhengjie.org.cn 172.200.6.102 kafka102.yinzhengjie.org.cn 172.200.6.103 kafka103.yinzhengjie.org.cn 172.200.6.104 kafka104.yinzhengjie.org.cn 172.200.6.105 kafka105.yinzhengjie.org.cn [root@yinzhengjie ~]#

六.SSH服务优化
1>.关闭DNS PTR反向查询(sshd服务优化)
UseDNS 选项打开状态下,当客户端试图登录SSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施,但一般我们的是动态IP不会有PTR记录,打开这个选项不过是在白白浪费时间而已,不如将其关闭。 具体操作如下: [root@yinzhengjie ~]# grep UseDNS /etc/ssh/sshd_config #UseDNS yes [root@yinzhengjie ~]# [root@yinzhengjie ~]# sed -r -i 's@#(UseDNS )yes@\1no@g' /etc/ssh/sshd_config [root@yinzhengjie ~]# [root@yinzhengjie ~]# grep UseDNS /etc/ssh/sshd_config UseDNS no [root@yinzhengjie ~]#
2>.关闭GSSAPI身份验证(ssh服务优化)
GSSAPIAuthentication 当这个参数开启( GSSAPIAuthentication yes )的时候,通过SSH登陆服务器时候会有些会很慢!这是由于服务器端启用了GSSAPI。登陆的时候客户端需要对服务器端的IP地址进行反解析,如果服务器的IP地址没有配置PTR记录,那么就容易在这里卡住了。 具体操作如下: [root@yinzhengjie ~]# grep GSSAPIAuthentication /etc/ssh/sshd_config GSSAPIAuthentication yes [root@yinzhengjie ~]# [root@yinzhengjie ~]# sed -ri 's#^(GSSAPIAuthentication )yes#\1no#g' /etc/ssh/sshd_config [root@yinzhengjie ~]# [root@yinzhengjie ~]# grep GSSAPIAuthentication /etc/ssh/sshd_config GSSAPIAuthentication no [root@yinzhengjie ~]# [root@yinzhengjie ~]#
七.关闭透明大页
一.透明大页(Transparent Huge Pages,简称THP) 在Linux6.x之后的平台,在安装Oracle数据库的时候都建议关闭透明大页。Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。 1>.标准大页(Huge Pages) 是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。 2>.透明大页(Transparent Huge Pages)缩写为THP, 这个是RHEL 6开始引入的一个功能。 3>.HP和THP的区别 这两者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。 ORACLE官方不建议在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明大页(THP),因为透明大页存在一些问题: 3.1>.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启和性能问题; 3.2>.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题; 3.3>.THP是一个使用Huge Pages自动化的抽象层。它会引起cpu占用率增大,需要将其关闭。 二.关闭透明大页 Linux7 默认情况下 是开启透明大页功能的。默认情况下,状态为always,需要调整为never。 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# uname -r 3.10.0-957.el7.x86_64 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /etc/default/grub | grep GRUB_CMDLINE_LINUX #在原有的配置上添加:transparent_hugepage=never GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap rhgb quiet transparent_hugepage=never" [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-abf2be07fc8c594fb87ff254b58fc5d6 Found initrd image: /boot/initramfs-0-rescue-abf2be07fc8c594fb87ff254b58fc5d6.img done [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# reboot #重启操作系统后,配置就会生效! [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /sys/kernel/mm/transparent_hugepage/enabled #重启后,查看陪你已经被关闭! always madvise [never] [root@node101.yinzhengjie.org.cn ~]#
据Cloudera和Hortonworks的专家介绍,THP压缩会降低Hadoop的性能。所以,禁用脆皮整理是一个很好的做法。具体操作如下: [root@node100.yinzhengjie.org.cn ~]# vi /etc/rc.d/rc.local [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# tail -8 /etc/rc.d/rc.local #ADD BY YINZHENGJIE if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# ll /etc/rc.d/rc.local -rw-r--r--. 1 root root 752 Jun 8 21:47 /etc/rc.d/rc.local [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# chmod +x /etc/rc.d/rc.local [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# ll /etc/rc.d/rc.local -rwxr-xr-x. 1 root root 752 Jun 8 21:47 /etc/rc.d/rc.local [root@node100.yinzhengjie.org.cn ~]#
温馨提示:
如果没有配置此步骤的话,我们在安装CDH服务或者HDP)也能成功安装,可能会出现如下图所示的提示信息。

八.禁用swap分区
理想情况下,服务器都不应该swap,尤其是DataNodes,因此我再安装操作系统的时候就给大家演示了分配分区时就有意不创建"swap"分区,因此咱们查看内存时,会发现系统压根就没有启用Swap分区,咱们就可以直接跳过此步骤,如下所示。 [root@yinzhengjie ~]# free -h total used free shared buff/cache available Mem: 3.8G 123M 3.5G 11M 180M 3.5G Swap: 0B 0B 0B [root@yinzhengjie ~]# 如果你安装系统时的确分配了swap分区,默认是会启动swap分区的,因此你还的继续往下查看禁用swap分区的方法。可以使用一下命令检查服务器上的swap状态。 [root@node100.yinzhengjie.org.cn ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1572860 0 -2 [root@node100.yinzhengjie.org.cn ~]# 可以使用以下命令在这些服务器上完全禁用该功能。 [root@node100.yinzhengjie.org.cn ~]# free -h total used free shared buff/cache available Mem: 3.7G 133M 3.4G 11M 174M 3.3G Swap: 1.5G 0B 1.5G [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# swapoff -a [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# swapon -s [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# free -h total used free shared buff/cache available Mem: 3.7G 132M 3.4G 11M 173M 3.3G Swap: 0B 0B 0B [root@node100.yinzhengjie.org.cn ~]# [root@node100.yinzhengjie.org.cn ~]# 默认情况下,大多数Linux操作系统的swappiness被设置为60.如果swappiness设置为0,除非内存不足,Linux将避免使用磁盘,而设置100表示操作系统立即将程序切换到磁盘。我们知道,这是为60意味着从内存使用量达到操作系统分配的内存的一半左右的时间开始,操作系统会相当频繁地使用磁盘上的交换文件。例如,如果将swappiness调低到10,则只有当RAM占用率达到90%左右时,操作系统才会使用磁盘上的交换文件。 [root@node100.yinzhengjie.org.cn ~]# cat /proc/sys/vm/swappiness
60 [root@node100.yinzhengjie.org.cn ~]# Linux管理员可以将以下设置添加到"/etc/sysctl.conf"文件中来更改系统的swappiness值: [root@node100.yinzhengjie.org.cn ~]# tail -1 /etc/sysctl.conf vm.swappiness = 1 [root@node100.yinzhengjie.org.cn ~]# 管理员必须重新启动服务器或者执行"sysctl -p"指定才能使新的swappiness设置生效。对于将swappiness值设置多低,没有特别明确的强制规定。Cloudera专家建议将其设置为1。如果你的服务器是256G的内存的且你确定你的程序永远不必发生OOM,可以将改值设置为0. [root@node100.yinzhengjie.org.cn ~]# sysctl -q vm.swappiness vm.swappiness = 1 [root@node100.yinzhengjie.org.cn ~]#
综上所述,虽说Cloudera推荐咱们将vm.swappiness的值设置为1,那是在物理机内存严重不足(即物理存储仅剩下1%,实际上该参数配置压根就不好使!我生产环境配置过,因此最好的规避使用swap分区的空间就是禁用物理机的交换分区。如果你云主机提供商就更应该禁用swap分区了,因为会影响客户的体验哟~)时才会使用交换分区,而我在生产环境中使用了官方的建议近一年半的时间观察,即使是CentOS 7.6发行版本将该参数"vm.swappiness"的值设置为1也不并不会真实在物理机剩余仅用1%的情况,总而言之,"vm.swappiness"的资源限制不是很精准!因此建议大家直接禁用swap分区就完事了,内存不足就直接加内存,或者通过YARN来管理任务调度即可。
九.挂载磁盘参数优化
确保在挂载所有磁盘时使用noatime时间以及挂载所有目录时使用nodir时间。这样,可以避免在对Linux文件系统中的文件或目录进行读取操作时的不必要写入操作,从而提高集群性能。 [root@yinzhengjie.org.cn ~]# egrep -v "^#|^$" /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=1865a93f-6113-4097-89dc-8c4ea5fdf68c /boot xfs defaults 0 0 /dev/mapper/centos-yinzhengjie /yinzhengjie xfs defaults,noatime,nodiratime 0 0 [root@yinzhengjie.org.cn ~]#
十.安装JDK环境
1>.下载JDK软件包
下载步骤相对简单,可参考: https://www.cnblogs.com/yinzhengjie2020/p/12206579.html
2>.扩充密钥长度(下载JCE文件)
Kerberos 需要使用256为的AES加密算法,而JRE默认中的密钥长度比较短,并且不足以支撑。所以我们需要升级集群中所有服务器节点JRE的安全策略,使其能够解除密钥长度的限制。修改的方式是下载并替换JRE中的Unlimited JCEPolicy文件。 以JDK1.8为例,JCE8的下载地址为:https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html。

3>.将下载的jdk版本进行解压安装并配置环境变量
[root@yinzhengjie.org.cn ~]# ll total 187336 -rw-r--r-- 1 root root 8409 Dec 12 2018 jce_policy-8.zip -rw-r--r-- 1 root root 191817140 Mar 25 2019 jdk-8u201-linux-x64.tar.gz [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 500G 1.5G 499G 1% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 12M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda2 1014M 133M 882M 14% /boot /dev/mapper/centos-yinzhengjie 1.6T 33M 1.6T 1% /yinzhengjie tmpfs 394M 0 394M 0% /run/user/0 [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll /yinzhengjie/ total 0 [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# mkdir /yinzhengjie/softwares [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# tar zxf jdk-8u201-linux-x64.tar.gz -C /yinzhengjie/softwares/ [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/jdk1.8.0_201/ total 25980 drwxr-xr-x 2 10 143 4096 Dec 16 2018 bin -r--r--r-- 1 10 143 3244 Dec 16 2018 COPYRIGHT drwxr-xr-x 3 10 143 132 Dec 16 2018 include -rw-r--r-- 1 10 143 5207434 Dec 12 2018 javafx-src.zip drwxr-xr-x 5 10 143 185 Dec 16 2018 jre drwxr-xr-x 5 10 143 245 Dec 16 2018 lib -r--r--r-- 1 10 143 40 Dec 16 2018 LICENSE drwxr-xr-x 4 10 143 47 Dec 16 2018 man -r--r--r-- 1 10 143 159 Dec 16 2018 README.html -rw-r--r-- 1 10 143 424 Dec 16 2018 release -rw-r--r-- 1 10 143 21103945 Dec 16 2018 src.zip -rw-r--r-- 1 10 143 108109 Dec 12 2018 THIRDPARTYLICENSEREADME-JAVAFX.txt -r--r--r-- 1 10 143 155002 Dec 16 2018 THIRDPARTYLICENSEREADME.txt [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# vim /etc/profile [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# tail -3 /etc/profile #Add ${JAVA_HOME} by yinzhengjie JAVA_HOME=/yinzhengjie/softwares/jdk1.8.0_201 PATH=$PATH:$JAVA_HOME/bin [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# source /etc/profile [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) [root@yinzhengjie.org.cn ~]#
4>.将下载后的JCE文件拷贝已经安装的jdk1.8目录中($JAVA_HOME/jre/lib/security/)
[root@yinzhengjie.org.cn ~]# ll total 187336 -rw-r--r-- 1 root root 8409 Dec 12 2018 jce_policy-8.zip -rw-r--r-- 1 root root 191817140 Mar 25 2019 jdk-8u201-linux-x64.tar.gz [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# unzip jce_policy-8.zip Archive: jce_policy-8.zip creating: UnlimitedJCEPolicyJDK8/ inflating: UnlimitedJCEPolicyJDK8/local_policy.jar inflating: UnlimitedJCEPolicyJDK8/README.txt inflating: UnlimitedJCEPolicyJDK8/US_export_policy.jar [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll total 187336 -rw-r--r-- 1 root root 8409 Dec 12 2018 jce_policy-8.zip -rw-r--r-- 1 root root 191817140 Mar 25 2019 jdk-8u201-linux-x64.tar.gz drwxrwxr-x 2 root root 76 Dec 21 2013 UnlimitedJCEPolicyJDK8 [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll UnlimitedJCEPolicyJDK8/ total 16 -rw-rw-r-- 1 root root 3035 Dec 21 2013 local_policy.jar -rw-r--r-- 1 root root 7323 Dec 21 2013 README.txt -rw-rw-r-- 1 root root 3023 Dec 21 2013 US_export_policy.jar [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/jdk1.8.0_201/jre/lib/security/ total 164 -rw-r--r-- 1 10 143 4054 Dec 16 2018 blacklist -rw-r--r-- 1 10 143 1273 Dec 16 2018 blacklisted.certs -rw-r--r-- 1 10 143 104430 Dec 16 2018 cacerts -rw-r--r-- 1 10 143 2466 Dec 16 2018 java.policy -rw-r--r-- 1 10 143 41528 Dec 16 2018 java.security -rw-r--r-- 1 10 143 98 Dec 16 2018 javaws.policy drwxr-xr-x 4 10 143 38 Dec 16 2018 policy -rw-r--r-- 1 10 143 0 Dec 16 2018 trusted.libraries [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# mv UnlimitedJCEPolicyJDK8/*.jar /yinzhengjie/softwares/jdk1.8.0_201/jre/lib/security/ [root@yinzhengjie.org.cn ~]# [root@yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/jdk1.8.0_201/jre/lib/security/ total 172 -rw-r--r-- 1 10 143 4054 Dec 16 2018 blacklist -rw-r--r-- 1 10 143 1273 Dec 16 2018 blacklisted.certs -rw-r--r-- 1 10 143 104430 Dec 16 2018 cacerts -rw-r--r-- 1 10 143 2466 Dec 16 2018 java.policy -rw-r--r-- 1 10 143 41528 Dec 16 2018 java.security -rw-r--r-- 1 10 143 98 Dec 16 2018 javaws.policy -rw-rw-r-- 1 root root 3035 Dec 21 2013 local_policy.jar drwxr-xr-x 4 10 143 38 Dec 16 2018 policy -rw-r--r-- 1 10 143 0 Dec 16 2018 trusted.libraries -rw-rw-r-- 1 root root 3023 Dec 21 2013 US_export_policy.jar [root@yinzhengjie.org.cn ~]#

5>.创建JDK的软连接
如果没有安装JDK可能会报错如下,如下图所示(学习环境为了省事,建议在一台宿主机上安装好大数据所需要的基础环境在进行克隆比较方便)。

安装完JDK后我们需要做一个软连接,该链接为CM默认查找JDK环境的路径,如果你尽管安装JDK但没有做软连接可能会遇到如下图所示的坑,这个问题是因为网友在我博客中留言我中看到的,我找到了解决方案,原链接为:https://www.cnblogs.com/yinzhengjie/p/9638360.html#4252486。

问题分析 Inspector did not run successfully.一般是由于没有配置JDK环境。 这种情况应该是你安装了Oracle版本的JDK且自定义了JDK HOME路径,尽管你将自己的JDK加入到“/etc/profile”中,CM Agent并不识别,它识别JDK的路径是通过读取自己的配置文件,即:“/opt/cloudera-manager/cm-5.15.1/lib64/cmf/service/common/cloudera-config.sh”。 解决方案有两种: (1)一种是将jdk环境加入“local JAVA8_HOME_CANDIDATES”属性中; (2)另一种就是配置软连接,将“/usr/java/jdk1.8”指向你服务的JDK PATH即可。 我推荐大家使用第二种方法,做一个软连接即可也不需要去修改CM的配置文件,具体操作如下: [root@node101.yinzhengjie.org.cn ~]# mkdir /usr/java && cd /usr/java [root@node101.yinzhengjie.org.cn /usr/java]# [root@node101.yinzhengjie.org.cn /usr/java]# ln -s /yinzhengjie/softwares/jdk1.8.0_201/ /usr/java/jdk1.8 [root@node101.yinzhengjie.org.cn /usr/java]# [root@node101.yinzhengjie.org.cn /usr/java]# ll total 0 lrwxrwxrwx 1 root root 36 Jun 9 18:57 jdk1.8 -> /yinzhengjie/softwares/jdk1.8.0_201/ [root@node101.yinzhengjie.org.cn /usr/java]#
十一.修改Linux内核参数
[root@yinzhengjie ~]# cat /etc/sysctl.conf #减少DDoS攻击,校验数据包的反向路径,如果反向路径不合适,则直接丢弃数据包,避免过多的无效连接消耗系统资源。 #防止IP Spoofing,校验数据包的反向路径,如果客户端伪造的源IP地址对应的反向路径不在路由表中,或者反向路径不是最佳路径,则直接丢弃数据包,不会向伪造IP的客户端回复响应。 #net.ipv4.conf.default.rp_filter = 1 #启动haproxy的时候,允许忽视VIP的存在 #net.ipv4.ip_nonlocal_bind = 1 #使用haproxy代理服务器同时也要打开内核的转发功能 #net.ipv4.ip_forward = 1 #控制路由验证 #net.ipv4.conf.default.accept_source_route = 0 #控制内核的系统请求调试功能 #kernel.sysrq = 0 #控制核心转储是否将PID附加到核心文件名,用于调试多线程应用程序。 #kernel.core_uses_pid = 1 #控制TCP同步器的使用,即在服务器资源(并非单指端口资源,拒绝服务有很多种资源不足的情况)不足的情况下,尽量不要拒绝TCP的syn(连接)请求,尽量把syn请求缓存起来,留着过会儿有能力的时候处理这些TCP的连接请求 #net.ipv4.tcp_syncookies = 1 #禁用网桥上的netfilter。 #net.bridge.bridge-nf-call-ip6tables = 0 #net.bridge.bridge-nf-call-iptables = 0 #net.bridge.bridge-nf-call-arptables = 0 #控制消息队列的默认最大大小 kernel.msgmnb = 65536 #以字节为单位控制消息的最大大小 kernel.msgmax = 65536 #以字节为单位控制最大共享段大小 kernel.shmmax = 68719476736 #在页中控制共享内存段的最大数量 kernel.shmall = 4294967296 #设置tcp/ip会话的滑动窗口大小是否可变,参数值为布尔值,为1时表示可变,为0时表示不可变. #tcp/ip通常使用的窗口最大可达到65535字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力 net.ipv4.tcp_window_scaling = 1 #用来查找特定的遗失的数据包,有助于快速恢复状态 net.ipv4.tcp_sack = 1 #当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。 net.core.netdev_max_backlog = 262144 #用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。 net.core.somaxconn = 20480 #该参数指定了每个套接字所允许的最大缓冲区的大小 net.core.optmem_max = 81920 #表示SYN队列长度,默认1024,改成262144,可以容纳更多等待连接的网络连接数。 net.ipv4.tcp_max_syn_backlog = 262144 #在内核放弃建立连接之前发送SYN包的数量 net.ipv4.tcp_syn_retries = 3 # 该变量设置放弃回应一个tcp连接请求前,需要进行多少次重试 net.ipv4.tcp_retries1 = 3 #控制内核向已经建立连接的远程主机重新发送数据的次数,低值可以更早的检测到与远程主机失效的连接,因此服务器可以更快的释放该连接 net.ipv4.tcp_retries2 = 15 # 该参数设置TIME_WAIT重用,可以让处于TIME_WAIT的连接用于新的tcp连接 net.ipv4.tcp_tw_reuse = 1 #该参数设置tcp连接中TIME_WAIT的快速回收 net.ipv4.tcp_tw_recycle = 1 #对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。 net.ipv4.tcp_fin_timeout = 1 #该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除 net.ipv4.tcp_max_tw_buckets = 20000 #最大孤儿套接字(orphan sockets)数,单位是个 net.ipv4.tcp_max_orphans = 3276800 #禁用时间戳 net.ipv4.tcp_timestamps = 0 #tcp_synack_retries 显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。 #tcp_synack_retries 的值必须为正整数,并不能超过 255。因为每一次重新发送封包都会耗费约 30 至 40 秒去等待才决定尝试下一次重新发送或决定放弃。 net.ipv4.tcp_synack_retries = 1 #开启SYN洪水攻击保护 net.ipv4.tcp_syncookies = 1 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间 net.ipv4.tcp_keepalive_time = 300 #TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适) net.ipv4.tcp_keepalive_intvl = 30 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。 net.ipv4.tcp_keepalive_probes = 3 #定义网络连接可用作其源(本地)端口的最小和最大端口的限制,同时适用于TCP和UDP连接。 net.ipv4.ip_local_port_range = 10001 65000 #定义内存分配策略,可选值:0,1,2 # "0"表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 # "1"表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 # "2"表示内核允许分配超过所有物理内存和交换空间总和的内存。 vm.overcommit_memory = 0 #最大并发I/O请求数 fs.aio-max-nr=1048576 #默认的TCP数据发送窗口大小(字节)。8388608/1024/1024=8M net.core.wmem_default = 8388608 #默认的TCP数据接收窗口大小(字节). net.core.rmem_default = 8388608 #接收套接字缓冲区大小的最大值(以字节为单位). net.core.rmem_max = 16777216 #发送套接字缓冲区大小的默认值(以字节为单位). net.core.wmem_max = 16777216 #内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看"getconf PAGESIZE" # 第一个数字表示,当tcp使用的Page少于786432(786432*4096/1024/1024/1024=3)时,kernel不对其进行任何的干预 # 第二个数字表示,当tcp使用了超过1048576(1048576*4096/1024/1024/1024=4)的Pages时,kernel会进入("memory pressure")压力模式 # 第三个数字表示,当 tcp 使用的pages超过1572864时(1572864*4096/1024/1024/1024=6,即相当于6GB内存),就会报:Out of socket memory net.ipv4.tcp_mem = 786432 1048576 1572864 #为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte, # 第一个数字表示,为TCP连接分配的最小内存,即4096/1024=4k # 第二个数字表示,为TCP连接分配的缺省内存,即262144/1024=256k # 第三个数字表示,为TCP连接分配的最大内存,即16777216/1024=16384k/1024=16M net.ipv4.tcp_rmem = 4096 262144 16777216 net.ipv4.tcp_wmem = 4096 262144 16777216 #swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60 #Cloudera公司对于大数据集群推荐该值设置为1,其实在生产环境中我更推荐大家不要设置swap分区,而是将其设置为0,或者在安装操作系统时不指定swap分区,对于内存的使用有咱们程序员和运维人员来控制. vm.swappiness = 1 [root@yinzhengjie ~]# [root@yinzhengjie ~]#
十二.增加文件限制
[root@yinzhengjie ~]# cat /etc/security/limits.conf #Add by yinzhengjie * soft core unlimited * hard core unlimited * soft nproc 1000000 * hard nproc 1000000 * soft nofile 1000000 * hard nofile 1000000 * soft memlock 32000 * hard memlock 32000 * soft msgqueue 8192000 * hard msgqueue 8192000 [root@yinzhengjie ~]# [root@yinzhengjie ~]# cat /etc/security/limits.d/20-nproc.conf #ADD BY YINZHENGJIE * soft nproc 1048576 root soft nproc unlimited [root@yinzhengjie ~]# [root@yinzhengjie ~]#
以上参数输出解读: 第一列表示用户和组 如果是"*",则表示所有用户或组进行限制。 第二列表示软限制还是硬限制, 当进程使用的资源超过软限制时系统日志会有警告产生,当进程使用的资源达到硬限制时,则无法继续使用更多的限制,甚至有的程序会直接抛出异常,比如MySQL程序。 第三列表示限制的资源类型 如nofile表示打开文件描述符的最大数目,memlock表示最大锁定内存地址空间(KB),nporc表示最大数量的进程,as表示地址空间的限制(KB),cpu表示最大CPU时间(分钟)等等,这些在"/etc/security/limits.conf"配置文件有相应的说明。 第四列表示限制的最大值 也就是我们针对某个参数配置的具体数值。比如"* soft nofile 1048576",表示任何用户对于文件句柄数的软限制最大打开文件描述符是1048576。 温馨提示: "/etc/security/limits.conf" 配置文件可限制文件打开数,系统进程等资源,在该文件配置中写的最大用户进程数是受"/etc/security/limits.d/*-nproc.conf"配置上限影响的。 一般系统普通用户进程数满了都是修改/etc/security/limits.d/*-nproc.conf文件。
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。 欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186

浙公网安备 33010602011771号