1. 程式人生 > >redis單節點安裝及cluster的安裝

redis單節點安裝及cluster的安裝

out tcp 實例 enc fix 修改配置 成了 release code

單點安裝

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密碼")

然後再在初始化

同時單個實例中的配置文件需要寫入requirepassmasterauth的值,以便密碼永久保存
如下例

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的安裝