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>