redis集群搭建

1,需要两台虚拟机 可以同为cs7 每台各弄三个节点

  第一台服务器的ip192.168.1.150

  第二台服务器的ip192.168.1.106

2,每台服务器先搭建redis开发环境

   1> 在根目录创建/alidata/webroot/redis

   2> 然后执行命令下载tclwget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz

   3> 然后解压tcltar -zxvf tcl8.6.3-src.tar.gz 并修改文件名字问tcl

   4> 然后进入tcl/unix目录  cd /tcl/unix

   5> 然后执行命令./configure

   6> 然后使用make

   7> 然后使用make install  最终可查看安装成功

   8> 然后下载安装redis

   9> 然后执行命令下载redis:wget http://download.redis.io/releases/redis-3.0.5.tar.gz

  10> 然后解压redis:tar -zxvf redis.....tar.gz

  11> 然后修改redis文件名称为redis    mv redis-3.0.5.tar.gz  redis

  12> 然后进去到redis目录

  13> 然后使用命令make

  14> 然后进去到src目录 cd src/

  15> 然后使用命令 make test make test执行完之后 执行make install

 

3,redis作为服务启动

1.vim /etc/init.d/redis   

# Date 2015-12-10

# chkconfig: 2345 10 90  

# description: Start and Stop redis   

 

PATH=/usr/local/kencery/redis/src:/sbin:/usr/bin:/bin   

REDISPORT=6379  

EXEC=/usr/local/kencery/redis/src/redis-server   

REDIS_CLI=/usr/local/kencery/redis/src/redis-cli   

 

PIDFILE=/var/run/redis.pid   

CONF="/usr/local/kencery/redis/redis.conf"  

AUTH="1234"  

case "$1" in   

        start)   

                if [ -f $PIDFILE ]   

                then   

                        echo "$PIDFILE exists, process is already running or crashed."  

                else  

                        echo "Starting Redis server..."  

                        $EXEC $CONF   

                fi   

                if [ "$?"="0" ]   

                then   

                        echo "Redis is running..."  

                fi   

                ;;   

        stop)   

                if [-f $PIDFILE ]   

                then   

                        echo "$PIDFILE exists, process is not running."  

                else  

                        PID=$(cat $PIDFILE)   

                        echo "Stopping..."  

                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    

                        sleep 2  

                       while [ -x $PIDFILE ]   

                       do  

                                echo "Waiting for Redis to shutdown..."  

                               sleep 1  

                        done   

                        echo "Redis stopped"  

                fi   

                ;;   

        restart|force-reload)   

                ${0} stop   

                ${0} start   

                ;;   

        *)   

               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  

                exit 1  

esac

 

redis 脚本

 

 

 

      2>  chmod 755 /etc/init.d/redis

      3> 尽量重启下服务器 service redis restart

 

 

 

4,上面两台服务器都已经安装好了redis, 现在请将redis/src/目录下面的redis-trib.rb

  移动到 /usr/lcoal/bin/ 目录下

  Mv   redis-trib.rb /usr/local/bin    另一台服务器也是进行同样的操作移动

 

5, 由于下面要使用这个redis-tribb.rb这个命令 所以先下载能够执行rb

的这个工具

   使用命令yum -y install ruby ruby-devel rubygems rpm-build  进行下载

然后使用命令gem install redis安装成功的效果图

 

 

 

6,创建节点

 首先在第一台服务器的redis/目录下面创建redis_cluster 目录

 然后创建名为7000 7001 7002的目录

 Mkdir 7000

 Mkdir 7001

 Mkdir 7002

 然后将redis/redis.conf 复制一份到7000  7001 7002目录下面

 cp redis.conf  redis_cluster/7000

 cp redis.conf  redis_cluster/7001

 cp redis.conf  redis_cluster/7002

 分别修改这三个文件:

 首先修改7000的文件

  Port  7000        端口号

  Daemonize yes      redis后台运行

  Pidfile /var/run/redis_7000.pid   pidfile对应 7000

  Bind 192.168.1.150  本地ip

  cluster-enabled  yes            开启集群 去掉前面的#              

  cluster-config-file  nodes_7000.conf  集群的配置

  cluster-node-timeout  15000       请求超时 15

  appendonly  yes                          aof日志开启  

 

 然后修改7001的文件

  Port  7001端口号

  Daemonize yes      redis后台运行

  Pidfile /var/run/redis_7001.pid   pidfile对应 7001

  Bind 192.168.1.150  本地ip

  cluster-enabled  yes            开启集群 去掉前面的#              

  cluster-config-file  nodes_7001.conf  集群的配置

  cluster-node-timeout  15000       请求超时 15

  appendonly  yes                          aof日志开启  

修改哪个文件  那么他的端口号就要与文件名对应 以此类推

在另一台服务器创建 7003 7004 7005目录 具体配置和上面一样

 

第一台服务器的启动效果图

 

 

 

第二服务器启动的效果图

 

 

 

然后cdusr/local/bin目录下面 因为要使用redis-trib.rb

./redis-trib.rb  create  --replicas  1  192.168.1.150:7000 192.168.1.150:7001  192.168.1.150:7002 192.168.1.106:7003  192.168.1.106:7004  192.168.1.106:7005

 

 

 

然后会提示你输入yes

最后安装成功名

 

 

 

最后进行集群走据

  在第一台服务器连接 7002端口的节点./redis-cli -h 192.168.1.150 -c -p 7002

  在另一台服务器连接7005端口的节点./redis-cli -h 192.168.1.106 -c -p 7005

   然后在7005执行命令 set hello world

  

 

然后在7002的里面去get hello  结果会出现world

最终集群搭建完毕!!!

 

Redis 集群会把数据存在一个 master 节点,然后在这个 master 和其对应的salve 之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的 master 节点获取数据。只有当一个master 挂掉之后,才会启动一个对应的 salve 节点,充当 master

需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

 

posted @ 2017-05-19 13:16  yuancr  阅读(169)  评论(0)    收藏  举报