zoukankan      html  css  js  c++  java
  • CentOS7安装配置redis5集群

    一.服务器准备

    本文准备了3台服务器 , 分别是

    172.18.0.231

    172.18.0.232

    172.18.0.233

    每台运行2个redis实例, 端口分别为7000 7001 ,即总共6个redis节点

    二.安装必要包并配置环境

    yum install gcc

    调整服务器参数 , 以得到最大性能

    1.调整服务器最大文件打开数

    打开文件 /etc/security/limits.conf 在最后加入以下文件 , 并保存 

    * 代表所有方式

    - 代表 both hard and soft

    * - nofile 65535
    * - nproc 65535

    打开文件 /etc/pam.d/login 在文件最后加上 , 先检查系统,确保该文件存在

    session required /lib64/security/pam_limits.so

    2.关闭THP

    在root下执行 

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag

     把这段命令加入到 /etc/rc.local中 , 确保每次启动后都执行该命令

    注意 : 如果redis处于启动状态 , 必须重启redis才能使该配置生效..所以最好在装redis之前就关闭

    3.调整系统tcp参数

    打开文件 /etc/sysctl.conf

    #设置最大连接数
    net.core.somaxconn = 32768
    #内存分配策略 1表示内核允许分配所有的物理内存,而不管当前的内存状态如何
    vm.overcommit_memory = 1

    执行以下命令使配置生效

    sysctl –p

    三.防火墙配置(踩坑)

    redis中,除了自身需要的端口之外(本文是7000和7001) , 如果需要建立集群 , 则还需要开放总线端口 , 总线端口是数据端口+10000

    也就是 每台机器需要开放4个端口 , 分别为 7000 17000 7001 17001 

    附上一份iptable的配置脚本:

    #!/bin/sh
    iptables -P INPUT ACCEPT
    iptables -F
    iptables -X
    iptables -Z
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
    iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
    iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
    iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    service iptables save
    systemctl restart iptables.service

    四.下载并安装redis 5

    #下载
    curl -O http://download.redis.io/releases/redis-5.0.5.tar.gz
    tar zxvf redis-5.0.5.tar.gz
    cd redis-5.0.5
    make

    建立redis文件夹(文件夹随意 , 只是存放配置文件使用) 

    mkdir -p /home/redishome/redis_7000
    mkdir -p /home/redishome/redis_7001

    写redis配置文件 , 例子是7000端口的配置 , 可复制一份,更改端口变成7001的配置

    [root@localhost redis_7000]# more redis.conf 
    #载入默认配置
    include /home/redishome/redis/redis-5.0.5/redis.conf
    #端口
    port 7000
    #启用集群模式
    cluster-enabled yes
    cluster-config-file nodes_7000.conf
    #超时时间
    cluster-node-timeout 5000 
    appendonly yes
    #后台运行
    daemonize yes
    #非保护模式
    protected-mode no
    #文件存放路径
    dir /home/redishome/redis_7000
    #运行pid存放位置
    pidfile  /var/run/redis_7000.pid
    #集群密码
    masterauth FEEA50BC03C64BBFB6E22CAC521985E0
    #访问密码
    requirepass FEEA50BC03C64BBFB6E22CAC521985E0
    #取消本机限制
    bind 0.0.0.0
    #禁用危险命令
    rename-command FLUSHALL "ACA1B8FF9A8B2483C919C7943E74D674B"
    rename-command FLUSHDB "A7B682D816AF048AF840E1E48F6B0484B"
    rename-command KEYS "AEEB6C33C536646F2B8D9096BA58BD290"
    rename-command CONFIG "A7A59439DB1A54C16AC8C143AD289CD2B"

    三台服务器全部使用一样的配置(注意 , 密码也需要所有集群都一样)

    安装好之后,每台服务器编制启动文件,redis-start.sh

    #!/bin/sh
    /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7000/redis.conf &
    /home/redishome/redis/redis-5.0.5/src/redis-server /home/redishome/redis_7001/redis.conf &

    直接启动即可.

    五 . 建立集群

    redis-cli -a FEEA50BC03C64BBFB6E22CAC521985E0 --cluster create 
    172.18.0.231:7000 172.18.0.231:7001 
    172.18.0.232:7000 172.18.0.232:7001 
    172.18.0.233:7000 172.18.0.233:7001 
    --cluster-replicas 1

    其中 --cluster-replicas 1 代表建立的是1主1从的方式 (按照顺序配置) , 2代表1主2从

    执行结果 :  (注意 , 中间提示确认时, 一定要打入yes全部,而不是y)

    [root@localhost ~]# redis-cli -a FEEA50BC03C64BBFB6E22CAC521985E0 --cluster create 172.18.0.231:7000 172.18.0.231:7001 172.18.0.232:7000 172.18.0.232:7001 172.18.0.233:7000 172.18.0.233:7001 --cluster-replicas 1
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 172.18.0.232:7001 to 172.18.0.231:7000
    Adding replica 172.18.0.233:7001 to 172.18.0.232:7000
    Adding replica 172.18.0.231:7001 to 172.18.0.233:7000
    M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
       slots:[0-5460] (5461 slots) master
    S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
       replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
    M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
       slots:[5461-10922] (5462 slots) master
    S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
       replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
    M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
       slots:[10923-16383] (5461 slots) master
    S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
       replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    ..
    >>> Performing Cluster Check (using node 172.18.0.231:7000)
    M: f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e 172.18.0.231:7000
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: 9fa843537e5cdd34bb37f8117c51f86aa311b918 172.18.0.233:7000
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    S: 502b9e3a8f1ed01653d0f3f93946f9c3cea5b0cc 172.18.0.231:7001
       slots: (0 slots) slave
       replicates 9fa843537e5cdd34bb37f8117c51f86aa311b918
    S: cc2d72c68ca90732232ecef03d66e65de25e62d0 172.18.0.233:7001
       slots: (0 slots) slave
       replicates b73514294398fc8f45d2cb163499e2ef046cc6bb
    M: b73514294398fc8f45d2cb163499e2ef046cc6bb 172.18.0.232:7000
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    S: 9542274db9dc6ee9f8b7ef91f9c3eb22351cbf88 172.18.0.232:7001
       slots: (0 slots) slave
       replicates f40abe2e5c79d06fbe803baa01b7f0501a8bcf3e
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.

    集群建立就成功了.

    六 . 其他命令

    #批量kill掉所有redis进程
    ps -ef|grep redis|grep -v grep|awk  '{print "kill -9 " $2}' | sh
    #查看集群状态
    redis-cli -c -p 7000 -a FEEA50BC03C64BBFB6E22CAC521985E0
    #查看节点明细情况
    > cluster nodes
    #查看集群情况
    > cluster info
  • 相关阅读:
    XOR linked list
    Doubly Linked List&DLL(双向链表)
    circular linked list&CLL(循环链表)
    Linked list(单链表)
    malloc() & free()
    Mysql 1045
    DoublePointer (**)
    java.sql.SQLException: Operation not allowed after ResultSet closed
    Array
    java-方法
  • 原文地址:https://www.cnblogs.com/kreo/p/4399612.html
Copyright © 2011-2022 走看看