Redis集群搭建

(我是利用已经安装过redis的主机上进行集群搭建的)

1、要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点

2、创建相关目录,主文件夹是/data,在此文件夹下建立6个子文件夹,名称分别是:8000,8001,8002,8003,8004,8005:

[root@host-10-101-16-201 data]# pwd

/data

[root@host-10-101-16-201 data]# mkdir 8000 8001 8002 8003 8004 8005

[root@host-10-101-16-201 data]# ls

8000  8001  8002  8003  8004  8005  redis-4.0.1  redis-4.0.1.tar.gz  tomcat

3、把Redis源文件里面包含的配置文件redis.conf拷贝一份,存放在8000目录下

[root@host-10-101-16-201 data]# cp redis-4.0.1/redis.conf 8000/

[root@host-10-101-16-201 data]# cd 8000

[root@host-10-101-16-201 8000]# ls

redis.conf

4、使用UE连到这台服务器上去,对redis.conf文件进行修改,修改后的redis.conf文件内容如下(注释在下面一行):

bind 10.101.16.201

# 绑定服务器IP地址

port 8000

# 绑定端口号,必须修改,以此来区分Redis实例

daemonize yes

# 后台运行

pidfile /var/run/redis-8000.pid

# 修改pid进程文件名,以端口号命名

logfile /data/8000/redis.log

# 修改日志文件名称,以端口号为目录来区分

dir /data/8000/

# 修改数据文件存放地址,以端口号为目录名来区分

cluster-enabled yes

# 启用集群

cluster-config-file nodes-8000.conf

# 配置每个节点的配置文件,同样以端口号为名称

cluster-node-timeout 15000

# 配置集群节点的超时时间,可改可不改

appendonly yes

# 启动AOF增量持久化策略

appendfsync always

# 发生改变就记录日志

5、把8000目录下面的redis.conf复制到其他五个目录下面,并且把文件里面的8000分别替换成各自的目录名

[root@host-10-101-16-201 8000]# cp redis.conf ../8001

[root@host-10-101-16-201 8000]# cp redis.conf ../8002

[root@host-10-101-16-201 8000]# cp redis.conf ../8003

[root@host-10-101-16-201 8000]# cp redis.conf ../8004

[root@host-10-101-16-201 8000]# cp redis.conf ../8005

6、根据配置文件启动6个Redis实例:

[root@host-10-101-16-201 8005]# cd ../redis-4.0.1/src/

[root@host-10-101-16-201 src]# pwd

/data/redis-4.0.1/src

[root@host-10-101-16-201 src]# ./redis-server ../../8000/redis.conf

[root@host-10-101-16-201 src]# ./redis-server ../../8001/redis.conf

[root@host-10-101-16-201 src]# ./redis-server ../../8002/redis.conf

[root@host-10-101-16-201 src]# ./redis-server ../../8003/redis.conf

[root@host-10-101-16-201 src]# ./redis-server ../../8004/redis.conf

[root@host-10-101-16-201 src]# ./redis-server ../../8005/redis.conf

[root@host-10-101-16-201 src]# ps -ef |grep redis

root    25515    1  0 10:40 ?        00:00:00 ./redis-server 10.101.16.201:8000 [cluster]

root    25641    1  0 10:40 ?        00:00:00 ./redis-server 10.101.16.201:8001 [cluster]

root    25724    1  0 10:41 ?        00:00:00 ./redis-server 10.101.16.201:8002 [cluster]

root    25747    1  0 10:41 ?        00:00:00 ./redis-server 10.101.16.201:8003 [cluster]

root    25774    1  0 10:41 ?        00:00:00 ./redis-server 10.101.16.201:8004 [cluster]

root    25800    1  0 10:41 ?        00:00:00 ./redis-server 10.101.16.201:8005 [cluster]

7、创建集群,执行redis-trib.rb脚本:

[root@host-10-101-16-201 src]# ruby redis-trib.rb create --replicas 1 10.101.16.201:8000 10.101.16.201:8001 10.101.16.201:8002 10.101.16.201:8003 10.101.16.201:8004 10.101.16.201:8005

-bash: ruby: command not found

(如果本机没有按住ruby则会报错)

8、安装Ruby,下载地址:http://www.ruby-lang.org/en/downloads/,我们安装最新版本:ruby-2.5.3,下载ruby-2.5.3.tar.gz,上传到服务器上

10、解压:tar -zxvf ruby-2.5.3.tar.gz

[root@host-10-101-16-201 data]# ls

8000  8001  8002  8003  8004  8005  redis-4.0.1  redis-4.0.1.tar.gz  ruby-2.5.3  ruby-2.5.3.tar.gz

