一.Redis的安装和主从配置
实验环境:rhel6.5
主机:server{1..4} ip:172.25.254.{1..4}
1.在server1和server2上下载redis安装包,解压,编译,安装
tar zxf redis-4.0.8.tar.gz
yum install -y gcc
make&&make install
cd utils/
./install_server.sh #启动脚本
2.server1修改监听端口
[root@server1 utils]# redis-cli #查看安装信息
[root@server1 udev]# cd /etc/redis/
[root@server1 redis]# vim 6379.conf #监听端口改为0.0.0.0,有什么监听什么
netstat查看服务端口是否开启
3.server2上修改配置文件
[root@server2 redis]# vim 6379.conf
[root@server2 redis]# /etc/init.d/redis_6379 restart #重启
Stopping ...
Redis stopped
Starting Redis server...
4.测试,在server1上设置变量,server2上进行了同步
二.redis集群实现高可用
1.在上一步d的基础上在打开两个虚拟机server3,用于实现redis的高可用
2.在3上安装redis,实现主从,get name可以看到主的消息
3.配置文件复制到redis目录下
[root@server2 redis-4.0.8]# cp sentinel.conf /etc/redis/
[root@server2 redis-4.0.8]# cd /etc/redis/
[root@server2 ~]# vim /etc/redis/sentinel.conf
17 protected-mode no #保护模式
21 port 26379
69 sentinel monitor mymaster 172.25.254.1 6379 2
#sentinel监听主机的ip和6379端口,必须至少有两个连接才能故障切换
98 sentinel down-after-milliseconds mymaster 10000
#默认30s没有反应,认为服务器断开
复制到集群的每一个结点上,scp
4.在任意一台中可以监听
redis的主是server1,slave为2,3
redis-server /etc/redis/sentinel.conf –sentinel #监控命令,查看master和slave
5.手动停止server1
redis-cli
shutdown
监控查看server1--->server2
集群中master变为server2,server2的配置文件也变为server2
三.集群管理工具
1.写redis的配置目录,创建不同的进程,redis.conf复制到每一个700{1..6} 目录中,
redis-server 700{1..6}/redis.conf #开启,生效
cd /usr/local
mkdir cluster
cd cluster
mkdir 700{1..6}
cd 7001
vim redis.conf
port 7000 #每一个不一样
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000 #超时
appendonly yes
redis-cli -p 7001 #查看状态
[root@server1 ~]# redis-trib.rb --help
/usr/bin/env: ruby: No such file or directory
[root@server1 ~]# yum install -y ruby
[root@server1 ~]# redis-trib.rb --help
/usr/local/bin/redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from /usr/local/bin/redis-trib.rb:24
[root@server1 ~]# yum install -y rubygems-1.3.7-5.el6.noarch.rpm
[root@server1 ~]# redis-trib.rb --help
/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 /usr/local/bin/redis-trib.rb:25
[root@server1 ~]# gem list
*** LOCAL GEMS ***
[root@server1 ~]# gem --help
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.
Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]
Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install
Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help platforms show information about platforms
gem help <COMMAND> show help on COMMAND
(e.g. 'gem help install')
gem server present a web page at
http://localhost:8808/
with info about installed gems
Further information:
http://rubygems.rubyforge.org
[root@server1 ~]# gem install --local redis-4.0.1.gem
ERROR: Error installing redis-4.0.1.gem:
redis requires Ruby version >= 2.2.2.
[root@server1 ~]# rpm -q ruby
ruby-1.8.7.352-12.el6_4.x86_64
[root@server1 ~]# yum install ruby-2.2.3-1.el6.x86_64.rpm libyaml-0.1.3-4.el6_6.x86_64.rpm -y
[root@server1 ~]# gem install --local redis-4.0.1.gem
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed
[root@server1 ~]# gem list
*** LOCAL GEMS ***
bigdecimal (1.2.6)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
redis (4.0.1)
test-unit (3.0.8)
[root@server1 ~]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
Yes确认添加
[root@server1 ~]# redis-trib.rb info 127.0.0.1:7002
[root@server1 ~]# redis-trib.rb check 127.0.0.1:7001
[root@server1 ~]# redis-cli -c -p 7001
127.0.0.1:7001> set name xue 7001上设定name等于xue
-> Redirected to slot [5798] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get name
"xue"
[root@server1 ~]# redis-cli -c -p 7006
127.0.0.1:7006> get name -> Redirected to slot [5798] located at 127.0.0.1:7002
"xue"
127.0.0.1:7002> set user westos 7006上改了名字
OK
127.0.0.1:7002> get user 7002查到改了的名字
"westos"
[root@server1 ~]# redis-cli -c -p 7004
127.0.0.1:7004> get user
-> Redirected to slot [5474] located at 127.0.0.1:7002
"westos"
127.0.0.1:7002> del user #删除之后名字没有了
(integer) 1
127.0.0.1:7002> get user
(nil)
127.0.0.1:700
[root@server1 ~]# redis-cli -c -p 7004 1,4互相为主从
127.0.0.1:7004> SHUTDOWN
not connected>
[root@server1 ~]# ps ax
[root@server1 ~]# redis-cli -c -p 7001
127.0.0.1:7001> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
"xue"
127.0.0.1:7002>