zoukankan      html  css  js  c++  java
  • 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群

    from
    https://my.oschina.net/ososchina/blog/856678
     
     
    摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群

    前言

    最近在服务器上搭建了一套Redis3.0伪分布式集群,发现一个问题,就是Shell脚本编写能力和运维工具的重要性亟待提高。

    集群环境安装

    1.安装Redis

    $ cd /usr/local #安装目录
    $ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
    $ tar xzf redis-3.2.8.tar.gz
    $ mv redis-3.2.8/ redis
    $ cd redis
    $ make
    $ make install

    注意:官方给的命令少了make install,导致redis-server只能在redis的src目录下使用

    2.安装Ruby&rubygems

    $ yum install ruby ruby-devel rubygems

    3.创建集群环境

    创建集群需要的目录[至少需要6个,3个master,3个slave,公式6+2N]

    $ mkdir -p /usr/local/redis/cluster/16001/
    $ mkdir -p /usr/local/redis/cluster/16002/
    $ mkdir -p /usr/local/redis/cluster/16003/
    $ mkdir -p /usr/local/redis/cluster/16004/
    $ mkdir -p /usr/local/redis/cluster/16005/
    $ mkdir -p /usr/local/redis/cluster/16006/

    复制redis.conf到每个节点下

    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16001/redis.conf
    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16002/redis.conf
    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16003/redis.conf
    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16004/redis.conf
    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16005/redis.conf
    $ cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16006/redis.conf

    然后修改每个节点下的redis.conf,主要修改内容如下

    port <端口>
    
    daemonize yes
    
    cluster-enabled yes
    
    cluster-config-file nodes.conf
    
    cluster-node-timeout 5000
    
    logfile "redis-server.log"
    
    appendonly yes
    
    

    4.远程访问

    ①远程访问配置

    如果要远程访问,需要修改redis.conf中的bind

    默认是127.0.0.1回环地址,如果要远程访问,需要修改成局域网地址 或者 修改成 0.0.0.0,当然也可以使用双地址模式,比如我的局域网地址是192.168.12.213,此外,服务器上的ip一般是固定的,那么可以修改成如下方式

    $ bind  192.168.12.213 127.0.0.1 #推荐
    $ bind  0.0.0.0 #不推荐

    具体请参考:Redis开启远程登录连接

    ②.开放防火墙端口

    $ service iptables status #查看防火墙状态
    
    $ iptables -I INPUT -p tcp --dport 16001 -j ACCEPT
    $ iptables -I INPUT -p tcp --dport 16002 -j ACCEPT
    $ iptables -I INPUT -p tcp --dport 16003 -j ACCEPT
    $ iptables -I INPUT -p tcp --dport 16004 -j ACCEPT
    $ iptables -I INPUT -p tcp --dport 16005 -j ACCEPT
    $ iptables -I INPUT -p tcp --dport 16006 -j ACCEPT

    ④telnet链接

    telnet 192.168.12.213 16001

    5.启动Redis实例

    #分别启动这6个redis实例(此时,节点均以Redis Cluster的方式运行,但并没有自动构建集群,因为还处于“我不认识你,你不属于我”的状态,它们每个都是孤零零的Redis节点,或者说只包含了一个节点的集群)

    $ cd /usr/local/redis/cluster/16001 && redis-server redis.conf > redis-server.log 2>&1 &
    
    $ cd /usr/local/redis/cluster/16002 && redis-server redis.conf > redis-server.log 2>&1 &
    
    $ cd /usr/local/redis/cluster/16003 && redis-server redis.conf > redis-server.log 2>&1 &
    
    $ cd /usr/local/redis/cluster/16004 && redis-server redis.conf > redis-server.log 2>&1 &
    
    $ cd /usr/local/redis/cluster/16005 && redis-server redis.conf > redis-server.log 2>&1 &
    
    $ cd /usr/local/redis/cluster/16006 && redis-server redis.conf > redis-server.log 2>&1 &

    命令中的 2>&1表示标准错误流输入到标准输出流中,也就是输入到每个节点的redis-server.log中,至于最后的 &表示是否后台启动,在linux上redis-server本身就是后台启动,因此这个 & 可以不加

    当然,我们可以通过 tail命令监听每个redis-server.log的变化

    tail -f /usr/local/redis/cluster/16002/redis-server.log

    上面的所有redis启动之后,我们可以通过如下命令中的任何一条命令进行检测

    $ netstat -lntp | grep 'redis*'
    
    $ ps -e | grep 'redis*'
    
    $ lsof -i 4 TCP
    
    $ hping --scan 16001-16006 -S 192.168.12.213
    
    $ nmap -sS  192.168.12.213 -p 1600-16007

    创建集群

    1.安装redis gem插件

    我们需要安装支持redis的gem工具,否则会报错

    $ gem install  redis --version 3.0.0

    注意:gem install redis --version 3.0.0 失败的话,需要修改一下gem的源

    gem sources --remove https://rubygems.org/
    gem sources -a https://ruby.taobao.org/

    2.创建集群

    让上面的实例互相通讯(1 表示为每个master分配一个salve)

    $ /usr/local/redis/src/redis-trib.rb create --replicas 1 
    127.0.0.1:16001 
    127.0.0.1:16002 
    127.0.0.1:16003 
    127.0.0.1:16004 
    127.0.0.1:16005 
    127.0.0.1:16006

    3.集群信息查看

    集群创建完成,可以使用下面的命令查看相关信息:

    #查看集群目前状况
    $ redis-cli -c -p 16001
    #关闭其中一个节点
    $ redis-cli -p 16001 shutdown
    #打印集群的信息
    $ redis-cli cluster info
    #列出集群当前已知的所有节点(node),以及这些节点的相关信息。
    $ redis-cli cluster nodes

    输出的信息:

    127.0.0.1:16002 master - 0 1439345771781 2 connected 5461-10922
    127.0.0.1:16003 master - 0 1439345772286 3 connected 10923-16383
    127.0.0.1:16001 myself,master - 0 0 1 connected 0-5460
    127.0.0.1:16004 slave 2566ea486fc30c911aafaf1b71130fd24a38dba9 0 1439345772791 4 connected
    127.0.0.1:16005 slave edea1e50bd224c6895b1904bce79e83fa07d6017 0 1439345772286 5 connected
    127.0.0.1:16006 slave ab06e033698627ce0ecd4c8c645585a1ae70cc84 0 1439345771276 6 connected

    从上面的信息可以明显看到哪些是主节点、从节点。

    4.保存集群信息

    将节点的配置文件保存到硬盘里

    $ redis-cli cluster saveconfig

    连接端口(可以使用其他端口测试16001 -> 16006)

    $ redis-cli -c -p 16001
    $ 127.0.0.1:16001> set key001 v001
    $ 127.0.0.1:16001> get key001

    选举端口检测

    如果细心的话,你就会发现,在我们创建了集群之后,启动了一些新的端口

    通过如下命令

    netstat -lntp | grep 'redis'

    你就会找到如下端口,这些端口是用来进行选举和主备切换的

    26001 26002 26003 26004 26005 26006
  • 相关阅读:
    1.4.2.3. SETUP(Core Data 应用程序实践指南)
    1.4.2.2. PATHS(Core Data 应用程序实践指南)
    1.4.2.1. FILES(Core Data 应用程序实践指南)
    1.4.2. 实现 Core Data Helper 类(Core Data 应用程序实践指南)
    1.4.1. Core Data Helper 简介(Core Data 应用程序实践指南)
    1.4. 为现有的应用程序添加 Core Data 支持(Core Data 应用程序实践指南)
    1.3.2. App Icon 和 Launch Image(Core Data 应用程序实践指南)
    1.3.1. 新建Xcode项目并设置故事板(Core Data 应用程序实践指南)
    php验证邮箱是否合法
    如何使js函数异步执行
  • 原文地址:https://www.cnblogs.com/vimmer/p/7533303.html
Copyright © 2011-2022 走看看