You've already forked www.colben.cn
							
							update
This commit is contained in:
		| @@ -1,146 +1,144 @@ | |||||||
| --- | --- | ||||||
| title: "CentOS7 安装 Redis 集群" | title: "CentOS7 安装 Redis 集群" | ||||||
| date: 2019-11-29T15:14:29+08:00 | date: 2019-11-29T15:14:29+08:00 | ||||||
| lastmod: 2019-11-29T15:14:29+08:00 | lastmod: 2023-03-01T20:03:00+08:00 | ||||||
| tags: ["redis"] | tags: ["redis"] | ||||||
| categories: ["database"] | categories: ["database"] | ||||||
| --- | --- | ||||||
|  |  | ||||||
| ## 环境 | ## 环境 | ||||||
| - 操作系统: CentOS7.7,关闭 firewalld 和 selinux | - 操作系统: CentOS7.9,关闭 firewalld 和 selinux | ||||||
| - Redis: 5.0.6 | - Redis: 5.0.14 | ||||||
| - master 实例 | - master 实例 | ||||||
|     - 10.0.4.110:6371 |     - 10.0.4.110:6371 | ||||||
|     - 10.0.4.110:6372 |     - 10.0.4.110:6372 | ||||||
|     - 10.0.4.110:6373 |     - 10.0.4.110:6373 | ||||||
|  |  | ||||||
| - slave 实例 | - slave 实例 | ||||||
|     - 10.0.4.111:6371 |     - 10.0.4.111:6371 | ||||||
|     - 10.0.4.111:6372 |     - 10.0.4.111:6372 | ||||||
|     - 10.0.4.111:6373 |     - 10.0.4.111:6373 | ||||||
|  |  | ||||||
| ## 编译 redis server | ## 编译 redis server | ||||||
| - 在 CentOS7.7 测试服务器上下载、编译 | - 在 CentOS7.9 测试服务器上下载、编译 | ||||||
|     ```bash |     ```bash | ||||||
|     wget http://download.redis.io/releases/redis-5.0.6.tar.gz |     curl -LO http://download.redis.io/releases/redis-5.0.14.tar.gz | ||||||
|     tar xzf redis-5.0.6.tar.gz |     tar zxf redis-5.0.14.tar.gz | ||||||
|     cd redis-5.0.6 |     cd redis-5.0.14 | ||||||
|     make |     make | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 抽取安装文件 | - 抽取安装文件 | ||||||
|     ```bash |     ```bash | ||||||
|     mkdir -p /opt/redis_cluster/{bin,conf} |     mkdir -p /opt/redis/{bin,conf} | ||||||
|     cp src/{redis-server,redis-cli,redis-benchmark} /opt/redis_cluster/bin/ |     cp src/{redis-server,redis-cli,redis-benchmark} /opt/redis/bin/ | ||||||
|     # redis-check-rdb 和 redis-check-aof 与 redis-server 校验值一致,无需复制 |     cd /opt/redis/bin | ||||||
|  |     ln -s redis-server redis-check-aof | ||||||
|  |     ln -s redis-server redis-check-rdb | ||||||
|  |     ln -s redis-server redis-sentinel | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | - 创建 /opt/redis/conf/redis-6379.conf,常用配置如下 | ||||||
|     ``` |     ``` | ||||||
| - 创建 /opt/redis_cluster/conf/redis.conf,常用配置如下 |  | ||||||
|     ```bash |  | ||||||
|     bind 0.0.0.0 |     bind 0.0.0.0 | ||||||
|     protected-mode yes |     protected-mode no | ||||||
|     tcp-backlog 511 |     port 6379 | ||||||
|     timeout 3600 |     daemonize yes | ||||||
|     tcp-keepalive 300 |  | ||||||
|     daemonize no |  | ||||||
|     supervised no |     supervised no | ||||||
|  |     pidfile log/redis-6379.pid | ||||||
|     loglevel notice |     loglevel notice | ||||||
|  |     logfile log/redis-6379.log | ||||||
|     always-show-logo no |     always-show-logo no | ||||||
|  |     #save "" | ||||||
|     save 900 1 |     save 900 1 | ||||||
|     save 300 10 |     save 300 10 | ||||||
|     save 60 10000 |     save 60 10000 | ||||||
|     stop-writes-on-bgsave-error yes |  | ||||||
|     rdbcompression yes |  | ||||||
|     rdbchecksum yes |  | ||||||
|     dbfilename dump.rdb |     dbfilename dump.rdb | ||||||
|     #masterauth "123456" |     dir db-6379 | ||||||
|     replica-serve-stale-data yes |     maxclients 8192 | ||||||
|     replica-read-only yes |     maxmemory 6442450944 | ||||||
|     repl-diskless-sync no |     #requirepass xxxx | ||||||
|     repl-diskless-sync-delay 5 |     #masterauth xxxx | ||||||
|     repl-disable-tcp-nodelay no |     #cluster-enabled yes | ||||||
|     replica-priority 100 |     #cluster-config-file nodes-6379.conf | ||||||
|     #requirepass "123456" |     maxmemory-policy volatile-random | ||||||
|     maxclients 10000 |  | ||||||
|     maxmemory 4294967296 |  | ||||||
|     maxmemory-policy volatile-lru |  | ||||||
|     lazyfree-lazy-eviction no |  | ||||||
|     lazyfree-lazy-expire no |  | ||||||
|     lazyfree-lazy-server-del no |  | ||||||
|     replica-lazy-flush no |  | ||||||
|     appendonly 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 yes |  | ||||||
|     lua-time-limit 5000 |  | ||||||
|     cluster-enabled yes |  | ||||||
|     cluster-node-timeout 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 |  | ||||||
|     stream-node-max-bytes 4096 |  | ||||||
|     stream-node-max-entries 100 |  | ||||||
|     activerehashing yes |  | ||||||
|     client-output-buffer-limit normal 0 0 0 |  | ||||||
|     client-output-buffer-limit replica 256mb 64mb 60 |  | ||||||
|     client-output-buffer-limit pubsub 32mb 8mb 60 |  | ||||||
|     hz 10 |  | ||||||
|     dynamic-hz yes |  | ||||||
|     aof-rewrite-incremental-fsync yes |  | ||||||
|     rdb-save-incremental-fsync yes |  | ||||||
|     ``` |     ``` | ||||||
| - 创建 /opt/redis_cluster/redis@.service,配置如下 |  | ||||||
|  | - 创建 /opt/redis/conf/redis-637{1..3}.conf | ||||||
|  |     ```bash | ||||||
|  |     cd /opt/redis/conf | ||||||
|  |     cp redis-6379.conf redis-6371.conf | ||||||
|  |     cp redis-6379.conf redis-6372.conf | ||||||
|  |     cp redis-6379.conf redis-6373.conf | ||||||
|  |     sed -i \ | ||||||
|  |         -e 's/6379/6371/g' \ | ||||||
|  |         -e '/daemonize/cdaemonize no' \ | ||||||
|  |         -e '/supervised/csupervised systemd' \ | ||||||
|  |         -e '/requirepass/crequirepass 123456' \ | ||||||
|  |         -e '/masterauth/cmasterauth 123456' \ | ||||||
|  |         -e '/cluster/^#//' \ | ||||||
|  |         redis-6371.conf | ||||||
|  |     sed -i \ | ||||||
|  |         -e 's/6379/6372/g' \ | ||||||
|  |         -e '/daemonize/cdaemonize no' \ | ||||||
|  |         -e '/supervised/csupervised systemd' \ | ||||||
|  |         -e '/requirepass/crequirepass 123456' \ | ||||||
|  |         -e '/masterauth/cmasterauth 123456' \ | ||||||
|  |         -e '/cluster/^#//' \ | ||||||
|  |         redis-6372.conf | ||||||
|  |     sed -i \ | ||||||
|  |         -e 's/6379/6373/g' \ | ||||||
|  |         -e '/daemonize/cdaemonize no' \ | ||||||
|  |         -e '/supervised/csupervised systemd' \ | ||||||
|  |         -e '/requirepass/crequirepass 123456' \ | ||||||
|  |         -e '/masterauth/cmasterauth 123456' \ | ||||||
|  |         -e '/cluster/^#//' \ | ||||||
|  |         redis-6373.conf | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | - 创建日志目录和数据目录 | ||||||
|  |     ```bash | ||||||
|  |     cd /opt/redis | ||||||
|  |     mkdir -p db-{6371..6373} log | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | - 创建 /opt/redis/redis@.service,内容如下 | ||||||
|     ```ini |     ```ini | ||||||
|     [Unit] |     [Unit] | ||||||
|     Description=Redis cluster -- node %i |     Description=Redis cluster -- node %i | ||||||
|     After=network.target |     After=network.target | ||||||
|  |  | ||||||
|     [Service] |     [Service] | ||||||
|     ExecStartPre=/usr/bin/ls -d /var/lib/redis_cluster/%i |     WorkingDirectory=/opt/redis | ||||||
|     ExecStart=/opt/redis_cluster/bin/redis-server /opt/redis_cluster/conf/redis.conf \ |     ExecStart=/opt/redis/bin/redis-server conf/redis-%i.conf | ||||||
|         --daemonize no \ |  | ||||||
|         --port %i \ |  | ||||||
|         --pidfile /var/run/redis_%i.pid \ |  | ||||||
|         --logfile /var/log/redis_cluster/%i.log \ |  | ||||||
|         --dir /var/lib/redis_cluster/%i \ |  | ||||||
|         --cluster-config-file /var/lib/redis_cluster/%i/nodes.conf |  | ||||||
|     ExecStop=/opt/redis_cluster/bin/redis-cli -h 127.0.0.1 -p %i shutdown |  | ||||||
|     Restart=on-failure |     Restart=on-failure | ||||||
|     RestartSec=1 |     RestartSec=2 | ||||||
|  |  | ||||||
|     [Install] |     [Install] | ||||||
|     WantedBy=multi-user.target |     WantedBy=multi-user.target | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| ## 部署 | ## 部署 | ||||||
| - 把测试机的 /opt/redis_cluster 目录复制到 10.0.4.110 和 10.0.4.111 上 | - 把 /opt/redis 目录复制到 10.0.4.110 和 10.0.4.111 上 | ||||||
|     ```bash |     ```bash | ||||||
|     scp -r /opt/redis_cluster 10.0.4.110:/opt/ |     scp -r /opt/redis 10.0.4.110:/opt/ | ||||||
|     scp -r /opt/redis_cluster 10.0.4.111:/opt/ |     scp -r /opt/redis 10.0.4.111:/opt/ | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 在 10.0.4.110 和 10.0.4.111 上都执行以下操作 | - 在 10.0.4.110 和 10.0.4.111 上都执行以下操作 | ||||||
|     ```bash |     ```bash | ||||||
|     mv /opt/redis_cluster/redis@.service /usr/lib/systemd/system/ |     cp /opt/redis/redis@.service /usr/lib/systemd/system/ | ||||||
|     systemctl daemon-reload |     systemctl daemon-reload | ||||||
|     mkdir -p /var/lib/redis_cluster/{6371..6373} |  | ||||||
|     mkdir -p /var/log/redis_cluster |  | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 在 10.0.4.110 和 10.0.4.111 上配置实例开机启动 | - 在 10.0.4.110 和 10.0.4.111 上配置实例开机启动 | ||||||
|     ```bash |     ```bash | ||||||
|     systemctl enable redis@6371 |     systemctl enable redis@6371 | ||||||
|     systemctl enable redis@6372 |     systemctl enable redis@6372 | ||||||
|     systemctl enable redis@6373 |     systemctl enable redis@6373 | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 在 10.0.4.110 和 10.0.4.111 上启动全部实例 | - 在 10.0.4.110 和 10.0.4.111 上启动全部实例 | ||||||
|     ```bash |     ```bash | ||||||
|     systemctl start redis@6371 |     systemctl start redis@6371 | ||||||
| @@ -149,24 +147,31 @@ categories: ["database"] | |||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| ## 配置集群 | ## 配置集群 | ||||||
| - 在 10.0.4.110 或 10.0.4.111 上创建集群,指定三个 master 实例 | - 在 10.0.4.110 上创建集群,指定三个 master 实例 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli \ |     /opt/redis/bin/redis-cli \ | ||||||
|  |         -a 123456 \ | ||||||
|         --cluster create 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 |         --cluster create 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 同意配置,输入 "yes",回车后输出如下图 | - 同意配置,输入 "yes",回车后输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 查看集群当前实例 | - 查看集群当前实例 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli -p 6371 cluster nodes |     /opt/redis/bin/redis-cli -p 6371 cluster nodes | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 添加 slave 实例 10.0.4.111:6371,同步 master 10.0.4.110:6371 | - 添加 slave 实例 10.0.4.111:6371,同步 master 10.0.4.110:6371 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli \ |     /opt/redis/bin/redis-cli \ | ||||||
|  |         -a 123456 \ | ||||||
|         --cluster add-node 10.0.4.111:6371 10.0.4.110:6371 \ |         --cluster add-node 10.0.4.111:6371 10.0.4.110:6371 \ | ||||||
|         --cluster-slave \ |         --cluster-slave \ | ||||||
|         --cluster-master-id 5be0edaf74d1eec50bbe675f9698397023a943b7 |         --cluster-master-id 5be0edaf74d1eec50bbe675f9698397023a943b7 | ||||||
| @@ -174,32 +179,39 @@ categories: ["database"] | |||||||
|     # --cluster-slave 指定添加 slave 实例 |     # --cluster-slave 指定添加 slave 实例 | ||||||
|     # --cluster-master-id 指定 10.0.4.110:6371 的 id,即本次添加实例的 master |     # --cluster-master-id 指定 10.0.4.110:6371 的 id,即本次添加实例的 master | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 添加 slave 实例 10.0.4.111:6372,同步 master 10.0.4.110:6372 | - 添加 slave 实例 10.0.4.111:6372,同步 master 10.0.4.110:6372 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli \ |     /opt/redis/bin/redis-cli \ | ||||||
|         --cluster add-node 10.0.4.111:6372 10.0.4.110:6371 \ |         --cluster add-node 10.0.4.111:6372 10.0.4.110:6371 \ | ||||||
|         --cluster-slave \ |         --cluster-slave \ | ||||||
|         --cluster-master-id 96f2225fdd054d8a16b31726fd1eb0b66c612646 |         --cluster-master-id 96f2225fdd054d8a16b31726fd1eb0b66c612646 | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 添加 slave 实例 10.0.4.111:6373,同步 master 10.0.4.110:6373 | - 添加 slave 实例 10.0.4.111:6373,同步 master 10.0.4.110:6373 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli \ |     /opt/redis/bin/redis-cli \ | ||||||
|         --cluster add-node 10.0.4.111:6373 10.0.4.110:6371 \ |         --cluster add-node 10.0.4.111:6373 10.0.4.110:6371 \ | ||||||
|         --cluster-slave \ |         --cluster-slave \ | ||||||
|         --cluster-master-id cd60c238e66c8b4a31355bee4610444a47acef86 |         --cluster-master-id cd60c238e66c8b4a31355bee4610444a47acef86 | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| - 查看集群当前实例 | - 查看集群当前实例 | ||||||
|     ```bash |     ```bash | ||||||
|     /opt/redis_cluster/bin/redis-cli -p 6371 cluster nodes |     /opt/redis/bin/redis-cli -p 6371 cluster nodes | ||||||
|     ``` |     ``` | ||||||
|  |  | ||||||
| - 输出如下图 | - 输出如下图 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Docker 部署 | ## Docker 部署 | ||||||
| - 安装 docker-ce,参考[这里](https://www.colben.cn/post/docker/#%E5%AE%89%E8%A3%85) | - 安装 docker-ce,参考[这里](https://www.colben.cn/post/docker/#%E5%AE%89%E8%A3%85) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 colben
					colben