Linux Shell 实现一键部署Redis6
redis 前言
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis 参考
redis下载 | RedisDesktopManager |
download | download |
Linux 各系统下载使用参考
Red Hat | Rocky Linux | Oracle Linux |
AlmaLinux |
ubuntu | suselinux | esxi | RHEL标准安装 | 系统安装参考 | YUM参考 |
MobaXterm 远程连接工具 |
Red Hat Enterprise 9.0 文档 | Kickstart 生成器 | |||||
download | download | download | download | download | download | download | 参考 | 参考 | 配置参考 | download | 参考 | Kickstart | |||||
版本兼容性 |
安装 Redis
-
创建安装自动化脚本
- 实现在线下载redis,配置redis配置文件,环境变量,防火墙配置,企业微信机器人通知。
- 以下基于Redhat系统
- redis目录 /opt/redis/
- redis 配置文件/opt/redis/conf/
- redis 持久化数据存储 /opt/redis/data/
- redis log 输出到/var/log/redis.log
- redis登录密码Report@123
- redis端口 6379
- Redhat 9 functions使用需要执行安装yum install initscripts -y
- curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXX' #更改自己的企业微信机器人地址
- curl -o /etc/yum.repos.d/redhat.repo http://mirrors.aliyun.com/repo/Centos-8.repo #阿里在线repo
- yum install figlet -y #用于将文字转换为放大艺术字(使用figlet Mysql显示)
vim /redis_install.sh
#!/bin/sh
# -*- coding: utf-8 -*-
# Author: CIASM
# Date: 2022/04/06<<!
██████╗ ███████╗██████╗ ██╗███████╗
██╔══██╗██╔════╝██╔══██╗██║██╔════╝
██████╔╝█████╗ ██║ ██║██║███████╗
██╔══██╗██╔══╝ ██║ ██║██║╚════██║
██║ ██║███████╗██████╔╝██║███████║
╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝╚══════╝!source /etc/rc.d/init.d/functions#Define data path variables
data_downloads=/data/downloads#Define redis path variables
Redis_URL=http://download.redis.io/releases/
Redis_gz=redis-6.2.9.tar.gz
Redis_FILE_DIR=redis-6.2.9
Redis_PREFIX=/opt/redis
Redis_catalogue=/opt
Redis_new=redis
redis_service=/usr/lib/systemd/system/redis.servicefunction install_redis (){
if [ ! -d ${Redis_PREFIX} ];then
mkdir -p $data_downloads
yum install -y gcc gcc-c++ cmake net-tools wget
wget -N -P $data_downloads $Redis_URL/$Redis_gz
tar -xf $data_downloads/$Redis_gz -C $Redis_catalogueif [ $? -eq 0 ];then mv $Redis_catalogue/$Redis_FILE_DIR $Redis_catalogue/$Redis_newcd $Redis_catalogue/$Redis_newmake && make install PREFIX=$Redis_PREFIXln -s $Redis_catalogue/$Redis_new/bin/* /usr/local/sbin/redis_configaction "The redis Install Sussess..." /bin/trueelseaction "The redis Install Failed..." /bin/false exit 1fielseecho -e "\\033[31mThe redis already Install...\\033[0m"
fi
}function redis_config (){
echo "limits config"
cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOFecho "system Maximum number of connections"
echo "fs.file-max=65535" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn= 1024" >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl -pecho "redis.conf config"
mkdir -p $Redis_PREFIX/conf
mkdir -p $Redis_PREFIX/data
cat >>/opt/redis/conf/redis.conf<<EOF
bind 0.0.0.0
requirepass Report@123
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
loglevel notice
logfile "/var/log/redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./opt/redis/data/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
EOFecho "redis serves the script"
cat >>$redis_service<<EOF
[Unit]
Description=Redis
After=network.target[Service]
ExecStart=/opt/redis/bin/redis-server /opt/redis/conf/redis.conf
ExecStop=/opt/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
Restart=always
PrivateTmp=true[Install]
WantedBy=multi-user.target
EOFecho "start redis"
systemctl daemon-reload
systemctl enable --now redis.service
systemctl restart redis.service echo "firewall redis port"
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reloadecho "rm redis"
rm -rf $data_downloads/*
}function Deployment_completion_notification (){host_ID=`dmidecode -s system-serial-number | sed -r 's/\\s+//g'`host_IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}' | awk 'NR==1'`memory_Size=`dmidecode -t memory | grep Size | grep -v No | awk '{sum+=$2} END {printf "%.0fG\\n",sum/1^C4}'`CPU_Model=`cat /proc/cpuinfo | grep 'model name' | awk '{print $6}' | uniq`Disk_size=`fdisk -l | grep "sda:" | awk '{print $3$4}'`redhat_version=`cat /etc/redhat-release | grep "release" | awk '{print $6}'`redhat_core=`cat /proc/version | grep "version" | awk '{print $3}'`redis_server=`systemctl status redis.service | grep "Active" | awk '{print $2}'`redis_version=`/opt/redis/bin/redis-cli -v | grep "redis" | awk '{print $2}'`redis_port=`netstat -lntp | grep "redis-server" | awk '{print $4}'`curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXX' \\-H 'Content-Type: application/json' \\-d '{"msgtype": "markdown","markdown": {"content": " system check <font color=\\"info\\"> complete </font> \\n> Host IP Address \\n[http://'$host_IP'](http://'$host_IP') \\n> Hardware information \\nhostSN:<font color=\\"info\\"> '$host_ID' </font> \\nCPU_Model:<font color=\\"info\\"> '$CPU_Model' </font> \\nmemory_Size:<font color=\\"info\\"> '$memory_Size' </font> \\nDisk_size:<font color=\\"info\\"> '$Disk_size' </font> \\nSystem_version:<font color=\\"info\\"> '$redhat_version' </font> \\nsystem_core:<font color=\\"info\\"> '$redhat_core' </font> \\n> redis install \\nredis_version:<font color=\\"info\\"> '$redis_version' </font> \\nredis_server:<font color=\\"info\\"> '$redis_server' </font> \\nredis_port:<font color=\\"info\\"> '$redis_port' </font> \\n",}}'
}function main (){
install_redis
Deployment_completion_notification
}main
执行安装
sh /redis_install.sh
企业微信通知
远程连接redis
- 密码 Report@123
- IP 地址
- 端口 6379