目录
概述
1. 手动下载并安装redis cluster
1.1下载
1.2 启动
1.3创建集群故障
1.3.2 重新创建集群
1.4 验证正确性
2. Redis.conf配置
3. 环境变量配置
4. 免密ssh
4.1 Linux下生成密钥
4.2 3台机器公钥配置
4.3 Linux免密设置流程
5. 设置公钥访问(不用设置)
概述
若要配置集群,最好先打通服务器之间免密访问,参考4.免密ssh配置
redis.conf配置参考 2.0 redis.conf配置
1. 手动下载并安装redis cluster
1.1下载
创建3台linux服务器,使用交互模式。
yum -y install gcc automake autoconf libtool make
mkdir /usr/local/redis
cd /usr/local/redis
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zvxf redis-5.0.3.tar.gz
make PREFIX=/usr/local/redis/inredis install
mkdir -p cluster/6379
mkdir -p cluster/6380
cp redis-5.0.3/redis.conf cluster/6379/redis.conf
vi /usr/local/redis/cluster/6379/redis.conf
scp -r cluster/6379/redis.conf root@10.39.52.70:/usr/local/redis/cluster/6379/redis.conf
scp -r cluster/6379/redis.conf root@10.39.52.51:/usr/local/redis/cluster/6379/redis.conf
scp -r cluster/6380/redis.conf root@10.39.52.51:/usr/local/redis/cluster/6380/redis.conf
scp -r cluster/6380/redis.conf root@10.39.52.70:/usr/local/redis/cluster/6380/redis.conf
cp -r cluster/6379/redis.conf cluster/6380/redis.conf
1.2 启动
./redis-server /usr/local/redis/cluster/6379/redis.conf
./redis-server /usr/local/redis/cluster/6380/redis.conf
创建集群(可以采用ruby方式,如下)
./redis-cli --cluster create 10.39.52.51:6379 10.39.52.51:6380 10.39.52.69:6379 10.39.52.69:6380 10.39.52.70:6379 10.39.52.70:6380 --cluster-replicas 1
1.3创建集群故障
此时,若提示
说明没有开通集群总线端口
redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000
如redis端口为6379
则集群总线端口为16379
故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口
1.3.2 重新创建集群
需要停止所有redis,并删除/usr/local/redis/cluster/6379/nodes-6379.conf及6380中此文件
重新运行redis,并执行创建集群命令
1.4 验证正确性
cluster nodes
fail 表示节点已经关闭
master 表示该节点为主节点
slave 表示该节点为从节点
redis-cli --cluster check 127.0.0.1:7000 #填写任意节点即可 会带出所有的
2. Redis.conf配置
修改文件内容如下:
bind 10.39.52.69
port 6379
# 后台运行
daemonize yes
# 修改pid进程文件名,以端口号命名 pidfile /var/run/redis-6379.pid
# 修改日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/cluster/6379/redis.log
# 修改数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/cluster/6379/
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes-6379.conf
# 配置集群节点的超时时间,可改可不改
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变就记录日志
appendfsync always
3. 环境变量配置
export REDIS_HOME=/usr/local/redis/cluster
export PATH=$REDIS_HOME/bin:$PATH
source /etc/profile
4. 免密ssh
配置3台服务器,相互之间免密访问
- xx.39.52.xx
- xx.39.52.xx
- xx.39.52.xx
4.1 Linux下生成密钥
使用交互方式,3台机器如下操作
1. 查看ssh-keygen的命令手册
man ssh-keygen
2. 生成秘钥
ssh-keygen -t rsa
遇到停顿直接点回车即可
3. 在根目录下/root/会生成.ssh目录
4. 查看公钥,并拷贝(3台都要拷贝)
cat id_rsa.pub
4.2 3台机器公钥配置
- 若authorized_keys 文件不存在,手工创建
- 3台机器的公钥,相互配置粘贴到其他2台机器的authorized_keys
- .ssh目录的权限必须是700
chmod 700 .ssh
- 授权列表authorized_keys的权限必须是600
chmod 600 authorized_keys
设置完成即可。
* authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥(初始不存在该文件) *
* id_rsa : 生成的私钥文件 *
* id_rsa.pub : 生成的公钥文件*
* know_hosts : 已知的主机公钥清单*
4.3 Linux免密设置流程
1.在A上生成公钥私钥。
2.将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
3.Server A向Server B发送一个连接请求。
4.Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
5.Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
6.得到server B发来的消息后,会使用私钥进行解析,然后将机密后的字符串发给server B。
7.接收到机密后的字符串会跟先前生成的字符串进行对比,如果一致就允许免密登陆。
总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开
5. 设置公钥访问(不用设置)
修改免密登录,修改为公钥登录,不在此处配置
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
service sshd restart
systemctl restart sshd.service