Redis集群配置

Redis集群配置

编译安装redis

参考redis安装

创建redis节点

先每个节点单独创建一个配置文件

如redis1.conf,redis2.conf,redis3.conf,redis4.conf

bind 192.168.1.41
daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_6379.pid          //pidfile文件对应端口号
port  6379                                //端口
cluster-enabled  yes                      //开启集群
cluster-config-file  nodes_6379.conf      //集群的配置  配置文件首次启动自动生成
cluster-node-timeout  5000                //请求超时  设置5秒够了
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

启动redis

./src/redis-server  redis_cluster/redis1.conf
./src/redis-server  redis_cluster/redis2.conf
./src/redis-server  redis_cluster/redis3.conf
./src/redis-server  redis_cluster/redis4.conf
./src/redis-server  redis_cluster/redis5.conf
./src/redis-server  redis_cluster/redis6.conf

查看服务

ps -ef | grep redis   #查看是否启动成功

创建集群

 ./redis-trib.rb create --replicas 1 192.168.1.41:6379 192.168.1.41:6380 192.168.1.41:6381 192.168.1.41:6382 192.168.1.41:6383 192.168.1.41:6384
  1. –replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)
  2. 运行中,提示Can I set the above configuration? (type ‘yes’ to accept): yes //输入yes>3.
  3. 接下来 提示 Waiting for the cluster to join… 安装的时候在这里就一直等等等,没反应,傻傻等半天,看这句提示上面一句,Sending Cluster Meet Message to join the Cluster.
  4. 如果集群分布在不同机器上,需要进入所有的服务器操作
  5. 在其他服务器上, redis-cli -c -p 6380 分别进入redis各节点的客户端命令窗口, 依次输入 cluster meet 192.168.1.238 6379
  6. 回到Server1,已经创建完毕了。

查看一下 ./redis-trib.rb check 192.168.1.41:6379

到这里集群已经初步搭建好了。

测试

  • get和set 数据
./redis-cli -c -p 6379

set k1 v1
set k2 v2
set k3 v3

每次调用set会均匀分布在不同的服务上,并且会自动同步数据导slave上面

  • 宕机测试

假设有一个节点挂了,对应的slave节点会自动切换成master,master节点还是保持奇数个。
如果挂点的节点再次启动,会自动成为slave节点

清除集群

  1. 删除node*.conf
  2. 删除appendonly.aof
  3. 删除dump.rdb
  4. 停止所有redis节点

安装ruby

yum -y install ruby ruby-devel rubygems rpm-build

再用 gem 这个命令来安装 redis接口 gem是ruby的一个工具包.

gem install redis    //等一会儿就好了

如果提示“redis requires Ruby version >= 2.2.2”请安如下步骤升级ruby

安装RVM

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
find / -name rvm -print
source /usr/local/rvm/scripts/rvm

查看ruby版本

rvm list known

安装一个ruby版本

rvm install 2.4.1

使用一个ruby版本

rvm use 2.4.1
//设置为默认版本
rvm use 2.4.1 --default
//查看ruby版本
ruby --version

java客户端连接集群

引入jedis依赖包

<dependency>
    <groupId>redis.clientsgroupId>
    <artifactId>jedisartifactId>
    <version>2.9.0version>
    <type>jartype>
    <scope>compilescope>
dependency>

只要连接一个节点就可以,集群其他节点会自动发现。当然也可以把所有的节点都加上

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster
nodes automatically
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");

参考

  • https://www.cnblogs.com/yuanermen/p/5717885.html
  • https://www.cnblogs.com/PatrickLiu/p/8454579.html

你可能感兴趣的:(运维,redis)