redis 集群搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 集群搭建相关的知识,希望对你有一定的参考价值。

根据业务需求,需要把以上三台机器安装成redis集群配置,根据调整采用redis官方集群安装方式

使用root用户查看有没有安装make和gcc以及其他基础环境包

rpm -qa|grep make

rpm -qa|grep gcc

如没有则安装,有则跳过安装yum步骤

使用 yum 安装make以及gcc

yum -y install make gcc

登录到服务器

cd /data/app/

mkdir soft

上传redis-3.2.8.tar.gz 包到/data/app/soft下面

解压编译

tar -zxvf redis-3.2.8.tar.gz

cd redis-3.2.8

make &&make install

将redis-trib.rb复制到/usr/local/bin目录下

cd src

cp redis-trib.rb /usr/local/bin/

把redis整个目录复制到/data/app/下

cd /data/app/soft

mv -i redis3.2.8 /data/app/redis

创建Redis节点

cd /data/app/redis

mkdir cluster

 

建立节点目录

mkdir -p /data/app/redis/cluster/7000

mkdir -p /data/app/redis/cluster/7001

mkdir -p /data/app/redis/cluster/7002

 

把核心配置文件拷贝到各个节点

cp /data/app/redis/redis.conf  /data/app/redis/cluster/7000/

cp /data/app/redis/redis.conf  /data/app/redis/cluster/7001/

cp /data/app/redis/redis.conf  /data/app/redis/cluster/7002/

 

 

 

修改redis.conf配置文件

cd /data/app/redis/cluster/7000/

vim redis.conf

 

port  7000    (根据创建的文件名对应端口)

bind  本机IP (如果是网络有做策略 请根据外网地址IP或者内网IP填写,否则在创建集群的时候会找不到访问对应端口,无法创建集群)

daemonize  yes   

pidfile  /data/app/redis/redis_7000.pid (根据创建的文件名对应Pid)

cluster-enabled  yes

cluster-config-file  nodes_7000.conf (根据创建的文件名对应conf)

cluster-node-timeout  15000

appendonly  yes

logfile:""  可以设置redis日志  查看错误  如果不是root用户 可能安装会出错  查看日志  赋予一些文件夹的权限

 

 

 

集群实施准备

创集群之前用yum把ruby安装,因为这个工具是用ruby写的

先查看下是否安装了

 

rpm -qa|grep ruby

如果没有 实施yum install ruby

gem install redis   (由于国内网络原因,有可能执行不了gem)

 

改用直接安装gem包

上传 redis.3.2.1.zip和rubygems-update-2.6.11.gem包至/data/app/soft下

cd /data/app/soft

解压zip包

unzip redis.3.2.1.zip

gem install redis-3.2.1.gem

gem install rubygems-update-2.6.11.gem

 

创建集群

创建集群之前 保证三台机器的每个节点都是启动着

 

 

 

登录 一台 服务器

 

cd /data/app/redis/src

 

 

 

根据IP和端口并合并创建集群

redis-trib.rb create  --replicas  1 10.0.102.61:7000 10.0.102.61:7001 10.0.102.61:7002 10.0.102.2:7003 10.0.102.2:7004 10.0.102.2:7005 10.0.102.227:7006 10.0.102.227:7007 10.0.102.227:7006

技术分享

 

打印出分配信息,并提示用户输入“yes”确认是否按照打印出来的分配方式创建集群

输入 yes

 技术分享

创建集群成功

 

 

集群验证

后台redis-spring集群配置

redis集群Spring配置参考

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

      <property name="maxIdle" value="${redis.maxIdle}"></property>

      <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}"></property>

      <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"></property>

      <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"></property>

    </bean>

   

   

   

<bean id="redisClusterConfiguration"   class="org.springframework.data.redis.connection.RedisClusterConfiguration">

    <property name="maxRedirects" value="${redis.maxRedirects}"></property>

    <!-- 节点配置 -->

    <property name="clusterNodes">

        <set>

            <bean class="org.springframework.data.redis.connection.RedisClusterNode">  

                    <constructor-arg name="host" value="${redis.host.1}" />  

                    <constructor-arg name="port" value="${redis.port.1.1}"  />  

                </bean>

                 <bean class="org.springframework.data.redis.connection.RedisClusterNode"> 

                    <constructor-arg name="host" value="${redis.host.1}" /> 

                    <constructor-arg name="port" value="${redis.port.1.2}"  /> 

                </bean>

                <bean class="org.springframework.data.redis.connection.RedisClusterNode">    

                    <constructor-arg name="host" value="${redis.host.1}" /> 

                    <constructor-arg name="port" value="${redis.port.1.3}"  /> 

                </bean>

                <!-- two -->

                <bean class="org.springframework.data.redis.connection.RedisClusterNode">    

                    <constructor-arg name="host" value="${redis.host.2}" />  

                    <constructor-arg  name="port" value="${redis.port.2.1}"  />  

                </bean>

                <bean class="org.springframework.data.redis.connection.RedisClusterNode">    

                    <constructor-arg name="host" value="${redis.host.2}" /> 

                    <constructor-arg name="port" value="${redis.port.2.2}"  /> 

                </bean>

                <bean class="org.springframework.data.redis.connection.RedisClusterNode">   

                    <constructor-arg name="host" value="${redis.host.2}" /> 

                    <constructor-arg name="port" value="${redis.port.2.3}"  /> 

                </bean>

              <!--   three  -->

                <bean class="org.springframework.data.redis.connection.RedisClusterNode">   

                    <constructor-arg name="host" value="${redis.host.3}" />  

                    <constructor-arg  name="port" value="${redis.port.3.1}"  />  

                </bean>

              <bean class="org.springframework.data.redis.connection.RedisClusterNode">   

                    <constructor-arg name="host" value="${redis.host.3}" /> 

                    <constructor-arg name="port" value="${redis.port.3.2}"  /> 

                </bean>

                <bean class="org.springframework.data.redis.connection.RedisClusterNode"> 

                    <constructor-arg name="host" value="${redis.host.3}" /> 

                    <constructor-arg name="port" value="${redis.port.3.3}"  /> 

                </bean> 

        </set>

    </property>

</bean>

   

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">

      <constructor-arg name="poolConfig" ref="jedisPoolConfig"/>

      <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>

    </bean>

   

     <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">

           <property name="connectionFactory" ref="jedisConnectionFactory"></property>

          <property name="keySerializer">

            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

          </property>

          <property name="valueSerializer">

                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>

          </property> 

     </bean>

以上是关于redis 集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Redis Cluster集群的搭建

Redis实战-Redis集群环境搭建(自动搭建)

Redis实战-Redis集群环境搭建(自动搭建)

一般Redis集群搭建采用几台服务器?

redis集群搭建怎么分配内存的

Redis Cluster基于Docker的集群搭建