redis集群脚本
#!/bin/bash
# 时间:2021年5月19日15点05分
# 项目:单主机多实例的redis集群快速部署
# 最新修改时间:2021年5月31日12点01分
# 修改:简化屏幕输出
# 1.创建目录,三个redis实例
groupadd -g 1000 redis &>/dev/null
useradd redis -u 1000 -g 1000 -M -s /sbin/nologin &>/dev/null
mkdir -p /opt/redis_cluster/redis_{6379..6381}/{conf,pid,logs}
mkdir -p /data/redis_cluster/redis_{6379..6381}
chown -R redis:redis /data/redis* &>/dev/null
chown -R redis:redis /opt/redis* &>/dev/null
# 2.下载redis的源码包
cd /usr/local/src/
if [ ! -f "redis-5.0.7.tar.gz" ];then
wget http://download.redis.io/releases/redis-5.0.7.tar.gz &>/dev/null
tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
else
tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
fi
# 3.创建软连接
cd /opt/redis_cluster/
ln -s redis-5.0.7 redis &>/dev/null
# 4.生成可执行的二进制文件并将其复制到/usr/bin下
cd redis
make &>/dev/null
make install &>/dev/null
# #############如何生成redis的配置文件#############
# 默认的配置文件在redis的目录下名为redis.conf
# 想要自动生成redis的配置文件可以进行一下的操作:
# cd utils
# ./install_server.sh &>/dev/null
# ################################################
# 5.自定义redis的配置文件
cd
cat > /opt/redis_cluster/redis_6379/conf/redis_6379.conf <<EOF
bind `ifconfig eth0|awk 'NR==2{print $2}'`
port 6379
daemonize yes
pidfile "/opt/redis_cluster/redis_6379/pid/redis_6379.pid"
logfile "/opt/redis_cluster/redis_6379/logs/redis_6379.log"
dbfilename "redis_6379.rdb"
dir "/data/redis_cluster/redis_6379/"
save 900 1
save 300 10
save 60 10000
# 单节点不需要加入一下信息
cluster-enabled yes
cluster-config-file nodes_6379.conf
cluster-node-timeout 15000
EOF
# 6.为其他多实例创建配置文件
cp /opt/redis_cluster/redis_6379/conf/redis_6379.conf /opt/redis_cluster/redis_6380/conf/redis_6380.conf
cp /opt/redis_cluster/redis_6379/conf/redis_6379.conf /opt/redis_cluster/redis_6381/conf/redis_6381.conf
sed -i s/6379/6380/g /opt/redis_cluster/redis_6380/conf/redis_6380.conf
sed -i s/6379/6381/g /opt/redis_cluster/redis_6381/conf/redis_6381.conf
# 7.启动所有的redis
redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf
# 8.system启动配置
cat >/usr/lib/systemd/system/redis-master.service<<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli -h $(ifconfig eth0|awk 'NR==2{print $2}') -p 6379 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
# 9.初始化集群环境
redis-cli -h 192.168.66.66 -p 6379 FLUSHALL
redis-cli -h 192.168.66.66 -p 6379 CLUSTER RESET
redis-cli -h 192.168.66.66 -p 6380 FLUSHALL
redis-cli -h 192.168.66.66 -p 6380 CLUSTER RESET
redis-cli -h 192.168.66.66 -p 6381 FLUSHALL
redis-cli -h 192.168.66.66 -p 6381 CLUSTER RESET
# 10.创建集群
echo yes | redis-cli --cluster create 192.168.66.66:6379 192.168.66.66:6380 192.168.66.66:6381
# 11.查看集群节点信息
redis-cli -c -h 192.168.66.66 -p 6379 cluster nodes
sleep 5
redis-cli -c -h 192.168.66.66 -p 6379 cluster info
# ################################脚本完成################################