引言

Red Hat Enterprise Linux (RHEL) 作为企业级操作系统的首选,为关键业务应用提供了稳定、安全和高性能的运行环境。正确配置和优化RHEL实例对于确保系统性能、可靠性和安全性至关重要。本文将详细介绍企业级RHEL实例配置的最佳实践,帮助系统管理员和运维工程师充分发挥RHEL的潜力,提升系统性能与可靠性。

1. RHEL系统基础配置与优化

1.1 系统安装与初始化配置

在安装RHEL时,合理规划分区结构是系统稳定运行的基础。推荐的分区方案如下:

# 典型的企业级RHEL分区方案 /boot 500MB # 启动分区 swap 内存大小×2 # 交换分区,如果内存大于16GB,则分配16GB即可 / 20GB # 根分区 /usr 15GB # 应用程序分区 /var 20GB # 可变数据分区 /home 剩余空间 # 用户数据分区 /opt 10GB # 可选软件包分区 /tmp 5GB # 临时文件分区 

安装完成后,执行以下基础配置:

# 更新系统到最新版本 yum update -y # 设置主机名 hostnamectl set-hostname server.example.com # 配置时区 timedatectl set-timezone Asia/Shanghai # 配置网络 nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 nmcli con mod eth0 ipv4.gateway 192.168.1.1 nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4" nmcli con mod eth0 connection.autoconnect yes nmcli con up eth0 # 禁用SELinux(仅用于测试环境,生产环境建议启用) sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 # 停止并禁用防火墙(仅用于测试环境,生产环境建议配置适当规则) systemctl stop firewalld systemctl disable firewalld 

1.2 内核参数优化

通过调整内核参数,可以显著提升系统性能。编辑/etc/sysctl.conf文件:

# 增加文件描述符限制 fs.file-max = 65535 # 优化网络参数 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlog = 65536 # 优化虚拟内存管理 vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2 # 避免ARP表溢出 net.ipv4.neigh.default.gc_thresh1 = 1024 net.ipv4.neigh.default.gc_thresh2 = 2048 net.ipv4.neigh.default.gc_thresh3 = 4096 

应用配置:

sysctl -p 

1.3 资源限制配置

编辑/etc/security/limits.conf文件,增加用户资源限制:

* soft nofile 65535 * hard nofile 65535 * soft nproc 32768 * hard nproc 32768 * soft core unlimited * hard core unlimited 

2. 系统性能调优

2.1 CPU性能优化

2.1.1 CPU调度器调整

RHEL默认使用CFQ(Completely Fair Queuing)调度器,但对于企业级应用,特别是数据库服务器,deadline或noop调度器可能更合适:

# 查看当前调度器 cat /sys/block/sda/queue/scheduler # 临时更改调度器 echo noop > /sys/block/sda/queue/scheduler # 永久更改调度器(编辑/etc/rc.local) echo 'echo noop > /sys/block/sda/queue/scheduler' >> /etc/rc.local chmod +x /etc/rc.local 

2.1.2 CPU频率调整

安装并配置cpupower工具:

yum install -y cpupowerutils # 查看当前CPU频率策略 cpupower frequency-info # 设置性能模式 cpupower frequency-set -g performance # 永久生效(编辑/etc/default/cpupower) echo 'GOVERNOR="performance"' > /etc/default/cpupower systemctl enable cpupower 

2.2 内存优化

2.2.1 大页内存配置

对于需要大量内存的应用(如数据库),配置大页内存可以提升性能:

# 查看当前大页设置 cat /proc/meminfo | grep HugePages # 临时设置大页数量 echo 1024 > /proc/sys/vm/nr_hugepages # 永久设置(编辑/etc/sysctl.conf) echo 'vm.nr_hugepages = 1024' >> /etc/sysctl.conf sysctl -p # 配置用户组权限访问大页 echo 'vm.hugetlb_shm_group = 1000' >> /etc/sysctl.conf # 1000是用户组ID sysctl -p 

2.2.2 内存透明大页(THP)配置

对于某些工作负载,禁用THP可以提高性能:

# 临时禁用THP echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag # 永久禁用(编辑/etc/rc.local) echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local chmod +x /etc/rc.local 

2.3 I/O性能优化

2.3.1 I/O调度器选择

