CentOS7搭建Redis集群
1.Redis简介
1.1 Redis官网
1.2 Redis代码库
Redis代码库https://github.com/redis/redis
2.安装Redis
2.1 安装说明
因为群投票机制redis要求至少3主3从共6个节点才能组成redis集群,每个主节点至少有一个从节点,测试环境可一台物理上启动6个redis节点,但生产环境至少要准备3台物理机。
这里为了演示,我们使用了三台Centos7虚拟服务器,每台起两个Redis实例,共6个节点来构建Redis集群。
IP | 端口 |
192.168.43.200 | 7001, 7002 |
192.168.43.201 | 7001, 7002 |
192.168.43.202 | 7001, 7002 |
即每台虚拟机启动2个redis服务, 分别使用7001和7002端口
2.2 从代码库下载安装包
代码库 https://github.com/redis/redis/tags 我们安装 redis-6.2.10.tar.gz
然后通过WIN-SCP将安装包上传到虚拟机 /usr/local路径下
2.3 检查GCC版本
所有节点服务器都需要进行以下操作, 编译安装时要求gcc版本未5.3以上版本
先执行gcc -v 查看当前gcc版本
gcc -v
如果提示无gcc,首先需要安装gcc
yum install -y gcc gcc-c++
安装完成后查看gcc版本,Centos版本默认安装的是4.8.5版本的gcc,版本过低
yum install -y centos-release-scl
yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
yum install -y systemd-devel
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
source /etc/profile
升级完成后查看gcc版本
2.4安装Redis
把下载好的文件上传到三个服务器上,我们放到/usr/local目录下
解压:
tar -zxvf redis-6.2.10.tar.gz
创建7001和7002两个文件夹, 并将redis.conf配置文件分别拷贝进这2个文件夹
cd redis-6.2.10/
mkdir {7001,7002}
cd /usr/local/redis-6.2.10
cp redis.conf 7001/redis7001.conf
cp redis.conf 7002/redis7002.conf
下面进行Redis的编译安装, 因Redis版本原因需要安装或者更新tcl版本大于8.5
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
./configure
make
make install
下面进入redis目录执行编译redis need systemd-devel
cd /usr/local/redis-6.2.10/src/
make BUILD_WITH_SYSTEMD=yes USE_SYSTEMD=yes
make install
安装完成后查看redis版本
redis-cli --version
redis-server --version
2.5 创建redis用户并授权
创建redis用户
useradd -s /sbin/nologin redis
chown -R redis: /usr/local/redis-6.2.10
给新建的目录附上访问权限
[root@vector03 redis-6.2.10]# chmod 777 7001
[root@vector03 redis-6.2.10]# chmod 777 7002
2.6 修改redis配置文件
修改7001文件夹下的redis7001.conf配置文件
vi redis7001.conf
bind 0.0.0.0
port 7001
protected-mode no
daemonize no
supervised systemd
pidfile /usr/local/redis609/7001/redis_7001.pid
logfile "/usr/local/redis609/7001/7001.log"
dir /usr/local/redis609/7001/
appendonly yes
appendfilename "appendonly7001.aof"
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
同理修改redis7002.conf, 只需将redis7001.conf复制一份, 将文件中的7001全局替换为7002即可
cd /usr/local/redis-6.2.10/7001
cp redis7001.conf ../7002/
rm -rf redis7002.conf
mv redis7001.conf redis7002.conf
sed -i "s/7001/7002/g" redis7002.conf
同理在另外2台虚拟机也做同样的操作
2.7 使用Systemd管理Redis服务
直接输入命令:
cat > /etc/systemd/system/redis@.service << EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
User=redis
Group=redis
#如果在启动时timeout或者查看状态一直为Activating建议使用默认Type注释掉此参数。如果需要用forking需要配置PIDFile地址 --daemonize yes
Type=notify
ExecStart=/usr/local/bin/redis-server /usr/local/redis-6.2.10/%i/redis%i.conf --daemonize yes --supervised systemd
ExecStop=/usr/local/bin/redis-cli -p %i shutdown
LimitNOFILE=10240
TimeoutStartSec=90s
TimeoutStopSec=90s
Restart=always
[Install]
WantedBy=multi-user.target
EOF
6个Redis实例配置完成后启动服务
systemctl start redis@7001.service
systemctl start redis@7002.service
执行后查看服务状态
systemctl status redis@7001.service
systemctl status redis@7002.service
netstat -lnp|grep redis
以上操作在三台服务器都执行一遍。实例全部启动后 ,在任意服务器上创建redis集群
创建Redis集群
redis-cli --cluster create 192.168.43.200:7001 192.168.200.11:7002 192.168.43.201:7001 192.168.43.201:7002 192.168.43.202:7001 192.168.43.202:7002 --cluster-replicas 1
如果创建失败,检查配置文件和7001,7002目录下的文件权限
查看集群节点
redis-cli -c -h 192.168.200.13 -p 7001 cluster nodes