11、安装ruby:

[root@host-10-101-16-201 ruby-2.5.3]# ./configure

checking for ruby... false

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking target system type... x86_64-pc-linux-gnu

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/data/ruby-2.5.3':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

(没有安装编译器)

12、安装gcc:

[root@host-10-101-16-201 ruby-2.5.3]# yum install gcc

13、再次安装ruby

[root@host-10-101-16-201 ruby-2.5.3]# ./configure

[root@host-10-101-16-201 ruby-2.5.3]# make && make install

[root@host-10-101-16-201 etc]# ruby -v

ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]

14、默认ruby会安装在/usr/local/bin路径下面,配置一下环境变量

# cd /etc

# 打开 profile  修改path的最后添加: export PATH=/usr/local/bin/ruby:$PATH

# source profile

# echo $PATH  看下PATH变量中是否成功加入


15、切到redis目录,继续执行redis-trib.rb脚本:

[root@host-10-101-16-201 src]# pwd

/data/redis-4.0.1/src

[root@host-10-101-16-201 src]# ruby redis-trib.rb create --replicas 1 10.101.16.201:8000 10.101.16.201:8001 10.101.16.201:8002 10.101.16.201:8003 10.101.16.201:8004 10.101.16.201:8005

Traceback (most recent call last):

        2: from redis-trib.rb:25:in `<main>'

        1: from /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'

/usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- redis (LoadError)

16、安装rubygems,最新版本会自动安装:

[root@host-10-101-16-201 src]# yum install rubygems

17、继续执行redis-trib.rb脚本:

[root@host-10-101-16-201 src]# ruby redis-trib.rb create --replicas 1 10.101.16.201:8000 10.101.16.201:8001 10.101.16.201:8002 10.101.16.201:8003 10.101.16.201:8004 10.101.16.201:8005

Traceback (most recent call last):

        2: from redis-trib.rb:25:in `<main>'

        1: from /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'

/usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- redis (LoadError)

(貌似问题没有解决)

18、需要安装redis库:gem install redis

[root@host-10-101-16-201 src]# 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

19、安装zlib-1.2.11:

    网址:http://www.zlib.net/

    下载文件:zlib-1.2.11.tar.gz

    通过FTP上传zlib-1.2.11.tar.gz到 /usr/local目录下,执行如下命令安装:

[root@host-10-101-16-201 data]# ls

8000  8001  8002  8003  8004  8005  redis-4.0.1  redis-4.0.1.tar.gz  ruby-2.5.3  ruby-2.5.3.tar.gz  zlib-1.2.11.tar.gz

[root@host-10-101-16-201 data]# tar -zxvf zlib-1.2.11.tar.gz

[root@host-10-101-16-201 data]# cd zlib-1.2.11

[root@host-10-101-16-201 zlib-1.2.11]# ./configure

[root@host-10-101-16-201 zlib-1.2.11]# make && make install

20、继续安装redis库:gem install redis:

[root@host-10-101-16-201 zlib-1.2.11]# 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

(貌似问题没有解决)

21、在ruby源文件中安装zlib,切换到ruby安装包后解压的目录

[root@host-10-101-16-201 data]# cd ruby-2.5.3/ext/zlib/

[root@host-10-101-16-201 zlib]# pwd

/data/ruby-2.5.3/ext/zlib

[root@host-10-101-16-201 zlib]# ruby extconf.rb --with-zlib-include=/usr/local/include/ --with-zlib-lib=/usr/local/lib/

(/usr/local是zlib默认的安装目录)

[root@host-10-101-16-201 zlib]# make && make install

make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'.  Stop.

22、解决上述报错:

打开ext/zlib/Makefile文件,搜索top_srcdir,找到下面这一行:

zlib.o: $(top_srcdir)/include/ruby.h

修改为:

zlib.o: ../../include/ruby.h


再进行编译安装:

[root@host-10-101-16-201 zlib]# make && make install

23、继续执行命令:gem install redis 

[root@host-10-101-16-201 zlib]# gem install redis

ERROR:  While executing gem ... (Gem::Exception)

    Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

24、安装openssl

下载地址:https://www.openssl.org/source/

[root@host-10-101-16-201 data]# ls

8000  8001  8002  8003  8004  8005  openssl-1.1.1.tar.gz  redis-4.0.1  redis-4.0.1.tar.gz

[root@host-10-101-16-201 data]# tar -xzvf openssl-1.1.1.tar.gz

[root@host-10-101-16-201 data]# cd openssl-1.1.1

