redis安装与调优部署文档(Linux)

1. 安装环境准备

1.1 主机环境准备

1.1.1. 关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

1.1.2. 部署规划

软件安装路径 /usr/local/redis/
bin 二进制路径
etc 配置路径
log 日志路径
data 数据路径
run pid路径
端口规划 7369

1.1.3. 系统主机时间、时区、系统语言

 本节视实际情况需要操作

	修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
	修改系统语言环境
echo 'LANG="en_US.UTF-8"' >> /etc/profile && source /etc/profile
	配置主机NTP时间同步
yum -y install ntp
systemctl enable ntpd && systemctl start ntpd
echo 'server ntp1.aliyun.com' >> /etc/ntp.conf
echo 'server ntp2.aliyun.com' >> /etc/ntp.conf

2. Redis安装部署

2.1 Redis依赖安装及部署

 添加用户与用户组(用户名请自行定义)

groupadd -r middle && useradd -s /sbin/nologin -r -M -g middle middle

 下载redis-5.0.8.tar.gz安装包,并解压安装

yum -y install gcc gcc-c++ automake autoconf libtool make wget
cd /opt
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8/src
make all && make install PREFIX=/usr/local/redis

 redis部署环境准备

mkdir -v /usr/local/redis/{log,data,etc,run}
touch /usr/local/redis/log/redis.log
cp /opt/redis-5.0.8/redis.conf /usr/local/redis/etc
cp mkreleasehdr.sh /usr/local/redis/bin/
chown -R middle:middle /usr/local/redis

 将Redis的命令所在目录添加到系统参数PATH中

cat >>/etc/profile<< EOF
export PATH="\$PATH:/usr/local/redis/bin"
EOF
source /etc/profile

2.2 修改redis.conf配置

cd /usr/local/redis/etc/
sed -i "s/daemonize no/daemonize yes/g" redis.conf
sed -i "s/^bind 127.0.0.1/bind 192.168.1.100/g" redis.conf
sed -i "s/^port 6379/port 7369/g" redis.conf
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/run/redis_7369.pid@g" redis.conf
sed -i "s@logfile ""@logfile "/usr/local/redis/log/redis.log"@g" redis.conf
sed -i "s@^dir ./@dir /usr/local/redis/data@g" redis.conf
sed -i "s@^# requirepass foobared@requirepass 密码@g" redis.conf
sed -i "s@^appendonly no@appendonly yes@g" redis.conf  --根据环境要求开启AOF

 相关参数注释如下

daemonize no    ---redis服务守护进程
bind 127.0.0.1    ---默认仅允许本机可连接,具体说明见3.2章节
port 6379  ----默认端口6379
pidfile /var/run/redis_6379.pid  ---pidfile路径与pid名称
logfile ""  ---redis的日志保存路径
dir ./     -----redis的数据文件保存路径
requirepass foobared   -----redis默认密码foobared(请配置足够复杂的密码)
appendonly no       ---在要求保证时时数据安全的环境开启AOF持久化

2.3 配置redis系统服务

2.3.1. 针对6系统添加系统服务

1、添加防火墙策略
(1)所有机器可访问

iptables -A INPUT -p tcp --dport 7369 -j ACCEPT
service iptables save

(2)特定IP192.168.142.166可访问本机7369端口

iptables -A INPUT -p tcp -s 192.168.142.166 --dport 7369 -j ACCEPT
service iptables save

2、添加redis系统服务启动脚本

vi /etc/init.d/redis
#!/bin/bash
#chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_7369
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

REDISPORT=7369
REDIS_HOME=/usr/local/redis
EXEC=$REDIS_HOME/bin/redis-server
CLIEXEC=$REDIS_HOME/bin/redis-cli
PIDFILE=$REDIS_HOME/run/redis_${REDISPORT}.pid
CONF="${REDIS_HOME}/etc/redis.conf"
case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                sudo -u middle $EXEC $CONF &
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                kill -9 $PID
                echo "Stopping ..."
                rm -rf $PIDFILE
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

2、配置Redis系统服务及自启动

chmod +x /etc/init.d/redis
chkconfig --add redis && chkconfig redis on
chkconfig --list redis

3、启动与停止redis服务

service redis start
ps -ef|grep redis

service redis stop

2.3.2. 针对7系统添加系统服务

1、添加防火墙策略
(1)所有机器可访问

firewall-cmd --permanent --zone=public --add-port=7369/tcp
firewall-cmd --reload

(2)特定IP192.168.142.166可访问本机7369端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="7369" accept"
firewall-cmd --reload

(3)特定IP段192.168.142.0/24可访问本机7369端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.0/24" port protocol="tcp" port="7369" accept"
firewall-cmd --reload

2、添加redis系统服务启动脚本

cat >/usr/lib/systemd/system/redis.service<<EOF
[Unit]
Description=redis-server
Requires=network-online.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --daemonize no
Restart=always
RestartSec=5
User=middle
Group=middle
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

2、配置Redis系统服务及自启动

systemctl daemon-reload
systemctl enable redis.service

3、启动与停止redis服务

systemctl start redis
ps -ef|grep redis
systemctl stop redis

3. Redis加固

3.1 禁用或重命名危险命令

 选择禁用还是重命名请根据实际环境操作,具体操作指令如下

	禁用
cd /usr/local/redis/etc/
sed -i '523irename-command CONFIG ""' redis.conf
sed -i '524irename-command FLUSHALL ""' redis.conf
sed -i '525irename-command FLUSHDB ""' redis.conf
	重命名(NAME1、NAME2、NAME3名称请自行定义)
sed -i '523irename-command CONFIG "NAME1"' redis.conf
sed -i '524irename-command FLUSHALL "NAME2"' redis.conf
sed -i '525irename-command FLUSHDB "NAME3"' redis.conf

3.2 禁止监听在公网

 默认情况下,Redis 监听 127.0.0.1。如果仅仅是本地通信,请确保监听在本地。

bind 127.0.0.1

 在redis.conf文件中指定访问源 IP 来访问 Redis(请根据实际环境来操作)。

bind 192.168.1.100 10.0.0.1

3.3 修改默认6379端口

 默认情况下,Redis默认使用6379,请修改默认监听端口,如本文档使用的是7369

port 7369

3.4 账号与认证

 设置访问密码
在 redis.conf中找到 # requirepass foobared字段,去掉#号注释,修改默认密码foobared,并要求密码符合密码复杂度要求:即密码应同时包含大小写、数字与特殊符号且长度不小于8位

requirepass www.pwd.cn12332@@#$%@!%

3.5 服务运行权限最小化

 使用普通用户redis启动服务(详见2.1章节)

groupadd -r middle && useradd -s /sbin/nologin -r -M -g middle middle

4. Redis优化

4.1 关闭内存大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat >>/etc/rc.local<<EOF
echo never > /sys/kernel/mm/transparent_hugepage/enable
EOF

4.2 优化内核参数

cat >>/etc/sysctl.conf<<EOF
fs.file-max = 6815744
vm.overcommit_memory = 1
net.core.somaxconn=1024
EOF
sysctl -p

备注:如果Redis启用了AOF持久化,请在内核参数中添加如下配置

cat >>/etc/sysctl.conf<<EOF
fs.file-max = 6815744
vm.overcommit_memory = 1
net.core.somaxconn=1024
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
EOF
sysctl -p

4.3 检查数据持久化策略

Redis 5.0 默认开启持久化策略为混合持久化。如果是其他版本的 Redis 首先需要检查一下,是否已经开启了混合持久化(该项优化根据项目需要修改配置)。

aof-use-rdb-preamble yes

5. 结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值