作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
Redis(本章节)
Etcd
Redis如果是使用比较旧的版本,就必须有ruby相关的支持,所以我们这里使用的前面编译的二进制来部署。(6个节点,3主3从)。
准备6个Redis实例,监听端口规划如下:
为每个端口创建配置文件(以7001为例):
mkdir -p redis-cluster
cd redis-cluster
# 为每个端口创建配置文件和目录
for port in 7001 7002 7003 7004 7005 7006; do
mkdir -p $port
cat > $port/redis.conf <<EOF
port $port
cluster-enabled yes
cluster-config-file nodes-$port.conf
cluster-node-timeout 5000
appendonly yes
dir ./
daemonize no
protected-mode no
bind 0.0.0.0
EOF
done# 启动6个Redis实例
for port in 7001 7002 7003 7004 7005 7006; do
redis-server $port/redis.conf &
done
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:53d479ffd8a79cb8ecfa5014ab238630c3423e2c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0使用 redis-cli --cluster create 命令创建集群:前3个是主节点,后面3个是从节点。
redis-cli --cluster create \
127.0.0.1:7001 \
127.0.0.1:7002 \
127.0.0.1:7003 \
127.0.0.1:7004 \
127.0.0.1:7005 \
127.0.0.1:7006 \
--cluster-replicas 1
5.再次查看主从状态
这个是已经按照我们预期7001和7004组成了一个主从集群,另外2个类似。
[root@localhost redis-cluster]# redis-cli -p 7001
127.0.0.1:7001> info
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=7004,state=online,offset=252,lag=1
master_failover_state:no-failover
master_replid:5dddaedbcf16e4efcee28bfba40cf1b0b1428e59
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:252
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2526.查看集群状态
[root@localhost redis-cluster]# redis-cli -p 7001
127.0.0.1:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:707
cluster_stats_messages_pong_sent:703
cluster_stats_messages_sent:1410
cluster_stats_messages_ping_received:698
cluster_stats_messages_pong_received:707
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1410
total_cluster_links_buffer_limit_exceeded:0
cluster_slot_migration_active_tasks:0
cluster_slot_migration_active_trim_running:0
cluster_slot_migration_active_trim_current_job_keys:0
cluster_slot_migration_active_trim_current_job_trimmed:0
cluster_slot_migration_stats_active_trim_started:0
cluster_slot_migration_stats_active_trim_completed:0
cluster_slot_migration_stats_active_trim_cancelled:0
127.0.0.1:7001> cluster nodes
70e246423009e8ec9d10364b76ab56161193bf77 127.0.0.1:7003@17003 master - 0 1768833882000 3 connected 10923-16383
ae557e67062f7a6aa7368f4e249e37ad8823fbdd 127.0.0.1:7005@17005 slave 24b4b8415b6761cbb3e253765a25073c93a07308 0 1768833882840 2 connected
fdb93ba3ee8daf72f47aba81c609b052fd59beeb 127.0.0.1:7004@17004 slave 2b3dbf190a7ce625cc438c9af2628330ea8d044e 0 1768833883845 1 connected
24b4b8415b6761cbb3e253765a25073c93a07308 127.0.0.1:7002@17002 master - 0 1768833883544 2 connected 5461-10922
cedb74c1196cd41d72dc3686cd72c47d6ebaa049 127.0.0.1:7006@17006 slave 70e246423009e8ec9d10364b76ab56161193bf77 0 1768833883543 3 connected
2b3dbf190a7ce625cc438c9af2628330ea8d044e 127.0.0.1:7001@17001 myself,master - 0 0 1 connected 0-5460
127.0.0.1:7001> # 停止一个主节点(模拟故障)
redis-cli -p 7001 shutdown
# 检查从节点是否升为主节点
redis-cli -p 7004 cluster nodes