根据不同的工作负载选择合适的I/O调度器:

# 查看可用的调度器 cat /sys/block/sda/queue/scheduler # 临时设置调度器 echo deadline > /sys/block/sda/queue/scheduler # 永久设置(编辑/etc/rc.local) echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local chmod +x /etc/rc.local 

2.3.2 文件系统优化

选择合适的文件系统并优化挂载选项:

# 格式化分区为XFS文件系统 mkfs.xfs /dev/sdb1 # 创建挂载点 mkdir -p /data # 优化挂载选项(编辑/etc/fstab) echo '/dev/sdb1 /data xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab # 挂载文件系统 mount -a 

对于ext4文件系统,可以使用以下优化选项:

# 格式化分区为ext4文件系统 mkfs.ext4 /dev/sdb1 # 创建挂载点 mkdir -p /data # 优化挂载选项(编辑/etc/fstab) echo '/dev/sdb1 /data ext4 defaults,noatime,nodiratime,data=writeback,barrier=0 0 0' >> /etc/fstab # 挂载文件系统 mount -a 

3. 网络配置优化

3.1 网络接口优化

3.1.1 网络接口参数调整

编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0):

TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 PREFIX=24 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 ETHTOOL_OPTS="-G eth0 rx 4096 tx 4096" 

3.1.2 网络中断亲和性

配置网络中断亲和性,提高网络处理性能:

# 安装irqbalance工具 yum install -y irqbalance # 停止irqbalance服务 systemctl stop irqbalance systemctl disable irqbalance # 查看网络中断 cat /proc/interrupts | grep eth # 设置中断亲和性(示例:将中断45绑定到CPU核心0) echo 1 > /proc/irq/45/smp_affinity # 永久生效(编辑/etc/rc.local) echo 'echo 1 > /proc/irq/45/smp_affinity' >> /etc/rc.local chmod +x /etc/rc.local 

3.2 网络协议栈优化

3.2.1 TCP/IP协议栈优化

编辑/etc/sysctl.conf文件,添加以下网络协议栈优化参数:

# TCP连接优化 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_rfc1337 = 1 net.ipv4.tcp_abort_on_overflow = 0 # 网络连接队列优化 net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65536 net.ipv4.tcp_max_orphans = 3276800 # 网络缓冲区优化 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_mem = 786432 1048576 1572864 

应用配置:

sysctl -p 

3.2.2 网络 bonding 配置

配置网络绑定以提高网络可用性和带宽:

# 安装bonding工具 yum install -y bonding-utils # 创建bonding接口配置文件 cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOF DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes IPADDR=192.168.1.200 PREFIX=24 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes BOOTPROTO=none BONDING_OPTS="mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=layer3+4" EOF # 配置从接口 cat > /etc/sysconfig/network-scripts/ifcfg-eth1 << EOF DEVICE=eth1 NAME=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none MASTER=bond0 SLAVE=yes EOF cat > /etc/sysconfig/network-scripts/ifcfg-eth2 << EOF DEVICE=eth2 NAME=eth2 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none MASTER=bond0 SLAVE=yes EOF # 重启网络服务 systemctl restart network 

4. 存储系统优化

4.1 磁盘I/O优化

4.1.1 磁盘调度器选择

根据不同的工作负载选择合适的磁盘调度器:

# 查看当前磁盘调度器 cat /sys/block/sda/queue/scheduler # 临时设置调度器 echo deadline > /sys/block/sda/queue/scheduler # 永久设置(编辑/etc/rc.local) echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local chmod +x /etc/rc.local 

4.1.2 磁盘参数调整

调整磁盘参数以提高I/O性能:

# 查看当前磁盘参数 hdparm -I /dev/sda # 启用DMA hdparm -d1 /dev/sda # 设置多扇区传输 hdparm -m16 /dev/sda # 设置I/O支持 hdparm -c3 /dev/sda # 永久生效(编辑/etc/rc.local) echo 'hdparm -d1 -m16 -c3 /dev/sda' >> /etc/rc.local chmod +x /etc/rc.local 

4.2 逻辑卷管理(LVM)优化

4.2.1 LVM配置优化

创建优化的LVM配置:

