在公司可能经常遇到服务器无法连接公网的情况,这种情况下如何离线搭建redis集群呢?
1、telnet安装
执行步骤如下:
rpm -ivhtelnet-0.17-47.el6.x86_64.rpm
rpm -ivhxinetd-2.3.14-38.el6.x86_64.rpm
rpm -ivhtelnet-server-0.17-47.el6.x86_64.rpm
安装完成后会在/etc/xinetd.d/文件夹下生成一个telnet文件。
编辑设置 /etc/xinetd.d/telnet ,将disable= yes设置成disable= no
启动telnet服务。由于telnet服务是由超级服务xinetd来管理的,因此这里启动和停止telnet服务,只需通过修改/etc/xinetd.d/telnet中的disable的值,然后执行xinetd restart即可。
# service xinetdrestart
设置telnet服务自启动
# chkconfig telnet on
2、ruby环境搭建
一、下载官网最新版ruby2.2.3
网址:https://cache.ruby-lang.org/pub/ruby/
下载文件:ruby-2.2.3.tar.gz
二、通过FTP工具将ruby-2.2.3.tar.gz上传到/usr/local/目录下,执行如下命令安装:
$ cd /usr/local
$ tar -zxvf ruby-2.2.3.tar.gz
$ cd ruby-2.2.3
$ ./configure ###设置安路径如:/usr/local/ruby
$ make && make install
三、配置环境变量(可不用配置),执行命令如下:
$ cd /etc
$ vi profile 文件最后添PATH=$PATH:/usr/local/ruby-2.2.3/bin 按esc,再按shift+zz保存
$ source profile
$ echo $PATH 看下PATH变量中是否成功加入
四、安装zlib1.2.8
网址:http://www.zlib.net/
下载文件:zlib-1.2.8.tar.gz
通过FTP上传zlib-1.2.8.tar.gz到 /usr/local目录下,执行如下命令安装:
$ cd /usr/local
$ tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make && make install
五、在ruby2.3.3源文件中安装zlib
$ cd /usr/local/ruby-2.3.3/ext/zlib
$ ruby ./extconf.rb
$ make && make install
六、rubygems安装
通过FTP上传rubygems-2.7.3.tgz到 /usr/local目录下,执行如下命令安装:
$ cd /usr/local
$ tar -zxvf rubygems-2.7.3.tgz
$ cd rubygems-2.7.3
执行命令:ruby setup.rb
更换gem源
$ gem sources -r https://rubygems.org/
$ gem sources -ahttp://gems.ruby-china.org/ (没有网络会报错,可不执行)
更新 RubyGems 命令:$ gem update --system #需要管理员或root用户
root用户安装redis.gem
cd /usr/local
gem install -l redis-3.3.5.gem
七、redis安装
通过FTP上传redis-4.0.1.tar.gz到 /usr/local目录下,执行如下命令安装:
$ cd /usr/local
$ tar -xvf redis-4.0.1.tar.gz
$ cd redis-4.0.1
执行:make&& make install
启动redis服务:./src/redis-server
八、redis集群
--创建redis集群
./redis-trib.rbcreate --replicas 1 212.111.111.90:7010 212.111.111.90:7011 212.111.111.90:7012212.111.111.90:7013 212.111.111.90:7014 212.111.111.90:7015 212.111.111.25:7021212.111.111.25:7022
--新曾redis集群
./redis-trib.rbadd-node 212.111.111.25:7021 212.111.111.90:7012
Linux/redis-cluster重启数据丢失解决方案
一、问题说明
在Linux系统中,Redis本来是有数据的,但在Linux系统重启后,Redis中的数据全部丢失。经过几次测试都一样,只有在Linux系统重启才会丢失,Redis重启应该是没有问题的。
这个问题只在Linux系统才存在,在Windows系统是没有问题的。
二、解决方案
在Linux系统设置一个参数(vm.overcommit_memory)即可解决。
步骤如下:
1、编辑 sysctl.conf 配置文件
vi /etc/sysctl.conf
2、另起一行增加参数 vm.overcommit_memory配置,如下
vm.overcommit_memory = 1
3、使配置文件生效
sysctl -p
1. 使用redis-cli连接上redis其中一台
redis-cli -c -h xxx -p 7001
输入cluster info查看当前集群的状态
2. 可以使用trib的check检测的集群状态
redis-trib.rb check xxx:7001
[ERR] Not all 16384 slots are covered by nodes.
3. 如果出现以上的错误,可以尝试使用fix命令修复
redis-trib.rb fix xxx:7001
修复完成之后,在使用trib的check命令查看状态
4. [endif]如果通过fix方式修复不了
pkill redis停止之前的redis进程
然后把aof,rdb,nodes节点文件删除,删除之前需要备份
5. [endif]然后启动各个redis节点
redis-server/usr/local/src/redis-3.2.4/redis_cluster/7000/redis.conf
redis-server /usr/local/src/redis-3.2.4/redis_cluster/7001/redis.conf
redis-server/usr/local/src/redis-3.2.4/redis_cluster/7002/redis.conf
redis-server/usr/local/src/redis-3.2.4/redis_cluster/7003/redis.conf
redis-server/usr/local/src/redis-3.2.4/redis_cluster/7004/redis.conf
redis-server/usr/local/src/redis-3.2.4/redis_cluster/7005/redis.conf
6. [endif]创建redis集群
redis-trib.rb create --replicas 1xxx:7000 xxx:7001 xxx:7002 xxx:7003 xxx:7004 xxx:7005
7. [endif]集群创建完成之后,再次连接redis查看集群状态,如图可以看到3主3从的redis服务已经启动完成
redis-cli -c -h xxx -p 7000
cluster info
cluster nodes
FAQ1:当在redis-xx.conf中设置了密码,使用redis-trib.rb创建集群时直接报报错?
Sorry, can't connect to node 10.111.178.58:6379 这个错误提示很不准确,很容易误导人的。
1. 首先执行搜索 find / -name client.rb 找到前面 gem install redis 安装的模块(默认路径为/usr/lib/ruby/gems/1.8/gems/redis-3.3.3/lib/redis/client.rb),
2. 然后再编辑client.rb,找到如下部分:
class Redis
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => nil,
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}
只需将文中 :password => nill 改为 :password => "yourpassword" 即可,再执行一遍 redis-trib.rb 创建一次集群有不会报错了