Redis cluster construction and monitoring environment
Realization of 3 Master 3 slave virtual machine standalone ip:192.168.40.128
Cluster Basic building
Simple download
Passwget http://download.redis.io/releases/redis-4.0.10.tar.gz
Unziptar zxvf redis-4.0.10.tar.gz
Specify the installation path, switch root user execution make && make PREFIX=/usr/local/redis install
, may appear insufficient permissions problem, sudo will also error, directly using ROOT to operate.
Installing the Build Tool
Create a Redis Cluster folder
Modifying a configuration file
Copy the config file in Redis conf to six folders, and modify the following
# port number Port 7000 # background boot daemonize Yes # turn on cluster cluster-enabled Yes #集群节点配置文件 Cluster-config-file nodes-7000.conf # Cluster Connection timeout time cluster-node-timeout # process PID file location pidfile/ home/ubuntu/redis-4.0.10/pid/redis-7000.pid# working folder Dir "/home/ubuntu/redis-4.0.10/working" # Open aof appendonly Yes # aof file path appendfilename "appendonly-7005.aof" # rdb file path dbfilename Dump-7000.rdb
The bind in the Redis configuration file specifies the NIC IP of the Redis server, which is the IP of the Redis server
Startup scripts
cd /home/ubuntu/redis-4.0.10/
touch start.link.sh
For easy operation, create scripts
Modify the startup script to
#!/bin/bashexport 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
It is noted that in order to simplify the initial start-up, IP needs to be consistent with the bind attribute binding in the redis.conf configured by each node, and can be started by Ps-ef | grep redis command queries whether the corresponding thread is started
Cluster boot
The Affiliate program uses Ruby written, so to build the Rudy Environment, you need to install Rudbygem
sudo apt-get install ruby rubygems -y
Gem install Redis, run here will feel very slow, need to wait patiently, in the Redis installation directory, src folder redis-trib.rb
Run 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
, check the configured information for errors, no direct Yes is available. [OK] All 16384 slots covered.
Represents the success of the cluster start-up.
Node view, restart
View cluster Run Status: Use the command ./redis-trib.rb check 192.168.40.128:7000
to check the status of the cluster
Performance testing
Bring your own test tool Redis-benchmark
redis-benchmark -h 192.168.40.128 -p 6379 -c 100 -n 100000
100 concurrent connections, 100,000 requests, detects Redis server performance with host localhost port 6379.
redis-benchmark -h 192.168.40.128 -p 6379 -q -d 100
Test the performance of a packet that accesses a size of 100 bytes.
redis-benchmark -t set,lpush -n 100000 -q
Test only the performance of certain operations.
redis-benchmark -n 100000 -q script load "redis.call(‘set’,’foo’,’bar’)"
Test only the performance of certain numeric accesses.
Cluster password settings
Cluster construction initially does not require a password, after the start of the completion, the first look at each node's configuration file has read and write permissions, if there is no read and write permissions, need to chmod modify read and write permissions, through
./redis-cli-c-P portconfig set Masterauth passwordconfig set Requirepass passwordconfig rewrite
Connect each node individually to set up
To restart the discovery connection is not on, modify the startup script redis-.sh 99 line, configure the startup script password to start
@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60,:password => "yangfan@1995")
Code testing
/* Cluster Connection Test */@Testpublic void Testjediscluster () { set
The relationship between master-slave mode, Sentinel, and cluster
Master-Slave mode specifies a replication and persistence relationship, specifying the relationship between master and slave backups
Sentinel: When the primary database encounters an exception interrupt service, developers can manually select a database to be upgraded to the primary database, so that the system can continue to provide services. Mainly in order to solve the master-slave replication manual Switch master-slave relationship detection Tool, can automatically switch master and slave.
With Sentinels, each instance of Redis is also a full-volume storage, and each Redis storage is full of data, wasting memory and having a cask effect. In order to maximize the use of memory, you can use a cluster, which is distributed storage. That is, each Redis stores a different content, with a total of 16,384 slots. Each redis has some slot,hash_slot = CRC16 (key) mod 16384 find the corresponding slot, the key is the available key, if there is {} then take {} as the available key, or the entire key is available key cluster requires at least 3 master 3 from, and each instance uses a different configuration file , the master and slave configuration, the cluster will choose their own.
Monitoring deployment
Redislive Build Deployment
Run Environment deployment
git clone https://github.com/kumarnitin/RedisLive.git
Download Redislive, unzipunzip -o -d /home/ubuntu/ RedisLive-master.zip
Go to the SRC folder, copy the example file, edit
"Redisservers": [ { "server": "192.168.40.128", "port": 7000, "password": "yangfan@1995" }, //... Multiple listening], "Datastoretype": "Redis", "redisstatsserver"://Storage of Redis Listener interface { "server": "127.0.0.1", "port": 6379}, " Sqlitestatsstore ": { " path ": "/home/ubuntu/redis-4.0.10/working/redislive.db "//file to be stored}}
ubuntu@ubuntu:~/redis-4.0.10$ mkdir pid
ubuntu@ubuntu:~/redis-4.0.10$ mkdir log
ubuntu@ubuntu:~/redis-4.0.10$ mkdir working
Save the Aof,rdb,node-config file.
Redislive is divided into two parts, one of which is the monitoring script and the other part is the Web service, so it needs to be started separately. './redis-monitor.py
--duration=120`./redis-live.py
Q&a
-
Redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException:No Reachable node in cluster Redis node's redis.conf bound IP is set to the specified Redis nodes IP, starts the cluster with the specified IP only, does not use 192.168.40.128
-
Connect refuse turn off firewall
-
No module named Redis
-
View Python location which Python
-
First backup sudo cp/usr/bin/python/usr/bin/python_cp
-
Remove sudo rm/usr/bin/python
-
is set to python3.5 by default, creating a link sudo ln-s/usr/bin/python3.5/usr/bin/python