# 创建物理卷 pvcreate /dev/sdb1 # 创建卷组,设置物理扩展大小为16MB vgcreate -s 16M vg_data /dev/sdb1 # 创建逻辑卷,设置条带化 lvcreate -L 100G -i 2 -I 64 -n lv_data vg_data # 格式化逻辑卷 mkfs.xfs /dev/vg_data/lv_data # 创建挂载点 mkdir -p /data # 添加到fstab echo '/dev/vg_data/lv_data /data xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab # 挂载文件系统 mount -a 

4.2.2 LVM快照与备份

配置LVM快照以支持数据备份:

# 创建快照 lvcreate -L 10G -s -n lv_data_snapshot /dev/vg_data/lv_data # 挂载快照 mkdir -p /mnt/snapshot mount /dev/vg_data/lv_data_snapshot /mnt/snapshot # 备份数据 tar czf /backup/data_backup.tar.gz -C /mnt/snapshot . # 卸载并删除快照 umount /mnt/snapshot lvremove /dev/vg_data/lv_data_snapshot 

4.3 RAID配置优化

4.3.1 软件RAID配置

使用mdadm配置软件RAID:

# 安装mdadm yum install -y mdadm # 创建RAID 0(条带化)用于性能优化 mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1 # 创建RAID 1(镜像)用于数据冗余 mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1 # 创建RAID 10(条带化镜像)平衡性能和冗余 mdadm --create /dev/md10 --level=10 --raid-devices=4 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 # 创建RAID配置文件 mdadm --detail --scan >> /etc/mdadm.conf # 格式化RAID设备 mkfs.xfs /dev/md0 mkfs.xfs /dev/md1 mkfs.xfs /dev/md10 # 创建挂载点 mkdir -p /data/raid0 /data/raid1 /data/raid10 # 添加到fstab echo '/dev/md0 /data/raid0 xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab echo '/dev/md1 /data/raid1 xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab echo '/dev/md10 /data/raid10 xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab # 挂载文件系统 mount -a 

4.3.2 RAID优化参数

调整RAID参数以优化性能:

# 设置RAID条带大小(示例:256KB) echo 256 > /sys/block/md0/md/stripe_cache_size # 设置RAID读写策略 echo write_through > /sys/block/md0/md/array_state # 设置最小和最大RAID重建速度 echo 50000 > /proc/sys/dev/raid/speed_limit_min echo 200000 > /proc/sys/dev/raid/speed_limit_max # 永久生效(编辑/etc/rc.local) echo 'echo 256 > /sys/block/md0/md/stripe_cache_size' >> /etc/rc.local echo 'echo write_through > /sys/block/md0/md/array_state' >> /etc/rc.local echo 'echo 50000 > /proc/sys/dev/raid/speed_limit_min' >> /etc/rc.local echo 'echo 200000 > /proc/sys/dev/raid/speed_limit_max' >> /etc/rc.local chmod +x /etc/rc.local 

5. 安全配置最佳实践

5.1 系统安全加固

5.1.1 SELinux配置

SELinux是RHEL的核心安全组件,正确配置SELinux可以显著提高系统安全性:

# 检查SELinux状态 sestatus # 设置SELinux为强制模式 sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config setenforce 1 # 查看SELinux布尔值 getsebool -a # 设置SELinux布尔值(示例:允许HTTP连接到网络) setsebool -P httpd_can_network_connect on # 查看文件SELinux上下文 ls -Z /var/www/html # 修改文件SELinux上下文 chcon -R -t httpd_sys_content_t /var/www/html # 恢复默认SELinux上下文 restorecon -R /var/www/html 

5.1.2 系统服务最小化

减少运行的服务数量,降低攻击面:

# 查看运行的服务 systemctl list-units --type=service --state=running # 停止并禁用不必要的服务 systemctl stop postfix systemctl disable postfix systemctl stop avahi-daemon systemctl disable avahi-daemon systemctl stop cups systemctl disable cups # 查看开放端口 ss -tulpn # 关闭不必要的服务端口 systemctl stop rpcbind systemctl disable rpcbind 

5.2 网络安全配置

5.2.1 防火墙配置

使用firewalld配置防火墙规则:

# 启动并启用firewalld systemctl start firewalld systemctl enable firewalld # 查看默认区域 firewall-cmd --get-default-zone # 查看活动区域 firewall-cmd --get-active-zones # 查看当前规则 firewall-cmd --list-all # 开放端口(示例:开放80端口) firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload # 开放服务(示例:开放HTTP服务) firewall-cmd --permanent --add-service=http firewall-cmd --reload # 配置端口转发(示例:将80端口转发到8080端口) firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 firewall-cmd --reload # 配置IP伪装(NAT) firewall-cmd --permanent --add-masquerade firewall-cmd --reload # 配置富规则(示例:允许特定IP访问特定端口) firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' firewall-cmd --reload 

5.2.2 TCP Wrappers配置

使用TCP Wrappers限制网络服务访问:

# 编辑/etc/hosts.allow,允许特定IP访问特定服务 echo "sshd: 192.168.1.0/24" >> /etc/hosts.allow echo "vsftpd: 192.168.1.100" >> /etc/hosts.allow # 编辑/etc/hosts.deny,拒绝所有其他访问 echo "ALL: ALL" >> /etc/hosts.deny 

5.3 用户与权限管理

5.3.1 用户账户安全

配置用户账户安全策略:

# 设置密码复杂度策略(编辑/etc/security/pwquality.conf) minlen = 12 minclass = 3 maxrepeat = 3 dcredit = -1 ucredit = -1 lcredit = -1 ocredit = -1 # 设置密码过期策略(编辑/etc/login.defs) PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14 # 配置用户登录失败锁定(编辑/etc/pam.d/system-auth) auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail audit silent account required pam_tally2.so # 创建新用户并设置强密码 useradd -m user1 passwd user1 # 限制用户使用su命令 echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su usermod -G wheel user1 

5.3.2 文件系统权限

配置文件系统权限:

# 设置关键目录权限 chmod 700 /root chmod 755 /bin /sbin /usr/bin /usr/sbin chmod 644 /etc/passwd chmod 600 /etc/shadow chmod 644 /etc/group chmod 600 /etc/gshadow # 查找并修复权限不正确的文件 rpm -Va | grep '^.M' # 查找无主文件 find / -nouser -o -nogroup # 设置默认umask echo "umask 027" >> /etc/profile echo "umask 027" >> /etc/csh.cshrc echo "umask 027" >> /etc/bashrc 

6. 高可用性与容错配置

6.1 Pacemaker与Corosync高可用集群

6.1.1 安装与配置高可用集群

安装并配置Pacemaker和Corosync:

# 安装高可用集群软件包 yum install -y pacemaker corosync pcs fence-agents-all # 设置hacluster用户密码 echo "hacluster:password" | chpasswd # 启动并启用pcsd服务 systemctl start pcsd systemctl enable pcsd # 认证集群节点(在所有节点上执行) pcs cluster auth node1 node2 node3 -u hacluster -p password # 创建集群 pcs cluster setup --name mycluster node1 node2 node3 # 启动集群 pcs cluster start --all # 启用集群自启动 pcs cluster enable --all # 查看集群状态 pcs status 

6.1.2 配置集群资源

配置集群资源和服务:

# 配置STONITH设备 pcs property set stonith-enabled=true pcs stonith create fence_xvm fence_xvm pcmk_host_list="node1 node2 node3" # 配置浮动IP资源 pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.200 cidr_netmask=24 op monitor interval=30s # 配置文件系统资源 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/drbd0" directory="/data" fstype="ext4" op monitor interval=20s # 配置Apache服务资源 pcs resource create httpd systemd:httpd op monitor interval=30s # 配置资源约束 pcs constraint colocation add fs with vip pcs constraint order vip then fs pcs constraint colocation add httpd with fs pcs constraint order fs then httpd 

6.2 DRBD数据复制

6.2.1 安装与配置DRBD

安装并配置DRBD以实现数据复制:

# 安装ELRepo仓库 yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # 安装DRBD yum install -y drbd90-utils kmod-drbd90 # 加载DRBD模块 modprobe drbd # 配置DRBD资源(编辑/etc/drbd.d/r0.res) cat > /etc/drbd.d/r0.res << EOF resource r0 { device /dev/drbd0; disk /dev/sdb1; meta-disk internal; protocol C; on node1 { address 192.168.1.101:7788; } on node2 { address 192.168.1.102:7788; } } EOF # 初始化DRBD资源 drbdadm create-md r0 # 启动DRBD服务 systemctl start drbd # 设置主节点(在node1上执行) drbdadm primary r0 --force # 查看DRBD状态 cat /proc/drbd 

