纯手工打造redis线上生产级别集群

环境配置: 

三台centos6.5虚拟机  172.20.10.2  172.20.10.3  172.20.10.4

redis: linux版本 redis-3.2.8.tar.gz

ruby: ruby-2.6.5.tar.tar 因为集群的启动脚本是基于ruby语言。所以要安装ruby环境。版本不能太低。

tcl: tcl8.6.1-src.tar.gz redis的make命令依赖该tcl环境。需要提前安装

perl: perl-5.16.1安装一下perl环境

———————————————————我是分割线———————————————————————

首先是搭建一个单机版的redis。这个操作就比较简单了。然后在单机版的基础上进行扩展。

扩展步骤:

在三台机器上启动6个redis实例

(1)在eshop-cache03上部署目录

/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)

(2)编写配置文件

redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave,最少的要求

正式环境下,建议都是说在6台机器上去搭建,至少3台机器

保证,每个master都跟自己的slave不在同一台机器上,如果是6台自然更好,一个master+一个slave就死了

3台机器去搭建6个redis实例的redis cluster

mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
mkdir -p /var/redis/7001

port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize    yes                            
pidfile        /var/run/redis_7001.pid                         
dir         /var/redis/7001        
logfile /var/log/redis/7001.log
bind 192.168.31.187        
appendonly yes

至少要用3个master节点启动,每个master加一个slave节点,先选择6个节点,启动6个实例

将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf

(3)准备生产环境的启动脚本

在/etc/init.d下,放6个启动脚本,分别为: redis_7001, redis_7002, redis_7003, redis_7004, redis_7005, redis_7006

每个启动脚本内,都修改对应的端口号

(4)分别在3台机器上,启动6个redis实例

将每个配置文件中的slaveof给删除

3、创建集群

下面方框内的内容废弃掉

=======================================================================
下面方框内的内容废弃掉
下面方框内的内容废弃掉
下面方框内的内容废弃掉
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -zxvf ruby-2.3.1.tar.gz
./configure -prefix=/usr/local/ruby
make && make install
cd /usr/local/ruby
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin

wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l ./redis-3.3.0.gem
gem list --check redis gem

=======================================================================

因为,以前比如公司里面搭建集群,公司里的机器的环境,运维会帮你做好很多事情

在讲课的话,我们手工用从零开始装的linux虚拟机去搭建,那肯定会碰到各种各样的问题

yum install -y ruby
yum install -y rubygems
执行第三部可能会报错解决办法在下面
gem install redis
报错信息如下:
ERROR:  Loading command: install (LoadError)
        cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass
    
解决方法:
安装ruby的lib包
yum install zlib-devel
cd /usr/ruby-2.3.1/ext/zlib
ruby extconf.rb
make && make install

报错报错信息如下:
ERROR:  While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources    
解决办法:
1. yum install openssl-devel -y

2. 在ruby安装包/root/ruby-2.4.1/ext/openssl,执行ruby ./extconf.rb

3.执行make,若出现make: *** No rule to make target `/include/ruby.h', needed by `ossl.o'.? Stop.;在Makefile顶部中的增加top_srcdir = ../..

4.执行make install

ERROR: While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
原因:缺少openssl包。下载一个 地址:http://www.openssl.org/source/    

[root@localhost src]# tar -xzvf openssl-1.0.1s.tar.gz
[root@localhost src]# cd openssl-1.0.1s
[root@localhost openssl-1.0.1s]# ./config -fPIC --prefix=/usr/local/openssl enable-shared
[root@localhost openssl-1.0.1s]# ./config -t
[root@localhost openssl-1.0.1s]# make && make install

 


cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin

redis-trib.rb create --replicas 1 192.168.31.187:7001 192.168.31.187:7002 192.168.31.19:7003 192.168.31.19:7004 192.168.31.227:7005 192.168.31.227:7006
redis-trib.rb create --replicas 1 172.20.10.2:7001 172.20.10.2:7002 172.20.10.3:7003 172.20.10.3:7004 172.20.10.4:7005 172.20.10.4:7006
报错:不能连接到Redis服务器比如说7001这台机器
解决办法:
find ./ -name client.rb
修改类似路径:./local/ruby/lib/ruby/gems/2.3.0/gems/redis-4.1.3/lib/redis/client.rb
修改password。password要加上双引号。简直坑死你爹我
Adding replica 192.168.2.103:7004 to 192.168.2.102:7001
Adding replica 192.168.2.102:7002 to 192.168.2.103:7003
Adding replica 192.168.2.100:7006 to 192.168.2.100:7005

Using 3 masters:
172.20.10.2:7001
172.20.10.3:7003
172.20.10.4:7005
Adding replica 172.20.10.3:7004 to 172.20.10.2:7001
Adding replica 172.20.10.2:7002 to 172.20.10.3:7003
Adding replica 172.20.10.4:7006 to 172.20.10.4:7005

--replicas: 每个master有几个slave

6台机器,3个master,3个slave,尽量自己让master和slave不在一台机器上

yes

redis-trib.rb check 192.168.31.187:7001

redis-trib.rb check 172.20.10.2:7001

——---------------------------------------中间遇到的一些问题。都有响应的解决办法。自己一点一点查资料。找解决办法然后解决-----------------------------------------------------------

成功启动redis集群:

纯手工打造redis线上生产级别集群_第1张图片

你可能感兴趣的:(redis集群)