redis集群之一——环境准备

  在Java后台应用开发时,我们肯定会使用到缓存,目前,常见的环境中间包含redis,memcache,ehcache等,其中redis被用的最多,出于高可靠,高可用各种高的考虑,本文手把手教大家搭建一个集群模式下的redis,分两部分:

  • redis环境的搭建
  • redis集群的部署配置
一 redis集群服务器分配

  以本机虚机为例,共三台虚机用于集群机器:
  第一台:192.168.28.128:7000(主节点)、192.168.28.128:7001(不一定是192.168.56.102:7000的从节点)
  第二台:1192.168.28.129:7000(主节点)、192.168.28.129:7001(不一定是192.168.28.129:7000的从节点)
  第三台:192.168.28.131:7000(主节点)、192.168.28.131:7001(不一定是192.168.28.131:7000的从节点)

二 安装环境准备

  Redis集群需要ruby,如果只是单机环境不需要安装ruby,其次不论集群与否,服务器都需要事先安装好gcc。因此可以分两步配置安装环境:安装gcc、安装ruby

1.安装gcc

1)验证是否已经安装了gcc

gcc -v

  如果已经安装则出现如下提示
这里写图片描述
  未安装则会提示如下
这里写图片描述
2)联网环境安装

sudo apt-get update(更新软件源)
sudo apt-get install gcc(安装gcc,已安装的跳过)
sudo apt-get install make(安装make,已安装的跳过)
make(编译)

3)离线环境安装gcc
  从Ubuntu 12.04的iso镜像中安装,默认带有gcc-4.6.3,在/usr/bin/下有gcc,gcc-4.6等四个子目录。离线安装是指,Ubuntu 12.04不接入network,不能从网络的软件源处下载,就是不能使用apt-get install了。
  离线安装的几种方法有:从安装光盘上直接安装、使用synaptic或其他软件管理器、在命令行中使用dpkg安装、自己搭建一个源供内网用户下载。
  这里,先采用了在命令行中使用dpkg命令安装g++的方法。
  第一个问题是从哪里下载安装包,安装包是什么格式的。dpkg命令的操作对象是.deb格式的,首先找的下载源是gcc.gnu.org,在页面右侧的Download->Mirror Sites下找了一个UK的,解压后有gcc和libstdc++两个文件夹,其中libstdc++文件夹中的configure运行起来会报错“缺少install.sh”,网上的几个经验帖是让把解压路径和编译路径分开设置,也就是要另外mkdir一个路径,后续工作都比较麻烦,没看懂所以就没采用这个方法。从另一个网站下载,网址是http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.6/,这里应该是gcc的全部安装包。从http://packages.ubuntu.com/precise/amd64/g++/filelisthttp://packages.ubuntu.com/precise/g++ 中知道了必须下载的几个安装包是g++-4.6_4.6.3-1ubuntu5_amd64.deb、gcc-4.6_4.6.3-1ubuntu5_amd64.deb、gcc-4.6-base_4.6.3-1ubuntu5_amd64.deb和libstdc++6-4.6-dev_4.6.3-1ubuntu5_amd64.deb,这是由安装包之间的依赖关系决定的。在联网的情况下,试一下apt-get install g++,也可以知道需要哪些安装包。
  将这四个安装包放在一个路径下,然后在命令行中输入sudo dpkg -i ……(四个安装包),就将g++安装好了。
  第二个问题是带有这样一个背景的,在命令行下输入gcc -v时,会返回gcc的版本等信息,输入whereis gcc和which gcc时返回了/usr/bin。上面的第一步完成后,在命令行中输入g++会提示没有安装,whereis g++和 which g++则无返回信息。这时,看到在/usr/bin在是有g++-4.6这样的目录的(一共有两个带有g++的目录),启发我在命令行中输入g++ -v,这时会返回g++的版本信息,而且whereis g++-4.6和which g++-4.6都有返回值。同样g++-4.6 可以编译cpp文件,说明g++编译器安装成功。

2.安装ruby——任意选择一台服务器安装即可

1)验证是否安装了ruby

ruby -v

  若已安装则会出现如下:
zmq3
  未安装提示如下
这里写图片描述
2)联网环境下的安装

sudo apt-get update
sudo apt-get install ruby
sudo gem install redis

3)离线环境安装ruby

参考地址:http://www.cnblogs.com/JiaK/p/5580573.html
redis-3.3.3.gem下载地址:https://rubygems.org/gems/redis/versions
ruby-2.4.1.tar.gz下载地址:http://www.ruby-lang.org/en/downloads/
rubygems-2.6.12.tgz下载地址:https://rubygems.org/pages/download/
tcl8.6.6-src.tar.gz下载地址:http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html

