Redis 单机部署常见问题以及生产环境下的优化和安全设置


目录

一、centos7 下redis6.0 单机部署

二、针对安装后告警信息进行简单优化

三、加入系统服务 优雅的管理redis的启动和关闭等

四、安全设置,redis 安全问题一定要重视,否则机器可能会被攻破

五、允许redis被远程访问


 

一、redis 6.0 单机部署

cd /usr/local/src

echo " #安装依赖"

yum -y install centos-release-scl

yum -y install  wget  make tcl  devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

source /opt/rh/devtoolset-9/enable

echo "#下载源码包"

wget http://download.redis.io/releases/redis-6.0.6.tar.gz

tar -zxvf redis-6.0.6.tar.gz   

cd /usr/local/src/redis-6.0.6

make && make install PREFIX=/usr/local/redis 

mkdir /usr/local/redis/conf/

cp /usr/local/src/redis-6.0.6/redis.conf  /usr/local/redis/conf/redis.conf

/user/local/redis/bin/redis-server

安装成功

可以看到有好多waring 生成环境下 如果是在生产环境最好还是处理一下;

二、redis 简单优化:

根据输出内容提示进行初步优化,消除警告信息 ;根据生产环境数据量实际情况 调节参数,以下仅供参考,消除warning还是没问题的

直接运行/user/local/redis/bin/redis-server启动后  会出现如下warning

Warning: no config file specified, using the default config. In order to specify a config file use /usr/local/redis/bin/redis-server /path/to/redis.conf

## 启动时没指定配置文件
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

警告redis高负载环境中每一个端口最大的监听队列的长度128 太少了

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
警告 当前overcommit_memory 是0 建议改为1

它是 内存分配策略

可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存


WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

警告 您的内核中启用了透明大页面(THP)支持。这将导致Redis的延迟和内存使用问题

以上问题解决方法:

echo 512 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

sysctl vm.overcommit_memory=1

再次启动/usr/local/redis/bin/redis-server 还有一条警告,让我们指定配置文件启动

解决方法:

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

以该方法启动 所有警告消失

三 将redis加入系统服务,优雅的启动和管理

1、在/lib/systemd/system目录下创建一个脚本文件redis.service

cat << EOF >  /lib/systemd/system/redis.service

[Unit]

Description=Redis

After=network.target

[Service]

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf --daemonize no

ExecStop=/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]

WantedBy=multi-user.target

EOF

2、创建软链接

ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service

3. 刷新配置
刚刚配置的服务需要让systemctl能识别,就必须刷新配置
$ systemctl daemon-reload
如果没有权限可以使用sudo
$ sudo systemctl daemon-reload
4. 测试启动、重启、停止 命令生效
启动redis
$ systemctl start redis
重启redis
$ systemctl restart redis
停止redis
$ systemctl stop redis
5. 开机自启动
redis服务加入开机启动
$ systemctl enable redis
禁止开机启动
$ systemctl disable redis

6. 查看状态
查看状态
$ systemctl status redis

四 安全设置

redis 默认是没有密码的,暴露在公网上 可以通过redis_cli 连接后修改本地服务器内的文件,比如添加ssh密钥,修改crontab计划任务等进行提权,所以暴露在公网的redis 一定要设置密码

密码设置方法

方法一:修改redis.conf文件里面的requirepass

sed -i "s/\# requirepass foobared/requirepass mypass666/g" /usr/local/redis/conf/redis.conf

service redis restart 生效

方法二:不需要重启立即生效 ,但是redis命令行修改了密码之后,配置文件的requirepass字段后面的密码是不会随之修改的

[root@dlin ~]# /usr/local/redis/bin/redis-cli

127.0.0.1:6379> config set requirepass mypass666

OK

127.0.0.1:6379>quit

设置之后再次登陆就需要输入密码了

[root@dlin ~]# /usr/local/redis/bin/redis-cli

127.0.0.1:6379> ping

(error) NOAUTH Authentication required.

127.0.0.1:6379> auth mypass666

OK

127.0.0.1:6379> ping

PONG

五 允许远程连接redis

修改redis.conf

默认是

bind 127.0.0.1

将此127.0.0.1 换成 公网ip或能够远程访问的ip  ;若换允许公网访问 一定要设置访问密码!!!

##window 下有个Redis Desktop Manager 软件 能够可视化连接redis!

记得开启firewall 并放行相应的端口,

yum install firewalld -y

service firewalld start

systemctl enable firewalld

firewall-cmd --zone=public --add-port=6379/tcp --permanent

firewall-cmd --reload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dlin2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值