需求:
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
或者这样也可以
启动节点:(举例)
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_host
和slave_port
是需要添加的从节点的IP和端口,master_host
和master_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_host
和node_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