三 redis的安装
1.验证是否安装了redis

  如果是通过联网安装的可以直接通过redis-server -v 来查看
  如果是离线包的形式安装的,由于没有将redis-server注册成服务,因此直接使用上述命令会找不到redis-server服务
  如果已经安装会出现
这里写图片描述

2.联网环境下的安装

  在 Ubuntu 系统安装 Redi 可以使用以下命令:

sudo apt-get update
sudo apt-get install redis-server

  启动 Redis

redis-server

  查看 redis 是否启动?

redis-cli

  以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

  当使用联网环境安装的方式时,redis-server会自动放入/usr/local/bin目录下

注意:/usr/bin与/usr/local/bin区别
通常/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响

这里写图片描述
这里写图片描述

3.离线环境安装

1)下载离线包
  Redis下载地址:http://download.redis.io/releases/
  或者wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2)解压并安装

tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
Make
Make install

  make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
3)下面启动redis服务.

cd src
./redis-server

  注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

cd src
 ./redis-server redis.conf

  redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

cd src
./redis-cli
redis> set foo bar
OK
redis> get foo"bar"
4.Redis配置成服务并设置开机自动启动

1)启动脚本解析
  推荐在生产环境中使用启动脚本方式启动redis服务。启动脚本 redis_init_script 位于位于Redis的 /utils/ 目录下。如下图所示:
这里写图片描述
这里写图片描述
  redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。redis服务器监听的端口REDISPORT=6379服务端所处位置,在make install后默认存放与/usr/local/bin/redis-server,如果未make install则需要修改该路径,下同。EXEC=/usr/local/bin/redis-server#客户端位置CLIEXEC=/usr/local/bin/redis-cli#Redis的PID文件位置PIDFILE=/var/run/redis_{REDISPORT}.pid#配置文件位置,需要修改CONF="/etc/redis/ {REDISPORT}.pid#配置文件位置,需要修改CONF="/etc/redis/ {REDISPORT}.conf”
2)创建启动脚本
  复制启动脚本到/etc/init.d目录下

cp ../utils/redis_init_script /etc/init.d/redis
vim /etc/rc.d/init.d/redis

  需要修改的配置项
  修改redis启动脚本,要修改的地方有
  添加 chkconfig 注释;
  redis-server 、redis-cli 、pidfile、redis.conf路径(根据是否是make install默认配置安装来正确编辑)编辑;
  如果需要配置密码,还要在停止命令增加参数 -a 指定密码;
  如下为通过make install后的配置文件
这里写图片描述
  下图为apt-get install方式安装的redis,配置如下
这里写图片描述
  注册到服务并设置为开机自启动

chkconfig --add redis7000 
chkconfig redis7000 on

出现如下错误
这里写图片描述
3)Ubantu使用chkconfig命令
  此处直接配置开启自启动 将报错误:chkconfig:command not found,原因是ubantu系统不支持chkconfig,次命令是centos的!! 为了仍然可以使用chkconfig注册服务并设置开机启动项,可以参考如下设置:
  安装sysv-rc-conf

sudo apt-get update
sudo apt install sysv-rc-conf

  在/usr/sbin目录下创建chkconfig文件,并添加如下配置

!/usr/bin/perl'
use strict;
#use warnings;
my $param1 = $ARGV[0];
my $param2 = $ARGV[1];

if ( defined $param2 ){
    if ( $param1 =~ /list/ ){
        system("sysv-rc-conf --list $param2");
    }elsif( $param2 eq 'on' ){
        system("sysv-rc-conf --level 2345 $param1 on");
        system("sysv-rc-conf --list $param1");
    }elsif( $param2 eq 'off' ){
        system("sysv-rc-conf --level 2345 $param1 off");
        system("sysv-rc-conf --list $param1");
        }else{
            print("Usage: chkconfig < option > | --list | [ service_name [ command  < on | off > ] ]\n");
            exit(1);
    }
}else{
    system("sysv-rc-conf --list $param2");
}

  赋予权限

chmod 755 chkconfig

4)再次尝试注册服务并开机自启动

chkconfig --add redis7000 
chkconfig redis7000 on

  配置成功如下所示:
这里写图片描述
5)启动redis服务

service redisd start#关闭服务
service redisd stop

这里写图片描述
  注意,当service redis7000 start启动了redis后,如果是在onlyisssilence用户下启动,可能由于没有写权限导致/etc/init.d/redis7000的配置文件中的/var/run/redis_6379没有生成并写入pid,在后执行续的service redis7000 stop后会弹出redis_6379文件不存在的错误,此时就告诉我们在root权限下start redis即可,切换到root权限的命令是

sudo su

输入用户密码即可

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值