环境准备
centos1:192.168.138.131
centos2:192.168.138.132
centos3:192.168.138.133
每一台机器ip都要环境准备
1、环境准备
Redis-trib.rb 需要ruby环境,先安装ruby环境
yum -y install zlib ruby rubygems
安装ruby的redis
gem install redis
升级ruby安装的软件
gem update --system
gem update
查看ruby安装的软件的结合
gem list
2 执行gem install redis(客户端)报错要求ruby版本2.0.0以上 则需要升级ruby版本在安装gem install redis
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
ruby --version
rvm remove 2.0.0
rvm list known
rvm install 2.3.3
rvm use 2.3.3
gem install redis
每一台机器安装redis 4.0.9.tar.gz
cd /home
tar -zxvf redis-3.2.8.tar.gz
cd redis-4.0.9/src
make && make install
每台机器redis 4.0.9.tar.gz 设置集群的配置 在131,132,133集群上进行一下操作:
cd /redis-4.0.9
mkdir redis_cluster/
cd redis_cluster/
cp redis.conf redis_cluster/redis_6379.conf
cp redis.conf redis_cluster/redis_6380.conf
每台机器修改redis的配置文件(6380的也需要)
cd redis_cluster/
cat redis_6379.conf | grep 6379
sed -i 's/6379/6380/g' /home/redis-4.0.9/redis_cluster/redis_6379.conf
port 6379
#端口
bind 192.168.138.131
sed -i 's/127.0.0.1/192.168.138.131/g' /home/redis-4.0.9/redis_cluster/redis_6379.conf
#默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes
#redis后台运行
pidfile /var/run/redis_6379.pid #该行加上注解
#pidfile文件对应6379
cluster-enabled yes
#开启集群 把注释#去掉
cluster-config-file nodes_6379.conf
#集群的配置 配置文件首次启动自动生成 6379
cluster-node-timeout 15000
#请求超时 默认15秒,可自行设置
appendonly yes
开启每一台机器上的redis的服务
redis-server /home/redis-4.0.9/redis_cluster/redis_6379.conf
redis-server /home/redis-4.0.9/redis_cluster/redis_6380.conf
查看端口信息
netstat -ntlp | grep redis
防火墙开端口(每台机器)
firewall-cmd --permanent --zone=public --add-port=6379/tcp
firewall-cmd --permanent --zone=public --add-port=6380/tcp
firewall-cmd --permanent --zone=public --add-port=16379/tcp
firewall-cmd --permanent --zone=public --add-port=16380/tcp
systemctl restart firewalld.service
创建集群(至少6个节点)某一台机器上
cd /home/redis-4.0.9/src
./redis-trib.rb create --replicas 1 192.168.138.131:6379 192.168.138.131:6380 192.168.138.132:6379 192.168.138.132:6380 192.168.138.133:6379 192.168.138.133:6380
出现以下信息为成功:
[OK] All nodes agree about slots configuration.
[OK] All 16384 slots covered.
每个节点集群(2个节点)
redis-cli -h 192.168.138.131 -c -p 6379
config set masterauth guest
config set requirepass guest
config rewrite
注意事项:
1.如果是使用redis-trib.rb工具构建集群,集群构建完成前不要配置密码,集群构建完毕再通过config set + config rewrite命令逐个机器设置密码
2.如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题,可以模拟并观察日志
3.各个节点的密码都必须一致,否则Redirected就会失败
只有执行# redis-cli -h 192.168.138.131 -p 6379 -c -a 'guest' 这样带认证的才能成功登陆到redis上。
测试集群(客户端)
redis-cli -h 192.168.138.131 -c -p 6379 -a 'guest'
SET xiaozhang man
redis-cli -h 192.168.5.203 -c -p 6379
keys *
get xiaozhang
重启客户端与服务
redis-cli -h 192.168.138.131 -p 6379 -c -a guest shutdown
pkill -9 redis
redis-server /home/redis-4.0.9/redis_cluster/redis_6379.conf
redis-server /home/redis-4.0.9/redis_cluster/redis_6380.conf
检查集群(每个节点都要检查)
cd /home/redis-4.0.9/src
./redis-trib.rb check 192.168.138.131:6379 (每个节点都要检查)
报错:[ERR] Sorry, can't connect to node 192.168.138.131:6379
(每一台ip机器修改redis客户端密码)缺少密码,修改如下:
gem environment #查看gem的环境
cd /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.1/lib/redis
vi client.rb(每台机器)
#vi /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.1/lib/redis/client.rb
找到 :password => nil,把nil改为"guest"
重启集群后在执行check集群检查,如果报如下错误:
[WARNING] Node 192.168.5.204:6379 has slots in importing state (6387).
[WARNING] The following slots are open: 6387
请执行:
cd /home/redis-4.0.9/src
./redis-trib.rb fix 192.168.138.131:6379