6.2.2 DRBD与Pacemaker集成

将DRBD资源集成到Pacemaker集群中:

# 安装DRBD Pacemaker资源代理 yum install -y resource-agents # 配置DRBD资源 pcs resource create drbd_r0 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s # 配置主/从资源 pcs resource master ms_drbd_r0 drbd_r0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true # 配置文件系统资源 pcs resource create fs_r0 ocf:heartbeat:Filesystem device="/dev/drbd0" directory="/data" fstype="ext4" # 配置资源约束 pcs constraint colocation add fs_r0 with ms_drbd_r0 INFINITY with-rsc-role=Master pcs constraint order promote ms_drbd_r0 then start fs_r0 # 查看资源状态 pcs status 

6.3 负载均衡配置

6.3.1 HAProxy负载均衡

安装并配置HAProxy实现负载均衡:

# 安装HAProxy yum install -y haproxy # 配置HAProxy(编辑/etc/haproxy/haproxy.cfg) cat > /etc/haproxy/haproxy.cfg << EOF global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch 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 3000 listen stats bind *:9000 stats enable stats uri /stats stats auth admin:password stats refresh 30s frontend http-in bind *:80 default_backend servers backend servers balance roundrobin server server1 192.168.1.101:80 check server server2 192.168.1.102:80 check server server3 192.168.1.103:80 check EOF # 启动并启用HAProxy systemctl start haproxy systemctl enable haproxy 

6.3.2 Keepalived高可用负载均衡

安装并配置Keepalived实现HAProxy的高可用性:

# 安装Keepalived yum install -y keepalived # 配置Keepalived(编辑/etc/keepalived/keepalived.conf) cat > /etc/keepalived/keepalived.conf << EOF ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.200 } track_script { chk_haproxy } } EOF # 启动并启用Keepalived systemctl start keepalived systemctl enable keepalived 

7. 系统监控与维护

7.1 系统性能监控

7.1.1 使用top和htop监控系统

使用top和htop命令监控系统资源使用情况:

# 安装htop yum install -y htop # 使用top监控系统 top -d 2 # 使用htop监控系统 htop 

7.1.2 使用vmstat监控系统性能

使用vmstat命令监控系统性能:

# 每隔2秒显示一次系统性能数据,共显示5次 vmstat 2 5 # 显示内存统计信息 vmstat -s # 显示磁盘I/O统计信息 vmstat -d 

7.1.3 使用iostat监控磁盘I/O

使用iostat命令监控磁盘I/O性能:

# 安装sysstat包 yum install -y sysstat # 每隔2秒显示一次磁盘I/O数据,共显示5次 iostat 2 5 # 显示扩展的磁盘I/O统计信息 iostat -x 2 5 # 显示特定设备的I/O统计信息 iostat -d /dev/sda 2 5 

7.2 日志管理

7.2.1 配置rsyslog

配置rsyslog服务进行日志管理:

# 编辑rsyslog配置文件 cat > /etc/rsyslog.d/server.conf << EOF # 将所有info级别的日志发送到远程日志服务器 *.info @192.168.1.100:514 # 将所有error级别的日志同时写入本地文件 *.error /var/log/error.log # 将邮件相关的日志写入特定文件 mail.* /var/log/maillog # 创建自定义日志模板 $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs EOF # 重启rsyslog服务 systemctl restart rsyslog systemctl enable rsyslog 

7.2.2 配置logrotate

配置logrotate进行日志轮转:

# 创建自定义logrotate配置 cat > /etc/logrotate.d/custom-app << EOF /var/log/custom-app/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root postrotate /usr/bin/systemctl reload custom-app.service > /dev/null 2>&1 || true endscript } EOF # 测试logrotate配置 logrotate -d /etc/logrotate.d/custom-app # 强制执行logrotate logrotate -f /etc/logrotate.d/custom-app 

7.3 监控工具部署

7.3.1 Nagios监控系统

安装并配置Nagios监控系统:

# 安装EPEL仓库 yum install -y epel-release # 安装Nagios yum install -y nagios nagios-plugins-all nagios-plugins-nrpe # 配置Nagios管理员密码 htpasswd -c /etc/nagios/passwd nagiosadmin # 启动并启用Nagios服务 systemctl start nagios systemctl enable nagios # 安装NRPE代理(在客户端) yum install -y nagios-plugins-nrpe nagios-plugins-all # 配置NRPE(编辑/etc/nagios/nrpe.cfg) echo "allowed_hosts=192.168.1.100" >> /etc/nagios/nrpe.cfg # 启动并启用NRPE服务 systemctl start nrpe systemctl enable nrpe 

7.3.2 Zabbix监控系统

安装并配置Zabbix监控系统:

# 安装Zabbix仓库 rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm # 安装Zabbix服务器和前端 yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent # 安装并配置MariaDB yum install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb # 创建Zabbix数据库 mysql -e "create database zabbix character set utf8 collate utf8_bin;" mysql -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'password';" # 导入Zabbix数据库结构 zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -ppassword zabbix # 配置Zabbix服务器(编辑/etc/zabbix/zabbix_server.conf) DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=password # 配置PHP时区(编辑/etc/httpd/conf.d/zabbix.conf) php_value date.timezone Asia/Shanghai # 启动并启用Zabbix服务和Apache服务 systemctl start zabbix-server zabbix-agent httpd systemctl enable zabbix-server zabbix-agent httpd # 配置Zabbix客户端 yum install -y zabbix-agent # 配置Zabbix客户端(编辑/etc/zabbix/zabbix_agentd.conf) Server=192.168.1.100 ServerActive=192.168.1.100 Hostname=client1 # 启动并启用Zabbix客户端服务 systemctl start zabbix-agent systemctl enable zabbix-agent 

8. 实际案例分析

8.1 高性能Web服务器配置

以下是一个高性能Web服务器的配置案例,针对高并发Web访问场景进行了优化:

#!/bin/bash # 系统基础配置 hostnamectl set-hostname webserver.example.com timedatectl set-timezone Asia/Shanghai # 系统更新 yum update -y # 安装必要的软件包 yum install -y httpd php php-mysql php-gd php-xml php-mbstring php-mcrypt # 优化内核参数 cat >> /etc/sysctl.conf << EOF # 网络参数优化 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_max_tw_buckets = 5000 net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65536 # 文件系统优化 fs.file-max = 65535 vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2 EOF sysctl -p # 优化系统资源限制 cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 * soft nproc 32768 * hard nproc 32768 EOF # 优化Apache配置 cat > /etc/httpd/conf.d/optimized.conf << EOF KeepAlive On KeepAliveTimeout 5 MaxKeepAliveRequests 100 Timeout 30 <IfModule mpm_prefork_module> StartServers 10 MinSpareServers 10 MaxSpareServers 30 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> <IfModule mod_php7.c> php_value max_execution_time 30 php_value memory_limit 256M php_value post_max_size 32M php_value upload_max_filesize 32M </IfModule> EOF # 优化PHP配置 cat > /etc/php.d/optimized.ini << EOF memory_limit = 256M max_execution_time = 30 max_input_time = 60 post_max_size = 32M upload_max_filesize = 32M max_file_uploads = 20 display_errors = Off log_errors = On error_log = /var/log/php/error.log EOF # 创建错误日志目录 mkdir -p /var/log/php touch /var/log/php/error.log chown -R apache:apache /var/log/php # 配置防火墙 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload # 启动并启用Apache服务 systemctl start httpd systemctl enable httpd # 配置网站目录 mkdir -p /var/www/html/example chown -R apache:apache /var/www/html/example chmod 755 /var/www/html/example # 创建测试页面 echo "<?php phpinfo(); ?>" > /var/www/html/example/index.php # 配置虚拟主机 cat > /etc/httpd/conf.d/example.conf << EOF <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html/example ErrorLog /var/log/httpd/example_error.log CustomLog /var/log/httpd/example_access.log combined </VirtualHost> EOF # 重启Apache服务 systemctl restart httpd 

8.2 高性能数据库服务器配置

以下是一个高性能数据库服务器的配置案例,针对MySQL数据库进行了优化:

#!/bin/bash # 系统基础配置 hostnamectl set-hostname dbserver.example.com timedatectl set-timezone Asia/Shanghai # 系统更新 yum update -y # 安装MySQL yum install -y mariadb-server mariadb # 优化内核参数 cat >> /etc/sysctl.conf << EOF # 网络参数优化 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_max_tw_buckets = 5000 net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65536 # 文件系统优化 fs.file-max = 65535 vm.swappiness = 10 vm.dirty_ratio = 60 vm.dirty_background_ratio = 2 # 虚拟内存优化 vm.nr_hugepages = 1024 EOF sysctl -p # 配置大页内存 groupadd mysql usermod -a -G mysql mysql echo "vm.hugetlb_shm_group = $(grep mysql /etc/group | cut -d: -f3)" >> /etc/sysctl.conf sysctl -p # 优化系统资源限制 cat >> /etc/security/limits.conf << EOF mysql soft nofile 65535 mysql hard nofile 65535 mysql soft nproc 32768 mysql hard nproc 32768 * soft memlock unlimited * hard memlock unlimited EOF # 配置磁盘I/O调度器 echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local chmod +x /etc/rc.local echo 'echo deadline > /sys/block/sda/queue/scheduler' > /etc/rc.local # 配置文件系统 mkdir -p /data/mysql mkfs.xfs /dev/sdb1 echo '/dev/sdb1 /data/mysql xfs defaults,noatime,nodiratime,largeio,inode64,swalloc 0 0' >> /etc/fstab mount -a # 创建MySQL数据目录 mkdir -p /data/mysql/data chown -R mysql:mysql /data/mysql chmod 755 /data/mysql # 优化MySQL配置 cat > /etc/my.cnf << EOF [mysqld] # 基本配置 datadir=/data/mysql/data socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 # InnoDB优化 innodb_buffer_pool_size = 8G innodb_buffer_pool_instances = 8 innodb_log_file_size = 1G innodb_log_buffer_size = 64M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_file_per_table = 1 innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_thread_concurrency = 0 innodb_doublewrite = 1 innodb_old_blocks_time = 1000 innodb_open_files = 2000 innodb_stats_on_metadata = 0 # MyISAM优化 key_buffer_size = 256M myisam_sort_buffer_size = 64M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 # 连接优化 max_connections = 500 max_connect_errors = 100000 back_log = 512 max_allowed_packet = 64M interactive_timeout = 28800 wait_timeout = 28800 # 查询优化 query_cache_type = 1 query_cache_size = 256M query_cache_limit = 4M sort_buffer_size = 4M read_buffer_size = 2M read_rnd_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 128 table_open_cache = 2000 table_definition_cache = 2000 # 日志配置 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = 1 log_error = /var/log/mysql/error.log # 其他配置 skip-name-resolve skip-external-locking default-storage-engine = InnoDB character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci max_allowed_packet = 256M [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [mysql] default-character-set = utf8mb4 [client] default-character-set = utf8mb4 EOF # 创建日志目录 mkdir -p /var/log/mysql touch /var/log/mysql/slow.log touch /var/log/mysql/error.log chown -R mysql:mysql /var/log/mysql # 初始化MySQL数据库 mysql_install_db --datadir=/data/mysql/data --user=mysql # 启动并启用MySQL服务 systemctl start mariadb systemctl enable mariadb # 安全初始化 mysql_secure_installation # 配置防火墙 firewall-cmd --permanent --add-service=mysql firewall-cmd --reload 

结论

企业级Red Hat Enterprise Linux实例的配置是一个复杂而细致的过程,涉及系统基础配置、性能调优、网络优化、存储管理、安全加固、高可用性配置以及系统监控等多个方面。通过本文介绍的最佳实践,系统管理员和运维工程师可以充分发挥RHEL的潜力,构建高性能、高可靠性的企业级系统环境。

在实际应用中,需要根据具体的工作负载和业务需求,灵活调整各项配置参数,并持续监控系统性能,及时进行优化调整。同时,保持系统的更新和安全加固也是确保系统长期稳定运行的重要措施。

通过遵循本文提供的最佳实践,企业可以显著提高RHEL实例的性能和可靠性,为关键业务应用提供稳定、高效的运行环境,从而提升整体业务运营效率和竞争力。