在两台服务器上快速安装redis集群3主3从

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。在两台服务器上快速安装redis集群3主3从,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

需求:

10.10.249.50的root密码111111

10.10.249.51的root密码111111

在10.10.249.50和10.10.249.51上面搭建redis集群,要求3主3从

10.10.249.50上面主端口号7001,7002,7003

10.10.249.51上面从端口号7004,7005,7006

redis密码统一为123456

安装在/app/tools/redis下,并且安装完以后需要给新建的redis用户可读可写可执行的的权限

开机都不自启,需要优化一下

前提:

两台均已安装gcc,用root用户执行

yum install gcc

在10.10.249.50上执行,用root用户执行

#!/bin/bash

# 安装Redis
mkdir -p /app/tools/redis
cd /app/tools/redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7
make && make PREFIX=/app/tools/redis install
cd /app/tools/redis
rm -rf redis-5.0.7

# 添加环境变量
export PATH=/app/tools/redis/bin:$PATH


# 创建配置文件
for port in {7001..7003}
do
    mkdir -p $port
    echo "
    bind 0.0.0.0
    protected-mode no
    port $port
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    requirepass 123456
    masterauth 123456
    " > ./$port/redis.conf
done

# 启动Redis实例
for port in {7001..7003}
do
    cd /app/tools/redis/$port
    nohup redis-server ./redis.conf > ./redis.log 2>&1 &
done

执行完以后ps -ef看有没有redis进程在运行

在10.10.249.51上执行

#!/bin/bash

# 安装Redis
mkdir -p /app/tools/redis
cd /app/tools/redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7
make && make PREFIX=/app/tools/redis install
cd /app/tools/redis
rm -rf redis-5.0.7

# 添加环境变量
export PATH=/app/tools/redis/bin:$PATH


# 创建配置文件
for port in {7004..7006}
do
    mkdir -p $port
    echo "
    bind 0.0.0.0
    protected-mode no
    port $port
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    requirepass 123456
    masterauth  123456  
    " > ./$port/redis.conf
done

# 启动Redis实例
for port in {7004..7006}
do
    cd /app/tools/redis/$port
    nohup redis-server ./redis.conf > ./redis.log 2>&1 &
done

执行完以后ps -ef看有没有redis进程在运行

在10.10.249.50上执行

# 创建Redis集群
cd /app/tools/redis/7001
redis-cli --cluster create 10.10.249.50:7001 10.10.249.50:7002 10.10.249.50:7003 10.10.249.51:7004 10.10.249.51:7005 10.10.249.51:7006 --cluster-replicas 1 -a 123456

说明:

`nohup redis-server ./redis.conf > ./redis.log 2>&1 &`命令可以将Redis以后台守护进程方式运行,并且将运行日志输出到`redis.log`文件中。该命令的含义如下:

– `nohup`命令:将进程放入后台运行,并且避免在关闭终端时将该进程也关闭。

– `redis-server`命令:启动Redis服务。

– `./redis.conf`参数:指定Redis的配置文件。

– `> ./redis.log 2>&1`参数:将Redis运行日志输出到`redis.log`文件中。

– `&`符号:将Redis进程放入后台运行。

需要注意的是,使用该命令需要在Redis安装目录下执行,并且需要将`redis.conf`文件的路径改为相对路径或者绝对路径。

创建用户和组并且把那个安装目录权限由root转向redis用户,两台服务器都需要执行一下

groupadd -g 511 redis

useradd -u 511 -g redis redis

passwd redis  #更改密码

# 修改文件夹所属用户和权限

chown -R redis:redis /app/tools/redis

chmod -R 755 /app/tools/redis

连接测试:

redis-cli -h 10.10.249.50 -p 7001 -a  密码
127.0.0.1:7001> PING
PONG

或者这样也可以

在两台服务器上快速安装redis集群3主3从

启动节点:(举例)

cd /app/tools/redis/7001
nohup redis-server ./redis.conf > ./redis.log 2>&1 &

其中/usr/local/redis/7001是节点的安装目录,./redis.conf是节点的配置文件路径。

关闭节点:(举例)

redis-cli -h 10.10.249.50 -p 7001 -a 123456 shutdown

需要注意的是,关闭节点会导致节点失效,因此应该谨慎操作。建议在关闭节点之前先进行数据备份,以免数据丢失。

添加节点可以使用如下脚本:

#!/bin/bash

# 从节点所在的服务器信息
slave_host=10.10.249.51
slave_port=7007

# 主节点信息
master_host=10.10.249.50
master_port=7001

# 添加从节点到主节点
redis-cli -h $master_host -p $master_port --cluster add-node $slave_host:$slave_port $master_host:$master_port --cluster-slave --cluster-master-id $(redis-cli -h $master_host -p $master_port cluster nodes | grep master | awk '{print $1}' | head -n 1)

其中,slave_hostslave_port是需要添加的从节点的IP和端口,master_hostmaster_port是当前Redis集群中已存在的一个主节点的IP和端口。该脚本的含义是将新的从节点添加到已存在的Redis集群中,并将其设置为给定主节点的从节点。需要注意的是,这个脚本需要在已存在的Redis集群中的任意一个节点上运行。

删除节点可以使用如下脚本:

#!/bin/bash

# 要删除的节点信息
node_host=10.10.249.50
node_port=7001

# 获取集群节点信息
cluster_nodes=$(redis-cli --cluster info | grep -iE "^\d+\s+${node_host}:${node_port}" | awk '{print $1}')

# 从集群中删除节点
for node_id in $cluster_nodes; do
    redis-cli --cluster del-node ${node_host}:${node_port} ${node_id}
done

其中,node_hostnode_port是要删除的节点的IP和端口。该脚本的含义是从Redis集群中删除指定的节点,需要注意的是,这个脚本需要在已存在的Redis集群中的任意一个节点上运行。

加入开机自启:

可以将启动 Redis 的脚本加入开机自启动项,可以使用如下脚本:

在 10.10.249.50 上执行:

cat > /etc/systemd/system/redis@.service <<EOF 
[Unit] Description=Redis 
After=network.target

[Service] 
Type=forking 
User=redis Group=redis 
LimitNOFILE=1000000 
LimitNPROC=1000000 
LimitCORE=infinity 
ExecStart=/app/tools/redis/%i/redis-server 
/app/tools/redis/%i/redis.conf 
ExecReload=/bin/kill -USR2 $MAINPID 
ExecStop=/bin/kill -SIGINT $MAINPID 
Restart=always

[Install] 
WantedBy=multi-user.target 
EOF

systemctl daemon-reload

for port in {7001..7003} 
do 
systemctl enable redis@$port.service 
done

在 10.10.249.51 上执行:

cat > /etc/systemd/system/redis@.service <<EOF 
[Unit] Description=Redis 
After=network.target

[Service] 
Type=forking 
User=redis Group=redis 
LimitNOFILE=1000000 
LimitNPROC=1000000 
LimitCORE=infinity 
ExecStart=/app/tools/redis/%i/redis-server 
/app/tools/redis/%i/redis.conf 
ExecReload=/bin/kill -USR2 $MAINPID 
ExecStop=/bin/kill -SIGINT $MAINPID 
Restart=always

[Install] 
WantedBy=multi-user.target 
EOF

systemctl daemon-reload

for port in {7004..7006} 
do 
systemctl enable redis@$port.service 
done

这样就可以将 Redis 加入开机自启动项了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192283.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!