[root@host-10-101-16-201 openssl-1.1.1]# ./config -fPIC --prefix=/usr/local/openssl enable-shared

[root@host-10-101-16-201 openssl-1.1.1]# ./config -t5

[root@host-10-101-16-201 openssl-1.1.1]# make && make install

25、继续执行命令:gem install redis 

[root@host-10-101-16-201 openssl-1.1.1]# gem install redis

ERROR:  While executing gem ... (Gem::Exception)

    Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

(貌似问题没有解决)

26、在ruby源文件中安装openssl

[root@host-10-101-16-201 openssl-1.1.1]# cd /data/ruby-2.5.3/ext/openssl/

[root@host-10-101-16-201 openssl]# ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib

备注:/usr/local/openssl是我的openssl安装目录

[root@host-10-101-16-201 openssl]# make && make install

compiling openssl_missing.c

make: *** No rule to make target `/include/ruby.h', needed by `ossl.o'.  Stop.

27、解决上述报错:

打开Makefile文件,将$(top_srcdir)全部替换成:../..

再进行编译安装:

[root@host-10-101-16-201 openssl]# make && make install

28、继续执行命令:gem install redis

[root@host-10-101-16-201 openssl]# gem install redis

Fetching: redis-4.0.3.gem (100%)

Successfully installed redis-4.0.3

Parsing documentation for redis-4.0.3

Installing ri documentation for redis-4.0.3

Done installing documentation for redis after 1 seconds

1 gem installed

29、启动集群:

[root@host-10-101-16-201 src]# pwd

/data/redis-4.0.1/src

[root@host-10-101-16-201 src]# ruby redis-trib.rb create --replicas 1 10.101.16.201:8000 10.101.16.201:8001 10.101.16.201:8002 10.101.16.201:8003 10.101.16.201:8004 10.101.16.201:8005

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

10.101.16.201:8000

10.101.16.201:8001

10.101.16.201:8002

Adding replica 10.101.16.201:8003 to 10.101.16.201:8000

Adding replica 10.101.16.201:8004 to 10.101.16.201:8001

Adding replica 10.101.16.201:8005 to 10.101.16.201:8002

M: 5825f39dc55c7dee5fdb0c726bdef0904c5368e3 10.101.16.201:8000

  slots:0-5460 (5461 slots) master

M: 17a9ad055e50467a86445d94624a26f577f8747b 10.101.16.201:8001

  slots:5461-10922 (5462 slots) master

M: cb647a50969ab20e0612dcd9f19c4ca3ac2e1a5d 10.101.16.201:8002

  slots:10923-16383 (5461 slots) master

S: 90027cbadcb3fb47fd239fd1653fe65b39f594e4 10.101.16.201:8003

  replicates 5825f39dc55c7dee5fdb0c726bdef0904c5368e3

S: 8f0b9ecc407d7c9301c4bdab78570f2adb8812ac 10.101.16.201:8004

  replicates 17a9ad055e50467a86445d94624a26f577f8747b

S: bad062eb1e0240d77688a3e6277b0b52ea2c38a7 10.101.16.201:8005

  replicates cb647a50969ab20e0612dcd9f19c4ca3ac2e1a5d

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join.........

>>> Performing Cluster Check (using node 10.101.16.201:8000)

M: 5825f39dc55c7dee5fdb0c726bdef0904c5368e3 10.101.16.201:8000

  slots:0-5460 (5461 slots) master

  1 additional replica(s)

M: 17a9ad055e50467a86445d94624a26f577f8747b 10.101.16.201:8001

  slots:5461-10922 (5462 slots) master

  1 additional replica(s)

S: 90027cbadcb3fb47fd239fd1653fe65b39f594e4 10.101.16.201:8003

  slots: (0 slots) slave

  replicates 5825f39dc55c7dee5fdb0c726bdef0904c5368e3

S: bad062eb1e0240d77688a3e6277b0b52ea2c38a7 10.101.16.201:8005

  slots: (0 slots) slave

  replicates cb647a50969ab20e0612dcd9f19c4ca3ac2e1a5d

M: cb647a50969ab20e0612dcd9f19c4ca3ac2e1a5d 10.101.16.201:8002

  slots:10923-16383 (5461 slots) master

  1 additional replica(s)

S: 8f0b9ecc407d7c9301c4bdab78570f2adb8812ac 10.101.16.201:8004

  slots: (0 slots) slave

  replicates 17a9ad055e50467a86445d94624a26f577f8747b

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@host-10-101-16-201 src]#

30、到此为止,集群终于搭建起来了,可以通过客户端进行访问了。

(欢迎打赏,一分也是爱)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容