redis 군집 구축동력 노드 자바 대학 정리

16043 단어 redis군집세우다
현재 프로젝트 에 redis 를 사용 하면 클 러 스 터 를 사용 하지 않 는 상황 은 거의 말 하지 않 습 니 다.만약 에 생산 에 redis 한 대만 있 으 면 매우 큰 위험 이 있 습 니 다.예 를 들 어 기계 가 끊 기거 나 메모리 가 폭발 할 수 있 습 니 다.예 를 들 어 우리 생산 환경 도 이런 상황 을 겪 었 고 redis 메모리 가 끊 기지 않 는 상황 을 초래 할 수 있 습 니 다.물론 이런 것들 은 우리 가 용납 할 수 없 는 것 입 니 다.첫 번 째 는 반드시 높 은 신뢰성 을 가 져 야 하고,그 다음은 고성능 이다.자,다음은 내 가 하나씩 세 울 게.
1.Redis 군집 구축
1.다운로드
먼저 홈 페이지 에 가서 새로운 3.2.0 버 전 을 다운로드 하면 다운로드 방식 은 매우 간단 하 다.예 를 들 어 홈 페이지 에서 소개 한 것 과 같다.

$ wget http://download.redis.io/releases/redis-3.2.0.tar.gz
$ tar xzf redis-3.2.0.tar.gz
$ cd redis-3.2.0
$ make
2.redis 설정
우 리 는 클 러 스 터 를 해 야 하고 redis 가 자체 적 으로 가지 고 있 는 redis-trib.rb 가 정상적으로 실 행 될 수 있 기 때문에 클 러 스 터 에서 master 세 대,slave 세 대 를 열 어야 합 니 다.그래서 저 는 6 개의 폴 더 를 만들어 야 합 니 다.그리고 폴 더 의 이름 은 포트 주소 의 이름 을 사용 합 니 다.예 를 들 어 6389.6380...6384.

3.config 설정.
현재 directory 의 분포 상황 은 대체적으로 위의 그림 과 같 습 니 다.다음 에 해 야 할 일 은 redis.conf 를 설정 하 는 것 입 니 다.여기 서 네 가지 옵션 을 설정 해 야 합 니 다.
<1> port  포트 주소,예 를 들 어 6380 폴 더 아래 의 port 는 6380 입 니 다.

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
<2>cluster-enabled 와 cluster-config-file
이 파일 은 말 그대로 redis 의 cluster 모드 를 열 고 cluster-config-file 파일 을 설정 해 야 합 니 다.이 파일 은 redis 의 실시 간 정 보 를 저장 하 는 데 사 용 됩 니 다.redis 는 이 conf 아래 의 내용 정 보 를 동적 으로 추가 하고 수정 합 니 다.단,이 nodes-6379.conf 는 포트 폴 더 에 따라 순서대로 설정 할 수 있 습 니 다.예 를 들 어 6380 폴 더 는 nodes-6380.conf 로 바 꿀 수 있 습 니 다.

# Normal Redis instances can't be part of a Redis Cluster; only nodes that are
# started as cluster nodes can. In order to start a Redis instance as a
# cluster node enable the cluster support uncommenting the following:
#
cluster-enabled yes

# Every cluster node has a cluster configuration file. This file is not
# intended to be edited by hand. It is created and updated by Redis nodes.
# Every Redis Cluster node requires a different cluster configuration file.
# Make sure that instances running in the same system do not have
# overlapping cluster configuration file names.
#
cluster-config-file nodes-6379.conf

<3> directory
관 리 를 편리 하 게 하기 위해 서 제 가 설정 한 루트 디 렉 터 리 는 어느 폴 더 에 달 려 있 습 니까?예 를 들 어 6380 아래 에 있 는 제 dir 는:dir./6380/입 니 다.

# Note that you must specify a directory here, not a file name.
dir ./6379/
<4> protected-mode
이것 은 redis 3.2 에 추 가 된 기능 입 니 다.기능 설명 에서 우 리 는 이 기본 값 은 외부 에서 redis 를 방문 하지 못 하 게 하 는 것 을 발견 할 수 있 습 니 다.그래서 여기 서 우 리 는 no 로 바 꾸 고 원 격 으로 방문 할 수 있 습 니 다.

# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode no
ok,지금까지 저희 config 가 수정 되 었 습 니 다.다른 포트 의 폴 더 도 순서대로 설정 할 수 있 습 니 다~
2:redis 오픈
지금까지 각 포트 폴 더 를 성공 적 으로 설정 하고 열 준 비 를 했 습 니 다.

다음은 6379 아래 에 node-6379.conf 파일 이 생 성 되 었 는 지 살 펴 볼 수 있 습 니 다.예 를 들 어 아래 와 같 습 니 다.

