1. 准备工作
- Vmware 虚拟机
- 任意SSH工具(这里我使用的是免费的PuTTY)
- Centos 8 (注意:EOL问题,2021年12月31日起,CentOS 8 已结束官方支持,其所有包已经从原先的镜像中下线,官方仓库被迁移到 vault.centos.org。因此默认的 mirrorlist 地址已无法使用,需要修改 yum 源配置文件。)
虚拟机安装Centos 步骤这里省略。
2. 虚拟机网络设置
设置为VMnet8(NAT)。
常见的有三种:桥接(Bridged)、NAT(网络地址转换)和仅主机(Host-only)。
桥接模式(Bridged)
桥接模式下,虚拟机的网络适配器直接“桥接”到宿主机的物理网卡,就好像虚拟机在局域网中是一台独立的物理主机。这意味着虚拟机会从局域网中的 DHCP 服务器(或手动配置)获得与宿主机相同网段的 IP 地址,从而与局域网内的其他设备互通。
虚拟机可像真实主机一样直接与局域网其他设备通信,适合需要对外提供服务的场景(如 web、FTP、SSH 等)。
NAT 模式
在 NAT 模式下,虚拟机的网络适配器连接到 VMware 内部的 NAT 网络(默认使用 VMnet8)。虚拟机通过 VMware 内置的 NAT 服务使用宿主机的 IP 地址访问外部网络,所有的出站数据包会经过地址转换。同时,VMware 内置的 DHCP 服务器会自动为虚拟机分配 IP 地址,确保网络连通性。
配置简单,只要宿主机能上网,虚拟机就可以通过 NAT 自动获得 IP 并实现外网通信。
对于只需要虚拟机访问外网(例如更新软件、远程 SSH 登录)来说,NAT 模式非常便捷。
仅主机模式(Host-only)
在仅主机模式下,虚拟机连接的是一个完全隔离的内部虚拟网络(通常使用 VMnet1),这个网络只允许虚拟机与宿主机(以及同一宿主机上其他使用此模式的虚拟机)通信。默认情况下,这种模式下的虚拟机无法直接访问互联网。
3. 使用SSH工具连接虚拟机
安装好之后使用 ifconfig 命令查看虚拟机IP
使用
ens160 的IP地址进行连接: 输入在安装虚拟机时配置的账号密码或者使用root 用户。
安装Docker 容器
这里推荐阿里云docker镜像安装,docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站
这里需要使用yum命令工具,但是我们CentOS 8 已结束官方支持。不能通过官方镜像下载,需要修改yum源配置文件为阿里的。
直接下载会出现错误:
Errors during downloading metadata for repository 'appstream':
- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/ ?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirro rlist.centos.org]
修改yum仓库配置
进入 /etc/yum.repos.d/ 目录:cd /etc/yum.repos.d/,
删除相关的 repo 文件(通常有三个文件:CentOS-Linux-Base.repo、CentOS-Linux-AppStream.repo、CentOS-Linux-Extras.repo)替换为国内的阿里源.
# 删除原来的yum源
sudo rm -f /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-Extras.repo /etc/yum.repos.d/CentOS-Base.repo
# 下载阿里的yum源 阿里云提供的这个配置文件(CentOS-8.repo)中就包含了 BaseOS、AppStream 和 Extras 三个仓库的配置定义,所以只下载这一个文件就足够了,不需要再分别下载其它两个文件。
sudo curl -o /etc/yum.repos.d/CentOS-Linux-BaseOS.repo <http://mirrors.aliyun.com/repo/Centos-8.repo>
#清理
sudo yum clean all
#重新加载yum
sudo yum makecache
开始安装yum 和docker
下面的这些都是文档 docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 内容。按步骤安装启动docker就可以了
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
# Step 2: 添加软件源信息
yum-config-manager --add-repo <https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo>
# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Step 4: 开启Docker服务
sudo service docker start
执行完所有步骤可以看到docker已经运行中了。
查看docker运行状态
systemctl status docker # 显示 Docker 服务的详细状态(运行/停止/错误日志)
安装redis 启动多个redis 容器进行集群
首先从 Docker Hub 拉取最新的 Redis 镜像:
docker pull redis:latest
配置分布式(集群)Redis 缓存服务
Redis 集群模式能够将数据分布在多个节点上,实现分布式缓存和高可用。最少需要 6 个节点(3 个主节点 + 3 个从节点)
创建 Docker 网络
为了让集群内部节点可以互相通信,先创建一个自定义 Docker 网络:
docker network create redis-cluster
启动多个 Redis 容器
使用集群模式需要对每个节点指定配置(主要是开启集群模式、指定集群端口等)。你可以通过传递启动参数来实现这一点。下面以 6 个节点为例,分别启动 6 个容器,每个容器映射一个不同的主机端口:
for port in {7000..7005}; do
docker run -d \
--name redis-$port \
--net redis-cluster \
-p $port:6379 \
-v /mydata/redis/$port:/data \
--restart always \
redis:latest \
redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
done
--net redis-cluster:将容器加入到刚刚创建的网络中。
-p $port:6379:将主机的 7000~7005 端口分别映射到各容器内的 6379 端口(注意:为了集群通信,集群内部实际会使用 6379 之外的端口,但这里仅作为示例映射)。
-v /mydata/redis/$port:/data:挂载数据卷,确保数据持久化(可以根据需要修改)。
启动参数中使用 --cluster-enabled yes 开启集群模式,--cluster-config-file nodes.conf 指定保存集群节点信息的文件。
- 创建 Redis 集群
在所有容器启动后,使用 Redis 官方提供的redis-cli --cluster create命令来组建集群。先进入任一容器或在宿主机上安装 Redis 工具,然后执行:docker exec -it redis-7000 bash
或者直接在宿主机上(前提是已安装 redis-cli),然后运行:
redis-cli --cluster create \
redis-7000:6379 redis-7001:6379 redis-7002:6379 \
redis-7003:6379 redis-7004:6379 redis-7005:6379 \
--cluster-replicas 1
说明:
-
--cluster-replicas 1表示每个主节点配一个从节点(总共 3 主 3 从)。- 在执行过程中,系统会询问是否确认创建集群,输入
yes即可。
- 在执行过程中,系统会询问是否确认创建集群,输入
-
验证集群状态
使用以下命令检查集群节点信息:redis-cli -c -h redis-7000 -p 6379 cluster nodes如果看到各节点的角色(master/slave)和状态信息,说明集群搭建成功。
测试使用
个 Redis 容器的 6379 端口分别映射到宿主机的 7000 到 7005 端口,那么可以从宿主机使用 redis-cli 连接到其中一个节点,比如 7000
-
从主机上连接到 Redis 集群节点
打开终端,执行以下命令(注意-c参数用于启用集群模式):redis-cli -c -h 127.0.0.1 -p 7000 -
测试写入和读取操作
在 redis-cli 提示符下,输入以下命令测试存储和读取键值:set testkey "Hello Redis Cluster" get testkey