Heim  >  Artikel  >  Java  >  Redis-Clusteraufbau und Redislive-Überwachung und -Bereitstellung

Redis-Clusteraufbau und Redislive-Überwachung und -Bereitstellung

php是最好的语言
php是最好的语言Original
2018-08-09 17:36:571794Durchsuche

Redis-Cluster-Aufbau- und Überwachungsumgebung

Erzielung eines Clusters aus 3 Mastern und 3 Slaves. Einzelmaschinen-IP: 192.168.40.128

Grundlegender Cluster-Aufbau

Einfacher Download

  • Dekomprimieren Sie wget http://download.redis.io/releases/redis-4.0.10.tar.gz

  • , indem Sie den Installationspfad angeben und zur Ausführung zum Root-Benutzer wechseln tar zxvf redis-4.0.10.tar.gz. Möglicherweise liegt ein unzureichendes Problem vor Berechtigungen, sudo meldet auch einen Fehler, verwenden Sie root direkt zum Betrieb.

  • make && make PREFIX=/usr/local/redis installKompilierungstools installieren


  • sudo apt-get update

  • sudo apt-get install gcc

  • sudo apt-get install make

  • sudo apt-get install tclRedis-Cluster-Ordner erstellen


Da es /usr ist, wird der Vorgang immer mit Root-Berechtigungen ausgeführt

  • cd /usr/local/redis

  • mkdir cluster

  • cd cluster

  • mkdir 7000 7001 7002 7003 7004 7005 Ändern Sie die Konfigurationsdatei

  • Kopieren Sie die Konfigurationsdatei in Redis Conf in sechs Ordner und ändern Sie den folgenden Inhalt
# 端口号  
port 7000  
# 后台启动  
daemonize yes  
# 开启集群  
cluster-enabled yes  
#集群节点配置文件  
cluster-config-file nodes-7000.conf  
# 集群连接超时时间  
cluster-node-timeout 5000  
# 进程pid的文件位置  
pidfile /home/ubuntu/redis-4.0.10/pid/redis-7000.pid
#工作文件夹
dir "/home/ubuntu/redis-4.0.10/working"
# 开启aof  
appendonly yes  
# aof文件路径  
appendfilename "appendonly-7005.aof"  
# rdb文件路径  
dbfilename dump-7000.rdb

bind in der Redis-Konfigurationsdatei gibt die Netzwerkkarten-IP des Redis-Servers an, d. h. die IP des Redis-Servers

Startskript


  • cd /home/ubuntu/redis-4.0.10/ für den Betrieb Einfach , erstellen Sie das Skript

  • und ändern Sie das Startskript in touch start.link.sh

  • #!/bin/bash
    export BASE_FLOD="/usr/local/redis"
    {BASE_FLOD}/bin/redis-server /usr/local/redis/cluster/7000/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7001/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7002/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7003/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7004/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis/cluster/7005/redis.conf
    #cd src
    #./redis-trib.rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.128:7003 192.168.40.128:7004 192.168.40.128:7005
  • . Die IP muss sein bezogen auf jeden Knoten. Nach dem Start können Sie mit dem Befehl ps -ef | überprüfen, ob der entsprechende Thread gestartet ist

  • Cluster Startup


Das zugehörige Programm ist in Ruby geschrieben. Um also eine Rudy-Betriebsumgebung zu erstellen, müssen Sie Rudbygem installieren

  • gem install redis wird sich beim Ausführen hier sehr langsam anfühlen. Sie müssen geduldig warten. Führen Sie im Redis-Installationsverzeichnis den src-Ordner redis-trib.rb aus >sudo apt-get install ruby rubygems -y

    , um die Konfigurationsinformationen zu überprüfen, sagen Sie einfach „Ja“, was bedeutet, dass die Gruppenverbindung erfolgreich gestartet wurde.
  • Knotenansicht, Neustart
  • Anzeigen des Cluster-Laufstatus: Verwenden Sie den Befehl redis-trib.rb create --replicas 1 192.168.40.128:7000 192.168.40.128:7001 192.168.40.128:7002 192.168.40.128:7003 192.168.40.128:7004 192.168.40.128:7005, um den Status des Clusters zu überprüfen[OK] All 16384 slots covered.

  • Leistungstest

Kommt mit dem Testtool Redis-Benchmark

./redis-trib.rb check 192.168.40.128:7000

100 gleichzeitige Verbindungen, 100.000 Anfragen, um die Leistung des Redis-Servers zu ermitteln Host localhost und Port 6379 .