3:redis-trib.rb 설정
redis-trib.rb 는 ruby 가 썼 기 때문에 우리 컴퓨터 는 ruby 와 일부 설정 의존 항목 이 없 을 것 입 니 다.그러나 괜 찮 습 니 다.강력 한 yum 설치 가 있 으 면 모든 것 이 문제 가 되 지 않 습 니 다.
1.Replicas 명령 실행

[jack@localhost ~]$ cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384
/usr/bin/env: ruby: No such file or directory
[jack@localhost ~]$ 
ruby 가 설치 되 어 있 지 않 은 것 을 볼 수 있 기 때문에 다음 단 계 는 ruby 를 설치 해 야 합 니 다.
2.루비 설치[관리자 권한 이 꼭 필요 합 니 다]

[jack@localhost ~]$ sudo
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user
      name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user
      name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g
      groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid]
      [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g
      groupname|#gid] [-p prompt] [-u user name|#uid] file ...
[jack@localhost ~]$ su
Password: 
jacsu: incorrect password
[jack@localhost ~]$ yum install ruby
Loaded plugins: fastestmirror, refresh-packagekit, security
You need to be root to perform this command.
[jack@localhost ~]$ jack
bash: jack: command not found
[jack@localhost ~]$ su
Password: 
[root@localhost jack]# yum install ruby
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirror.bit.edu.cn
 * updates: mirror.bit.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package ruby.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: ruby-libs = 1.8.7.374-4.el6_6 for package: ruby-1.8.7.374-4.el6_6.x86_64
--> Processing Dependency: libruby.so.1.8()(64bit) for package: ruby-1.8.7.374-4.el6_6.x86_64
--> Running transaction check
---> Package ruby-libs.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: libreadline.so.5()(64bit) for package: ruby-libs-1.8.7.374-4.el6_6.x86_64
--> Running transaction check
---> Package compat-readline5.x86_64 0:5.2-17.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package        Arch     Version          Repository Size
================================================================================
Installing:
 ruby          x86_64    1.8.7.374-4.el6_6     base    538 k
Installing for dependencies:
 compat-readline5    x86_64    5.2-17.1.el6       base    130 k
 ruby-libs       x86_64    1.8.7.374-4.el6_6     base    1.7 M

Transaction Summary
================================================================================
Install    3 Package(s)

Total download size: 2.3 M
Installed size: 7.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): compat-readline5-5.2-17.1.el6.x86_64.rpm     | 130 kB   00:00   
(2/3): ruby-1.8.7.374-4.el6_6.x86_64.rpm         | 538 kB   00:00   
(3/3): ruby-libs-1.8.7.374-4.el6_6.x86_64.rpm      | 1.7 MB   00:02   
--------------------------------------------------------------------------------
Total                      747 kB/s | 2.3 MB   00:03   
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>
 Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)
 From  : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing : compat-readline5-5.2-17.1.el6.x86_64             1/3 
 Installing : ruby-libs-1.8.7.374-4.el6_6.x86_64              2/3 
 Installing : ruby-1.8.7.374-4.el6_6.x86_64                3/3 
 Verifying : compat-readline5-5.2-17.1.el6.x86_64             1/3 
 Verifying : ruby-libs-1.8.7.374-4.el6_6.x86_64              2/3 
 Verifying : ruby-1.8.7.374-4.el6_6.x86_64                3/3 

Installed:
 ruby.x86_64 0:1.8.7.374-4.el6_6                        

Dependency Installed:
 compat-readline5.x86_64 0:5.2-17.1.el6 ruby-libs.x86_64 0:1.8.7.374-4.el6_6 

Complete!
[root@localhost jack]# 

3.rubygems 설치
이어서 우 리 는 다시 replicas 명령 을 실행 해서 어떻게 될 지 보 자... 

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384
cluster/redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
  from cluster/redis-trib.rb:24
[root@localhost jack]# 
결 과 는 고 통 스 러 웠 습 니까?아니면 잘못 보 고 했 습 니까?힌트 를 보 니 ruby gems 가 하나 빠 진 것 같 습 니 다.이번 에는 yum 을 통 해 설치 하 겠 습 니 다.

[root@localhost jack]# yum install -y rubygems
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirror.bit.edu.cn
 * updates: mirror.bit.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rubygems.noarch 0:1.3.7-5.el6 will be installed
--> Processing Dependency: ruby-rdoc for package: rubygems-1.3.7-5.el6.noarch
--> Running transaction check
---> Package ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Processing Dependency: ruby-irb = 1.8.7.374-4.el6_6 for package: ruby-rdoc-1.8.7.374-4.el6_6.x86_64
--> Running transaction check
---> Package ruby-irb.x86_64 0:1.8.7.374-4.el6_6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package      Arch      Version          Repository  Size
================================================================================
Installing:
 rubygems     noarch     1.3.7-5.el6        base     207 k
Installing for dependencies:
 ruby-irb     x86_64     1.8.7.374-4.el6_6     base     317 k
 ruby-rdoc     x86_64     1.8.7.374-4.el6_6     base     381 k

Transaction Summary
================================================================================
Install    3 Package(s)

Total download size: 905 k
Installed size: 3.0 M
Downloading Packages:
(1/3): ruby-irb-1.8.7.374-4.el6_6.x86_64.rpm       | 317 kB   00:00   
(2/3): ruby-rdoc-1.8.7.374-4.el6_6.x86_64.rpm      | 381 kB   00:00   
(3/3): rubygems-1.3.7-5.el6.noarch.rpm          | 207 kB   00:00   
--------------------------------------------------------------------------------
Total                      625 kB/s | 905 kB   00:01   
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing : ruby-irb-1.8.7.374-4.el6_6.x86_64              1/3 
 Installing : ruby-rdoc-1.8.7.374-4.el6_6.x86_64              2/3 
 Installing : rubygems-1.3.7-5.el6.noarch                 3/3 
 Verifying : ruby-rdoc-1.8.7.374-4.el6_6.x86_64              1/3 
 Verifying : ruby-irb-1.8.7.374-4.el6_6.x86_64              2/3 
 Verifying : rubygems-1.3.7-5.el6.noarch                 3/3 

Installed:
 rubygems.noarch 0:1.3.7-5.el6                         

Dependency Installed:
 ruby-irb.x86_64 0:1.8.7.374-4.el6_6  ruby-rdoc.x86_64 0:1.8.7.374-4.el6_6  

Complete!
[root@localhost jack]# 

 

4.redis 드라이버 설치
 아니면 계속 단념 하지 않 고,우 리 는 replicas 명령 을 계속 실행 합 니 다.

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
  from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
  from cluster/redis-trib.rb:25
[root@localhost jack]# 
문제 가 있 습 니 다.이번 에는 gem 인 것 같 습 니 다.original_require 가 설치 되 지 않 았 습 니 다.물론 이것 은 일반적으로 ruby 버 전이 너무 낡 았 기 때문에 지금 은 ruby 버 전 을 업그레이드 하거나 ruby 의 redis 드라이브 를 직접 설치 합 니 다.

[root@localhost jack]# gem install redis
Successfully installed redis-3.3.0
1 gem installed
Installing ri documentation for redis-3.3.0...
Installing RDoc documentation for redis-3.3.0...
6.Replicas 명령 실행
드디어 모든 의존 이 우리 에 게 해 결 된 것 같 습 니 다.이제 정말 실행 할 수 있 습 니 다.

[root@localhost jack]# cluster/redis-trib.rb create --replicas 1 192.168.161.133:6379 192.168.161.133:6380 192.168.161.133:6381 192.168.161.133:6382 192.168.161.133:6383 192.168.161.133:6384
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.161.133:6379
192.168.161.133:6380
192.168.161.133:6381
Adding replica 192.168.161.133:6382 to 192.168.161.133:6379
Adding replica 192.168.161.133:6383 to 192.168.161.133:6380
Adding replica 192.168.161.133:6384 to 192.168.161.133:6381
M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379
  slots:0-5460 (5461 slots) master
M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380
  slots:5461-10922 (5462 slots) master
M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381
  slots:10923-16383 (5461 slots) master
S: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382
  replicates fdae457e803e2e04a7c549c69b44a2beefdae3bc
S: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383
  replicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8
S: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384
  replicates 14ed067a1b85044325d5800fa8479a6b4e41a10c
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 192.168.161.133:6379)
M: fdae457e803e2e04a7c549c69b44a2beefdae3bc 192.168.161.133:6379
  slots:0-5460 (5461 slots) master
M: 74285cee0fa65e64b443ecc630e447a8a65ee9f8 192.168.161.133:6380
  slots:5461-10922 (5462 slots) master
M: 14ed067a1b85044325d5800fa8479a6b4e41a10c 192.168.161.133:6381
  slots:10923-16383 (5461 slots) master
M: c50b1ff1fe3a00b16703f3b5705d2dafe046240b 192.168.161.133:6382
  slots: (0 slots) master
  replicates fdae457e803e2e04a7c549c69b44a2beefdae3bc
M: 8f7bd92f7ffb48e327820693a5820b5be7ea5556 192.168.161.133:6383
  slots: (0 slots) master
  replicates 74285cee0fa65e64b443ecc630e447a8a65ee9f8
M: 4a85ed078b4c99afad7f3a9a8df09082c681a649 192.168.161.133:6384
  slots: (0 slots) master
  replicates 14ed067a1b85044325d5800fa8479a6b4e41a10c
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@localhost jack]# 

위 에서 볼 수 있 듯 이 trib 프로그램 은 우리 에 게 6379,6380,6381 을 위주 로 하고 6382,6383,6384 를 종 으로 하 는 지 여 부 를 알려 준다.그래서 내 가 허락 했 어.이렇게 해서 저희 의 군집 이 만 들 어 졌 습 니 다.

좋은 웹페이지 즐겨찾기