目录
一、集群介绍
本次搭建Redis集群使用了IP尾数为100、101的两台服务器,然后按照Redis集群推荐的最低要求启动6个Redis服务实现三主三从的集群架构,安装完成后将会在100机器开启9000、9001、9002三个redis服务,在101机器开启7000、7001、7002三个redis服务,本来想每台机器都开启7000、7001、7002端口,不过发现100机器这几个端口被占用了,所以就换了,不过这个不影响,下面说说redis集群安装步骤:
- 安装redis:不管是安装redis的单机、哨兵还是集群第一步都是安装redis,我这边选择源码编译安装模式
- 下载源码压缩包
- 解压并编译源码
- 启动测试
- 配置redis集群:两台机器配置拥有三主三从共6个服务的redis集群
- 新建集群配置文件redis.conf:这个文件将填写一些集群必要的配置;
- 配置防火墙白名单:将redis集群需要用到的端口加入到ip白名单访问;
- 启动所有redis服务:这里将创建redis用户,并使用redis用户启动redis;
- 集群创建:所有redis启动成功后,只需要在任何一个redis执行创建redis集群即可完成集群搭建;
- 集群验证:从任意一个redis服务登录redis集群中,并通过存储内容验证集群;
- 集群状态查看:这里可以查看到6台redis的主从分布情况;
- 集群安装为服务:redis集群创建一次后,每次redis启动会自动加入到集群中,所以启动所有redis服务即代表启动集群。
二、安装Redis
2.1、下载源码压缩包
下载源码文件可以在linux命令行中输入下面命令,也可以在自己电脑上下载好源码文件,并通过ftp工具上传到服务中。
wget https://download.redis.io/redis-stable.tar.gz
2.2、解压并编译源码
编译源码,首先需要解压源码文件,然后进入源码根目录,然后执行make命令:
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
如果编译成功,你会发现目录下会生成src目录,并且在src目录下包含以下两个二进制文件:
- redis-server: 服务器文件
- redis-cli: 是与redis实现通讯的命令接口程序
安装二进制文件到**/usr/local/bin**目录下,执行:
make install
2.3、启动测试
测试需要新增启动用户,然后给启动用户授权目录权限,然后就是启动redis服务端,没报错就算启动成功
adduser redis
chown -R redis ./redis-stable
su -c 'redis-server' redis
三、Redis集群安装
3.1、新建集群配置文件redis.conf
- 为了方便管理,这里我在
/usr/local
目录下创建一个集群文件夹,然后在文件夹里面创建端口名称的文件夹,命令如下:
cd /usr/local
mkdir redis-cluster
cd redis-cluster
# 100机器
mkdir 9000 9001 9002
# 101机器
# mkdir 7000 7001 7002
- 在9000文件夹下新建一个集群配置文件redis.conf,配置文件内容如下**【其余5个文件夹下重复此步骤,只需修改bind和port内容】**:
# 绑定IP
bind 192.168.0.100 -::1
port 9000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
masterauth chKwn#GNozw&
requirepass chKwn#GNozw&
3.2、配置防火墙白名单
redis集群中有两个必要重要的通讯端口,分别是配置文件中的port和port+10000端口,本次搭建集群使用了两台服务,所以搭建集群时必须保证redis集群使用到的端口可以互相访问,保证两台机器互相访问可以是关闭防火墙,也可以是设置白名单,这里选择设置白名单,具体配置过程如下:
- 100机器执行以下命令配置IP白名单:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="9000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="19000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="9001" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="19001" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="9002" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.101" port protocol="tcp" port="19002" accept"
firewall-cmd --reload
- 101机器执行以下命令配置IP白名单:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="7000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="17000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="7001" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="17001" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="7002" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.100" port protocol="tcp" port="17002" accept"
firewall-cmd --reload
3.3、启动所有redis服务
- 创建启动命令集文件,执行命令
vi /usr/local/redis-cluster/redis-cluster-start.sh
,并填写如下内容:
cd /usr/local/redis-cluster/9000
redis-server redis.conf &
cd /usr/local/redis-cluster/9001
redis-server redis.conf &
cd /usr/local/redis-cluster/9002
redis-server redis.conf &
以上是100的配置,101机器只需要修改响应的端口路径即可。
- 启动redis服务
sh /usr/local/redis-cluster/redis-cluster-start.sh
3.4、集群创建
集群创建只需要在其中一台服务器执行即可,具体创建命令如下:
redis-cli --cluster create 192.168.0.100:9000 192.168.0.100:9001 192.168.0.100:9002 \
192.168.0.101:7000 192.168.0.101:7001 192.168.0.101:7002 \
--cluster-replicas 1 -a 'chKwn#GNozw&'
- –cluster-replicas 1:这里的1代表为每个master节点分配1个从节点;
- -a ‘chKwn#GNozw&’:这里配置的是密码,密码最好用单引号括住,否则密码包含特殊字符时会出现密码错误的异常,我这里就包含了&,如果不用单引号括住,linux会以为&不是密码的一部分而是代表后台运行,最终导致密码有误的提示,如没有redis没有配置密码则创建集群时不需要该命令;
3.5、集群验证
其实集群创建命令没有异常即代表成功,不过我们也可以通过登录和存储值来验证
redis-cli -c -h 192.168.0.100 -p 9000
登录集群只需要选择其中一个服务,然后加上 -c 代表集群模式登录即可,登录成功之后可以多设置一些内容,设置过程中会发现值会自动保存到不同的redis服务中。
3.6、集群状态查看
redis-cli -c -h 192.168.0.100 -p 9000 -a 'chKwn#GNozw&' cluster nodes
3.7、集群安装为服务
- 创建Redis集群服务,执行命令
vi /usr/lib/systemd/system/redis-cluster.service
,并填写如下脚本:
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
ExecStart=sh /usr/local/redis-cluster/redis-cluster-start.sh
PrivateTmp=true
User=redis
[Install]
WantedBy=default.target
/usr/local/redis-cluster/redis-cluster-start.sh
是启动redis集的脚本,在启动服务阶段已创建。
- 服务启停命令
systemctl start redis-cluster.service
systemctl stop redis-cluster.service
systemctl enable redis-cluster.service
到此redis集群就算完成了,收工。