1. 环境准备
1.1. 硬件配置
标准化项 | 说明 | 备注 |
---|---|---|
IO设置 | 写策略设置Write Back,禁用Write Through | |
IO子系统设置 | 使用Raid1+0 | 若采用PCIe-SSD,则可不用做Raid |
关闭物理磁盘cache,防止丢数据 | ||
写策略设置Write Back,禁用Write Through | ||
关闭预读,使得宝贵的cahce用来作为写缓存 | ||
BIOS标准设置 | 开启最大性能模式,选择DAPC或者选择Performance模式 | 不同的主板配置上有差异 |
Memory Frequency(内存频率)选择Maximum Performance模式 | 不同的主板配置上有差异 | |
关闭NUMA | 不同的主板配置上有差异 | |
文件系统 | 数据存储文件系统类型建议EXT4格式 | 该项不做强制要求XFS类型也可以 |
网络配置 | 使用mode=4模式的网卡绑定 | 双网卡连接不同的交换机,交换机上需要做适配 |
数据挂载目录 | /data | Redis数据库实例的所有文件全部存放在/data目录下; |
1.2. 操作系统软件包&第三方工具
软件包 | 说明 | 备注 |
---|---|---|
gcc | 至少是C89兼容的 | |
ruby | 若Redis部署的为5.x及以上版本,无需部署ruby,5.x及以上版本彻底抛弃了ruby | |
GNU make | 版本3.80及以上 | |
tar | 解压源码包时用到的tar解压工具 |
^: 若Redis版本为Redis 5.x及以上版本时,可不需要安装ruby。
1.3. 关闭SELINUX
临时禁用selinux:
# setenforce 0
# more /etc/selinux/config | grep -Ev "$|[#;]"
永久禁用selinux:
# vi /etc/selinux/config
将
SELINUX= enforcing
修改为
SELINUX=disabled
:x保存退出
1.4. 配置防火墙
如需要禁用防火墙,可执行如下命令:
1)若是CentOS 7.x系统,可执行如下命令禁用防火墙:
关闭防火墙:
# systemctl stop firewalld.service
禁用防火墙开机自启:
# systemctl disable firewalld.service
查看防火墙状态:
# systemctl status firewalld.service
2)若是Ubuntu系统,可执行如下命令禁用防火墙:
# iptables -P INPUT ACCEPT
3)其他系统禁用防火墙命令,请自行查找。
如需配置防火墙规则,可参照如下示例:
# vim /etc/iptables.rules
*filter
:INPUT ACCEPT [3715:523951]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1925:209933]
-A INPUT -i lo -j ACCEPT
#允许ssh端口通过
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#允许icmp
-A INPUT -p icmp -j ACCEPT
#允许Redis服务器间互通,即Redis服务器间可互相访问Redis端口为2011~2014的Redis实例
-A INPUT -s 192.168.111.111/24 -p tcp -m state --state NEW -m tcp --dport 2011:2014 -j ACCEPT
-A INPUT -s 192.168.111.112/24 -p tcp -m state --state NEW -m tcp --dport 2011:2014 -j ACCEPT
-A INPUT -s 192.168.111.113/24 -p tcp -m state --state NEW -m tcp --dport 2011:2014 -j ACCEPT
#运行其他服务器访问Redis,如允许172.172.122.222服务器访问本地Redis端口为2011~2014的Redis实例
-A INPUT -s 172.172.122.222/32 -p tcp -m state --state NEW -m tcp --dport 2011:2014 -j ACCEPT
#暴露本地22201服务端口
-A INPUT -p tcp -m tcp --dport 22201 -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
COMMIT
防火墙规则配置完毕后,将配置文件导入:
# iptables-restore < /etc/iptables.rules
导入防火墙规则配置文件后,打开防火墙:
# iptables -P INPUT DROP
如需要开机自动恢复规则,把恢复命令添加到启动脚本:
# echo '/sbin/iptables-restore < /etc/iptables.rules' >>/etc/rc.local
# echo '/sbin/iptables -P INPUT DROP' >>/etc/rc.local
# cat /etc/rc.local
1.5. 优化系统参数
编辑系统配置文件sysctl.conf:
# vim /etc/sysctl.conf
vm.overcommit_memory=1
vm.swappiness = 0
net.core.somaxconn = 1024
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.nf_conntrack_max = 655350
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_local_reserved_ports = 2011-2014,12011
^: net.ipv4.tcp_tw_reuse设置为1表示开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。
装载ip_conntrack模块:
# modprobe ip_conntrack
载入sysctl配置文件:
# sysctl -p
1.6. 修改hugepage配置
临时禁用hugepage:
# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
为了使机器重启后THP配置依然生效,可以在/etc/rc.local中追加:
# echo '/bin/echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local