Testen Sie die Leistung beim Zugriff auf Datenpakete mit einer Größe von 100 Byte.
  • redis-benchmark -h 192.168.40.128 -p 6379 -c 100 -n 100000

    Testen Sie nur die Leistung bestimmter Vorgänge.
  • redis-benchmark -h 192.168.40.128 -p 6379 -q -d 100

    Testen Sie nur die Leistung bestimmter numerischer Zugriffe.
  • redis-benchmark -t set,lpush -n 100000 -q

    Cluster-Passworteinstellungen
  • Für die anfängliche Cluster-Einrichtung ist kein Passwort erforderlich. Überprüfen Sie nach Abschluss des Startvorgangs zunächst, ob die Konfigurationsdatei jedes Knotens vorhanden ist Lese- und Schreibberechtigungen. Wenn Sie keine Lese- und Schreibberechtigungen haben, müssen Sie die einzelnen Knoten über

    ./redis-cli -c -p port
    config set masterauth password
    config set requirepass password
    config rewrite
    redis-benchmark -n 100000 -q script load "redis.call(‘set’,’foo’,’bar’)" ändern Starten Sie neu und stellen Sie fest, dass die Verbindung nicht erreicht werden kann, ändern Sie das Startskript redis-.sh Zeile 99 und konfigurieren Sie den Start des Startskript-Passworts


Codetest

/*
 *集群连接测试
 */

@Test
public void testJedisCluster() {
    Set<HostAndPort> nodes = new LinkedHashSet<>();
    //所有主机节点ip和端口
    nodes.add(new HostAndPort("192.168.40.128", 7000));
    nodes.add(new HostAndPort("192.168.40.128", 7001));
    nodes.add(new HostAndPort("192.168.40.128", 7002));
    nodes.add(new HostAndPort("192.168.40.128", 7003));
    nodes.add(new HostAndPort("192.168.40.128", 7004));
    nodes.add(new HostAndPort("192.168.40.128", 7005));
    //没有密码
    //JedisCluster cluster = new JedisCluster(nodes);
    //添加密码调用
    JedisCluster cluster = new JedisCluster(nodes, 5000, 5000, 10, "yangfan@1995", new GenericObjectPoolConfig());
    //cluster.zadd("test_1", String.valueOf(""),"id_2");
    System.out.println(cluster.zscore("test_1", "id_1"));
    try {
        cluster.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Beziehung zwischen Master-Slave-Modus, Sentry und Cluster



@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60,:password => "yangfan@1995")Der Master-Slave-Modus gibt die Replikations- und Persistenzbeziehung sowie die Master-Slave-Sicherungsbeziehung an


Sentinel: Wenn die Hauptdatenbank auf eine Ausnahme stößt und den Dienst unterbricht, können Entwickler manuell eine Slave-Datenbank auswählen, um ein Upgrade auf die Master-Datenbank durchzuführen, damit das System weiterhin Dienste bereitstellen kann. Es handelt sich hauptsächlich um ein Erkennungstool zur Lösung des Problems des manuellen Wechsels der Master-Slave-Beziehung während der Master-Slave-Replikation und kann automatisch zwischen Master und Slave wechseln.
  • 使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,共有16384个slot。每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。

  • 监控部署

    RedisLive搭建部署


    运行环境部署

    1. git clone https://github.com/kumarnitin/RedisLive.git
        下载redislive,解压缩unzip -o -d /home/ubuntu/ RedisLive-master.zip

    2. 进入src文件夹,复制example文件,编辑

      "RedisServers":
      [
          {
          "server": "192.168.40.128",
          "port" : 7000,
          "password" : "yangfan@1995"
          },
          //...多个监听
      ],
      
      "DataStoreType" : "redis",
      
      "RedisStatsServer": //存储的redis监听接口
      {
          "server" : "127.0.0.1",
          "port" : 6379
      },
      
      "SqliteStatsStore" :
      {
          "path":  "/home/ubuntu/redis-4.0.10/working/redislive.db" //进行存储的文件
      } }
    3. ubuntu@ubuntu:~/redis-4.0.10$ mkdir pid  
      ubuntu@ubuntu:~/redis-4.0.10$ mkdir log  
      ubuntu@ubuntu:~/redis-4.0.10$ mkdir working
        //保存aof,rdb,node-config文件。

    4. RedisLive分为两部分,其中一部分为监控脚本,另一部分为web服务,所以需要分别启动。`./redis-monitor.py
        --duration=120`./redis-live.py

    Q&A

    1. redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachable node in cluster redis node的redis.conf 绑定ip设置为指定的redis节点ip,启动集群时只用指定ip启动,不使用192.168.40.128

    2. connect refuse  关闭防火墙

    3. No module named redis

    • 查看python位置 which python

    • 先备份 sudo cp /usr/bin/python /usr/bin/python_cp

    • 删除 sudo rm /usr/bin/python

    • 默认设置成python3.5,创建链接 sudo ln -s /usr/bin/python3.5 /usr/bin/python

    相关推荐:

    Redis集群搭建全记录

    Redis集群部署及常用的操作命令

    Das obige ist der detaillierte Inhalt vonRedis-Clusteraufbau und Redislive-Überwachung und -Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn