redis單節點安裝及cluster的安裝
單點安裝
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
tar zxvf redis-4.0.1.tar.gz -C /usr/local
cd /usr/local/redis-4.0.2
make
make test
make PREFIX=/usr/local/redis install
cd /usr/local/redis
mkdir conf log data
cd /usr/local/redis/conf
cp /usr/local/redis-4.0.2/redis.conf .
修改內核參數:
echo ‘vm.overcommit_memory = 1‘ >> /etc/sysctl.conf sysctl -p
修改配置文件
主要修改以下值
daemonize no改為daemonize yes,以守護進程模式運行
bind 127.0.0.0改為bind 0.0.0.0,監聽本機所有端口
以下為一個cluster node redis.conf配置文件
[root@10-110-122-196 src]# cat /usr/local/redis-cluster-shijing2/redis/conf/7379.conf bind 0.0.0.0 protected-mode yes port 7379 requirepass [email protected] masterauth [email protected] maxmemory 4000000000 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes supervised no pidfile "/var/run/redis_7379.pid" loglevel notice logfile "../log/redis_7379.log" databases 16 always-show-logo yes save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "../data" slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no slave-lazy-flush no appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble no lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes cluster-enabled yes cluster-config-file "7379.conf"
cluster搭建
1.將單點redis.conf復制多份
[root@10-110-122-196 conf]# pwd /usr/local/redis-cluster-shijing2/redis/conf [root@10-110-122-196 conf]# ll total 28 -rw-r--r-- 1 root root 1362 May 31 16:52 7379.conf -rw-r--r-- 1 root root 1362 May 31 16:52 7380.conf -rw-r--r-- 1 root root 1362 May 31 16:53 7381.conf -rw-r--r-- 1 root root 1362 May 31 16:53 7382.conf -rw-r--r-- 1 root root 1362 May 31 16:53 7383.conf -rw-r--r-- 1 root root 1362 May 31 16:53 7384.conf
配置文件需要修改的地方
需要更改的值有
port pidfile cluster-config-file logfile
,使用sed命令進行批量統一更改即可需要加入的值為
cluster-enabled yes
其中dbfilename的文件名和dir路徑可以不變
2.cluster的初始化
ruby環境安裝
yum -y install gcc ruby ruby-devel rubygems rpm-build zlib
ruby-redis接口安裝(ruby版本太低可以使用rvm安裝)
gem install redis
啟動各節點,初始化集群
cd到 redis/src中,找到redis-trib.rb文件,執行
redis-trib.rb create --replicas 1 host_ip:prot1 host_ip:port2
例:./redis-trib.rb create --replicas 1 10.110.122.196:7379 10.110.122.196:7380 10.110.122.196:7381 10.110.122.196:7382 10.110.122.196:7383 10.110.122.196:7384
其中--replicas 1表示有一個slave,以上例子中共6個實例,表示3主3從
執行到這裏之後基本就完成了集群的搭建;
3.redis-cluster添加密碼
如果redis實例添加了密碼,則需要修改redis-trib.rb文件
在def connect(o={})
這個函數中,
將@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60)
改成
@r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60, :password => "填入你的redis密碼")
然後再在初始化
同時單個實例中的配置文件需要寫入requirepass
和masterauth
的值,以便密碼永久保存
如下例
requirepass [email protected]
masterauth [email protected]
4.查看cluster狀態
10.110.122.196:7379> CLUSTER info
cluster_state:ok
10.110.122.196:7379> CLUSTER NODES
735d1a01bd4a8cba0d37fab42d1764775cb91cfd 10.110.122.196:7381@17381 master - 0 1527762245102 3 connected 10923-16383
bfd7678b97b5bb627a34e71d09b67982ecce4a7b 10.110.122.196:7384@17384 slave 735d1a01bd4a8cba0d37fab42d1764775cb91cfd 0 1527762247108 6 connected
5.節點相互meet
在redis-cli 中 使用 meet IP PORT
即可與其它節點握手
redis的優化
- 密碼設置
10.110.122.196:7379> config set requirepass [email protected]
- 最大內存設置,建議設定,否則會占用系統最大內存
10.110.122.196:7379> CONFIG SET maxmemory 4G
每個節點上面都需要設置,集群最大內存大小為master最大內存總和
設置之後,使用info可以查看到最大內存值
也可以使用config get maxmemory
以上兩者需要持久化保持時,必須寫入配置文件中
- 對應實例密碼寫入,在集群初始化的時候,可以先不進行指定,直接初始化,然後在redis-cli中使用
config set masterauth "[email protected]"
和config set requirepass "[email protected]"
指定兩個值,同時在使用config rewrite
保存,這兩個值需要在所有集群實例上進行設定
redis單節點安裝及cluster的安裝