目录
准备
- vm虚拟机 (也可以使用wind10上有个系统自带的虚拟机)
- FinalShell 国产的远程工具
- redis-6.2.4
- centOs 7 系统
前提
- 安装好vm虚拟机
- 安装好FinalShell
- vm上创建3个centOs 7 系统的虚拟机
说明
在vm中创建3个centOs7的虚拟机来安装redis,redis集群最少需要3个redis。因为redis底层的判断宕机的策略是当所有节点对某个节点投票超过半数时,就认为该节点不可用。
三台虚拟机的IP地址分别如下:
主节点(master):192.168.83.139 端口:6379
从节点1(slave):192.168.83.140 端口:6379
从节点2(slave):192.168.83.141 端口:6379
安装redis
在132.168.83.139服务器上创建一个安装redis的脚本文件,redisInstall.sh (更多脚本)
#!/bin/bash
# 打开IP地址的显示
cd /etc/sysconfig/network-scripts/
sed -i "/^ONBOOT=/s/no/yes/" ifcfg-ens33
service network restart
ip addr
# 安装 gcc-c++ 依赖
yum install gcc-c++ -y
# 安装vim
yum install vim-enhanced
#安装wget
yum -y install wget
#开始安装redis
if [ ! -d '/usr/local/redis' ]
then
mkdir /usr/local/redis
else
rm -rf /usr/local/redis
mkdir /usr/local/redis
fi
cd /usr/local/redis
wget https://download.redis.io/releases/redis-6.2.4.tar.gz
tar xzf redis-6.2.4.tar.gz
cd redis-6.2.4
make
cd src
./redis-server &
./redis-cli
安装结束之后会在
/usr/local/ 下存在redis的文件夹,此为安装路径。
192.168.83.139上安装成功后,将脚本redisInstall.sh 用命令拷贝一份到另外两台服务器上。
# 格式: scp 文件名 root@服务器ip:目的服务器存放文件的地址
#例如:将 redisInstall.sh 拷贝到192.168.83.140 和 192.168.83.141上
scp redisInstall.sh root@192.168.83.140:/home/admin/script-sh/
scp redisInstall.sh root@192.168.83.141:/home/admin/script-sh/
拷贝完成之后分别在192.168.83.140和192.168.83.141上用redisInstall.sh 脚本安装redis。
修改redis配置
修改主节点redis的配置
-
用vim 打开 /usr/local/redis/redis-6.2.4/redis.conf 文件
-
找到 bind 的配置,该配置为允许远程访问的ip
例如:主节点(192.168.83.139)允许两个从节点(192.168.83.140和192.168.83.141访问),则配置如下:
bind 192.168.83.140 192.168.83.141
# 或者配置为 0.0.0.0,表示所有IP都可访问
# bind 0.0.0.0
- 找到端口,改为6379,(端口默认6379)
port 6379
- 关闭保护模式,,使外部可访问。no表示关闭
protected-mode no
- 设置redis为后台启动
daemonize yes
- 修改redis的日志存放地址
logfile '/usr/local/redis/redis-6.2.4/logs/redis.log'
- 设置 redis 连接密码
# 格式: requirepass 密码
requirepass root
- 设置从节点访问主节点的连接密码
# 格式: masterauth 密码
masterauth root
- 修改完成之后保存退出配置文件
- 在redis的安装目录下创建存放日志文件的文件夹和文件 (与步骤6中配置对应) 。
在 /usr/local/redis/redis-6.2.4/ 下创建文件夹logs ,在logs文件夹下创建文件redis.log - 运行下面的脚本文件open6379Port.sh 使服务器的防火墙开放6379端口
#!/bin/bash
firewall-cmd --add-port=6379/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
到此配置完成
修改从节点的配置
使用 scp 命令将主节点的redis.conf拷贝到从节点的配置文件所在目录下覆盖原来的配置文件。
从节点的配置在拷贝过来的主节点的配置基础上进行修改。
打开拷贝过来的的配置文件。
根据主节点的修改步骤,到步骤2 的时候,修改所绑定的IP地址。
例如:当前从节点的IP为192.168.83.140,则步骤2中配置改为
bind 192.168.83.139 192.168.83.141
在步骤8之后,修改以下配置,该配置主要用于标识主节点的IP和端口
replicaof 192.168.83.139 6379
其余的步骤和主节点一致。
重启redis
- 在3个服务器上使用命令查看已经运行的redis,并用kill -9 将其关闭
ps -ef|grep redis
kill -9 redis进程号
- 在3个服务器中进入 /usr/local/redis/redis-6.2.4/src/ 目录,使用以下命令重启redis
./redis-server ../redis.conf
提示:启动后可在 /usr/local/redis/redis-6.2.4/logs/ 下查看日志文件。
验证集群
验证方式
在集群中的节点上创建一个键值,若集群搭建成功,则在其他节点上也能获取到此键值。
主节点
- 进入**/usr/local/redis/redis-6.2.4/src/** ,使用以下命令进入redis的客户端
./redis-cli
- 进入客户端之后使用命令登录redis
# 格式:auth 在配置的时候requirepass 中配置的密码
auth root
-
测试是否成功登录redis,入下图说明登录成功。
-
在主节点(192.168.83.139)创建一个键值
-
去其他从节点(192.168.83.140和192.168.83.141)中登录redis查看。
登录步骤为 步骤1,步骤2,步骤3。
从节点192.168.83.140中能获取到主节点设置的键值。如下图:
从节点192.168.83.141中能获取到主节点设置的键值。如下图:
查看节点信息
进入节点的redis-cli界面
# 登录redis 的客户端
./redis-cli -p 6379
# 输入密码
auth root
# 查询节点信息
info replication
说明redis的集群已经搭建成功。
主从集群设置哨兵
说明
哨兵主要用于监控主从结构中的主节点是否宕机,若主节点宕机,则哨兵会从其他从节点中选举节点作为新的主节点。选举完成后,所有从节点连接到新的主节点。
选举规则:
1. 排除不在线的节点
2. 排除与哨兵相应慢的节点
3. 排除与原主节点相应慢的节点
4. 按照权重选择节点
5. 按照序列顺序选择节点
6. …
推荐
哨兵数量推荐为3个以上,且为单数,防止哨兵选择的时候出现选节点票数相同。
哨兵配置步骤
以上面的主从结构为例,添加哨兵。1主2从。
若防火墙开启,需要检查是否开放redis和哨兵需要用到的端口:6379和26379
主节点的哨兵配置
重命名原有的 sentinel.conf 文件为sentinel.conf_bak
# 查看原sentinel.conf中未被注释的配置
cat sentinel.conf | grep -v "#" | grep -v "^$"
新创建名为sentinel.conf 的哨兵配置文件。
vim sentinel.conf
在哨兵配置文件中填入以下内容。
# 设置哨兵以守护进程的方式,后台启动
daemonize yes
# 配置哨兵的日志文件存放地址
logfile "/usr/local/redis/redis-7.0.12/logs/sentinel.log"
# 关闭保护模式
protected-mode no
# 配置哨兵监控的主节点
# 192.168.83.139:为主节点所在机器的IP地址
# 6379:为主节点redis的端口号
# 2 :为哨兵选举主节点的数量,当有2个或以上的哨兵选择某一节点为主节点后,则那个被选中的节点成为新的主节点。
sentinel monitor mymaster 192.168.83.139 6379 2
# 此处填写的是主节点中设置的redis密码,用于哨兵登录redis,必须与redis.conf配置中一致。对应上面的步骤 【7. 设置 redis 连接密码】中设置的值一致。
sentinel auth-pass mymaster root
注意:将此配置分别复制到其他两台服务器上,既3台服务器的哨兵配置是一样的。
启动哨兵
使用以下命令启动哨兵
# redis-sentinel 为安装redis时自带的脚本。与redis-server和redis-cli 同级目录。
# sentinel.conf 为上面自己编写的sentinel配置文件
# 注意:命令执行时注意脚本文件和配置文件的路径
./redis-sentinel sentinel.conf
查看哨兵
使用以下命令进入哨兵的操作界面查看哨兵信息
# 登录哨兵,进入哨兵操作界面
./redis-cli -p 26379
# 查看哨兵信息
info sentinel