1. 程式人生 > >redis-部署=高可用

redis-部署=高可用

。;‘/

centos6.9環境部署
mkdir -p /data --創建目錄

下載安裝包:wget http://download.redis.io/releases/redis-3.2.6.tar.gz
解壓:tar xf redis-3.2.6.tar.gz
進入解壓目錄進行編譯:cd redis-3.2.6 && make
進入到/data目錄:mkdir redis6380
復制到/redis6380目錄:
cp redis-3.2.6/src/redis-server redis6380/
cp redis-3.2.6/redis.conf redis6380/
[root@db02 redis6380]# foo1=grep ‘^[^#|$]‘ redis.conf

&& echo "${foo1}" >redis.conf
配置文件: 1 bind 127.0.0.1
2 protected-mode yes
3 requirepass root
4 port 6380
5 tcp-backlog 511
6 timeout 0
7 tcp-keepalive 300
8 daemonize yes
9 supervised no
10 pidfile /var/run/redis_6380.pid
11 loglevel notice
12 logfile "redis6380.log"
啟動:[root@db02 redis6380]# ./redis-server ./redis.conf技術分享圖片

進行連接:
[root@db02 redis6380]# cd ../redis-3.2.6/src/
[root@db02 src]# ./redis-cli -p 6380
127.0.0.1:6380>
創建軟連接:
[root@db02 src]# ln -s /data/redis-3.2.6/src/redis-cli /usr/bin/redis-cli
[root@db02 src]# cd
[root@db02 ~]# redis-cli -p 6380
127.0.0.1:6380>
進行用戶認證:
127.0.0.1:6380> auth root
OK

redis主從切換
127.0.0.1:6380> info replication

Replication

role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6380> SHUTDOWN
not connected> exit
[root@db02 ~]#
創建redis6381目錄
[root@db02 data]# ls
redis-3.2.6 redis-3.2.6.tar.gz redis6380
[root@db02 data]# mkdir redis6381
[root@db02 data]# cp redis-3.2.6/src/redis-server redis6381/
[root@db02 data]# cp redis-3.2.6/redis.conf redis6381
[root@db02 data]# cd redis6381
[root@db02 redis6381]# ls
redis.conf redis-server
[root@db02 redis6381]# foo1=grep ‘^[^#|$]‘ redis.conf && echo "${foo1}" >redis.conf
6381目錄下的redis.conf配置文件進行一下修改
bind 127.0.0.1
protected-mode yes
requirepass root
port 6381
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6381.pid
loglevel notice
logfile "redis6381.log"

進行連接驗證:
[root@db02 redis6381]# ./redis-server redis.conf
[root@db02 redis6381]# redis-cli -p 6381
127.0.0.1:6381> auth root
OK
127.0.0.1:6381> info replication

Replication

role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6381> SHUTDOWN
not connected> exit

創建redis6382目錄:

[root@db02 data]# cp redis-3.2.6/src/redis-server redis6382/
[root@db02 data]# cp redis-3.2.6/redis.conf redis6382
[root@db02 data]# ll
總用量 1528
drwxrwxr-x 6 root root 4096 12月 6 2016 redis-3.2.6
-rw-r--r-- 1 root root 1544806 12月 6 2016 redis-3.2.6.tar.gz
drwxr-xr-x 2 root root 4096 3月 8 19:06 redis6380
drwxr-xr-x 2 root root 4096 3月 8 19:19 redis6381
drwxr-xr-x 2 root root 4096 3月 8 19:21 redis6382
[root@db02 data]# cd redis6382
[root@db02 redis6382]# ls
redis.conf redis-server
[root@db02 redis6382]# foo1=grep ‘^[^#|$]‘ redis.conf && echo "${foo1}" >redis.conf

修改配置文件:
bind 127.0.0.1
protected-mode yes
requirepass root
port 6382
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6382.pid
loglevel notice
logfile "redis6382.log"
測試連接
[root@db02 redis6382]# ./redis-server redis.conf
[root@db02 redis6382]# redis-cli -p 6382
127.0.0.1:6382> auth root
OK
127.0.0.1:6382> info replication

Replication

role:master ----主
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6382>

此時三個都將成為主
此時我想讓6381成為主,首先,先把6382和6380SHUTDOWN.
在6381連接窗口輸入slaveof no one、讓6381稱為主,然後再啟動6380和6382在連接窗口輸入slaveof 127.0.0.1 6381(意思是指向主)

[root@db02 data]# mkdir s26383
[root@db02 data]# cp redis-3.2.6/src/redis-sentinel s26383/
[root@db02 data]# cp redis-3.2.6/sentinel.conf s26383/
[root@db02 data]#cd s26383/
[root@db02 s26383]# ls
redis-sentinel sentinel.conf
[root@db02 s26383]# foo1=grep ‘^[^#|$]‘ sentinel.conf && echo "${foo1}" >sentinel.conf
[root@db02 s26383]# cat sentinel.conf
port 26383
dir /tmp
sentinel monitor mymaster 127.0.0.1 6380 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

啟動:./redis-sentinel sentinel.conf

[root@db02 redis6381]# ll
總用量 8804
-rw-r--r-- 1 root root 92 3月 8 21:14 dump.rdb
-rw-r--r-- 1 root root 1173896 3月 8 21:37 redis6381.log
-rw-r--r-- 1 root root 1201 3月 8 19:15 redis.conf
-rwxr-xr-x 1 root root 7826304 3月 8 19:09 redis-server
[root@db02 redis6381]# cd ..
[root@db02 data]# cp -r redis6381/ redis6384
[root@db02 data]# ls
redis-3.2.6 redis-3.2.6.tar.gz redis6380 redis6381 redis6382 redis6384 s26383
[root@db02 data]# cd redis6384
[root@db02 redis6384]# ll
總用量 8820
-rw-r--r-- 1 root root 92 3月 8 21:37 dump.rdb
-rw-r--r-- 1 root root 1194800 3月 8 21:37 redis6381.log
-rw-r--r-- 1 root root 1201 3月 8 21:37 redis.conf
-rwxr-xr-x 1 root root 7826304 3月 8 21:37 redis-server
[root@db02 redis6384]# cat redis.conf |head -14
bind 127.0.0.1
protected-mode yes
requirepass root
port 6384
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6384.pid
loglevel notice
啟動
[root@db02 redis6384]# ./redis-server ./redis.conf
[root@db02 redis6384]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Prog
tcp 0 0 127.0.0.1:6380 0.0.0.0: LISTEN 8303/./r
tcp 0 0 127.0.0.1:6381 0.0.0.0:
LISTEN 8397/./r
tcp 0 0 127.0.0.1:6382 0.0.0.0: LISTEN 8402/./r
tcp 0 0 0.0.0.0:26383 0.0.0.0:
LISTEN 8441/./r
tcp 0 0 127.0.0.1:6384 0.0.0.0: LISTEN 8469/./r
tcp 0 0 0.0.0.0:22 0.0.0.0:
LISTEN 1223/ssh
tcp 0 0 :::26383 ::: LISTEN 8441/./r
tcp 0 0 :::22 :::
LISTEN 1223/ssh
[root@db02 redis6384]# redis-cli -p 6384
127.0.0.1:6384> auth root
OK
127.0.0.1:6384> slaveof 127.0.0.1 6380
OK

redis-部署=高可用