实现centos安装redis cluster集群的shell脚本,要求如下: 1、有三台服务器名字为node1, node2 ,node3 已经做好免密登录 2、redis安装包在 node1的/root/software/redis-7.0.5.tar.gz 路径下 3、实现3个master和3个salve,每台机器上2个节点 4、在每台机器上创建 /usr/local/redis/6379 和 /usr/local/redis/6380 存储数据信息, 修改redis.conf文件 , 优化redis.conf配置 5、node2 , node3 没有安装包,需要从node1拷贝过去 6、提供安装,启动,停止,卸载方法,启动集群不用手动指定slot 7、redis每台机器的端口为 6379和6380
时间: 2024-01-07 20:05:20 浏览: 54
以下是一个实现CentOS安装Redis Cluster集群的Shell脚本,满足您的要求:
```bash
#!/bin/bash
# 定义集群配置
REDIS_HOME=/usr/local/redis
REDIS_CONF=redis.conf
REDIS_NODES=redis-nodes.conf
REDIS_PORT1=6379
REDIS_PORT2=6380
REDIS_MASTER1=node1:$REDIS_PORT1
REDIS_MASTER2=node1:$REDIS_PORT2
REDIS_MASTER3=node2:$REDIS_PORT1
REDIS_SLAVE1=node2:$REDIS_PORT2
REDIS_SLAVE2=node3:$REDIS_PORT1
REDIS_SLAVE3=node3:$REDIS_PORT2
# 定义安装包路径和节点列表
REDIS_PACKAGE=/root/software/redis-7.0.5.tar.gz
NODES=(node1 node2 node3)
# 安装Redis
function install_redis() {
for NODE in ${NODES[@]}; do
echo "安装Redis到$NODE..."
ssh $NODE "yum -y install gcc make && cd /root/software && tar -xzvf $REDIS_PACKAGE && cd redis-7.0.5 && make && make install"
echo "完成Redis在$NODE的安装"
done
}
# 拷贝Redis配置文件
function copy_redis_config() {
for NODE in ${NODES[@]}; do
echo "拷贝Redis配置文件到$NODE..."
scp $REDIS_HOME/$REDIS_CONF $NODE:$REDIS_HOME/$REDIS_CONF
ssh $NODE "mkdir -p $REDIS_HOME/$REDIS_PORT1 $REDIS_HOME/$REDIS_PORT2 && cp $REDIS_HOME/$REDIS_CONF $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && cp $REDIS_HOME/$REDIS_CONF $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
echo "完成Redis配置文件在$NODE的拷贝"
done
}
# 修改Redis配置文件
function modify_redis_config() {
for NODE in ${NODES[@]}; do
echo "修改Redis配置文件在$NODE..."
ssh $NODE "sed -i 's/^port 6379$/port $REDIS_PORT1/' $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && sed -i 's/^port 6380$/port $REDIS_PORT2/' $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
ssh $NODE "sed -i 's/^daemonize no$/daemonize yes/' $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && sed -i 's/^daemonize no$/daemonize yes/' $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
ssh $NODE "sed -i 's/^cluster-enabled no$/cluster-enabled yes/' $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && sed -i 's/^cluster-enabled no$/cluster-enabled yes/' $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
ssh $NODE "sed -i 's/^cluster-config-file nodes-6379.conf$/cluster-config-file $REDIS_NODES/' $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && sed -i 's/^cluster-config-file nodes-6379.conf$/cluster-config-file $REDIS_NODES/' $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
ssh $NODE "echo 'cluster-node-timeout 5000' >> $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF && echo 'cluster-node-timeout 5000' >> $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
echo "完成Redis配置文件在$NODE的修改"
done
}
# 启动Redis
function start_redis() {
for NODE in ${NODES[@]}; do
echo "启动Redis在$NODE..."
ssh $NODE "$REDIS_HOME/bin/redis-server $REDIS_HOME/$REDIS_PORT1/$REDIS_CONF"
ssh $NODE "$REDIS_HOME/bin/redis-server $REDIS_HOME/$REDIS_PORT2/$REDIS_CONF"
echo "完成Redis在$NODE的启动"
done
}
# 停止Redis
function stop_redis() {
for NODE in ${NODES[@]}; do
echo "停止Redis在$NODE..."
ssh $NODE "$REDIS_HOME/bin/redis-cli -p $REDIS_PORT1 shutdown"
ssh $NODE "$REDIS_HOME/bin/redis-cli -p $REDIS_PORT2 shutdown"
echo "完成Redis在$NODE的停止"
done
}
# 卸载Redis
function uninstall_redis() {
for NODE in ${NODES[@]}; do
echo "卸载Redis在$NODE..."
ssh $NODE "rm -rf $REDIS_HOME && rm -rf /var/run/redis* && rm -rf /var/log/redis*"
echo "完成Redis在$NODE的卸载"
done
}
# 创建Redis Cluster
function create_redis_cluster() {
echo "创建Redis Cluster..."
ssh node1 "$REDIS_HOME/bin/redis-cli --cluster create $REDIS_MASTER1 $REDIS_MASTER2 $REDIS_MASTER3 $REDIS_SLAVE1 $REDIS_SLAVE2 $REDIS_SLAVE3 --cluster-replicas 1"
echo "完成Redis Cluster的创建"
}
# 执行命令
case $1 in
install)
install_redis
copy_redis_config
modify_redis_config
;;
start)
start_redis
;;
stop)
stop_redis
;;
restart)
stop_redis
start_redis
;;
uninstall)
stop_redis
uninstall_redis
;;
create)
create_redis_cluster
;;
*)
echo "Usage: $0 {install|start|stop|restart|uninstall|create}"
exit 1
esac
exit 0
```
该脚本实现了安装Redis、拷贝配置文件、修改配置文件、启动Redis、停止Redis、卸载Redis和创建Redis Cluster等功能。您可以通过执行`sh redis-cluster.sh install`来安装Redis和拷贝配置文件,执行`sh redis-cluster.sh modify`来修改Redis配置文件,执行`sh redis-cluster.sh start`来启动Redis,执行`sh redis-cluster.sh stop`来停止Redis,执行`sh redis-cluster.sh uninstall`来卸载Redis,执行`sh redis-cluster.sh create`来创建Redis Cluster。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)