ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
0单机部署 redis:5.0.5-alpine3.10 zhuzhu = yes 数据券主机映射 /usr/local/redis/data /data 高级命令 redis-server --requirepass dfhdfg51df2g41 --appendonly yes 要有持久化就要 appendonly yes # 1.0部署reids镜像 在141上部署redis1,在142上部署redis2和redis3 在140上执行,也可以在rancher直接部署,它会自动下载镜像 docker pull redis:5.0.5-alpine3.10 按照惯例查看一下镜像详细信息 docker image inspect redis:5.0.5-alpine3.10 推送到私有仓库去 docker tag redis:5.0.5-alpine3.10 192.168.232.140:5000/redis:5.0.5-alpine3.10 docker push 192.168.232.140:5000/redis:5.0.5-alpine3.10 docker rmi 192.168.232.140:5000/redis:5.0.5-alpine3.10 docker rmi redis:5.0.5-alpine3.10 8.1Redis通过RDB和AOF两种方式来进行数据的持久化,先创建一个主机目录作为持久化目录进行数据挂载 # 8.2rancher部署redis服务之前,先做好远程挂载卷, https://www.cnblogs.com/st-jun/p/7742560.html 因为现在的目录和文件都在140上,而redis是部署到141,142动态部署,不可能手动去创建文件夹和conf文件,所以在动态主机上挂载远程存储卷。 ## 8.2.1服务器端安装NFS服务 140上执行 判断有没有装NFS,rpm -qa nfs-utils rpcbind 如果没有,那就安装NFS服务的nfs-unitls和rpcbind(会自动同时自动安装rpcbind) yum -y install nfs-utils 启动rpcbind服务(一定要先启动rpcbind服务再启动nfs服务) systemctl status rpcbind systemctl stop rpcbind systemctl stop nfs-utils systemctl start rpcbind systemctl start nfs-utils systemctl enable rpcbind systemctl enable nfs-utils 8.2.2 nfs除了主程序端口2049和rpcbind的端口111是固定以外,还会使用一些随机端口,以下配置将定义这些端口,以便配置防火墙 vi /etc/sysconfig/nfs #结尾追加端口配置 MOUNTD_PORT=4001 STATD_PORT=4002 LOCKD_TCPPORT=4003 LOCKD_UDPPORT=4003 RQUOTAD_PORT=4004 :wq vi /etc/exports /water/runfile/docker_volume 192.168.232.140/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_root_squash) #这里可以配置多个路径,我只配置了/water/runfile/docker_volume rpc.nfsd 8 rpc.mountd exportfs -r #使配置生效 exportfs #可以查看到已经ok firewall-cmd --zone=public --add-port=2049/udp --permanent firewall-cmd --zone=public --add-port=2049/tcp --permanent firewall-cmd --zone=public --add-port=111/udp --permanent firewall-cmd --zone=public --add-port=111/tcp --permanent firewall-cmd --zone=public --add-port=4001/udp --permanent firewall-cmd --zone=public --add-port=4001/tcp --permanent firewall-cmd --zone=public --add-port=4004/udp --permanent firewall-cmd --zone=public --add-port=4004/tcp --permanent firewall-cmd --reload systemctl restart nfs-config systemctl restart nfs-idmap systemctl restart nfs-lock systemctl restart nfs-server systemctl enable nfs-config systemctl enable nfs-idmap systemctl enable nfs-lock systemctl enable nfs-server rpcinfo -p 在nfs客户机上执行: 141、142上执行: yum -y install nfs-utils systemctl stop rpcbind systemctl stop nfs-utils systemctl start rpcbind systemctl start nfs-utils systemctl enable rpcbind systemctl enable nfs-utils 给141主机添加标签redis=redisM,给142主机添加标签redis=redisS ----------------------------------------------------------------------- 这里不用,这是单节点的redis。使用下面的reids集群 ------------------------ 8.2.3 Rancher2.0中使用NFS存储,在集群中创建持久卷(添加PV) 填写添加持久卷参数-名称-卷插件-容量-路径-服务器-访问模式 nfs-pv NFS-Share 10 /water/runfile/docker_volume 192.168.232.140 是否只读:否 多主机读写 点击完成 持久卷PV添加完成后的可用状态-Available 8.2.4 在项目Default中创建数据卷(PVC),pv是全局的,pvc是命名空间的 工作负载-负载均衡-服务发现-PVC(勾)-流水线 添加数据卷-先选择项目-数据卷-添加卷 填写:卷声明名称-选择刚创建的持久化卷-访问模式 nfs-pvc-redis 持久卷(PV) 选择:nfs-pv 自定义: 多主机读写 数据卷的卷声明和持久卷已经绑定完毕 8.2.5部署工作负载(redis)时使用PVC 这步在8.6创建reids服务的时候来选择卷里操作 ------------------------ 140上执行: mkdir -p /water/runfile/docker_volume/redis/data 目录挂载 /water/runfile/docker_volume/redis/data:/data 自定义配置文件挂载: 创建配置文件目录 mkdir -p /water/runfile/docker_volume/redis/conf 编辑配置文件 cd /water/runfile/docker_volume/redis/conf vi redis.conf ,,文件在文件夹下,因为内容太多不贴在这里 相关修改的配置参考 https://blog.csdn.net/JetaimeHQ/article/details/83303346 8.3rancher部署redis服务 redisM 192.168.232.140:5000/redis:5.0.5-alpine3.10 6379 6379 主机调度:redis=redisM 数据卷:挂载到远程主机存储路径,选择"使用现有PVC" redism-data 选择pvc:nfs-pvc-redis /data redis/data /usr/local/etc/redis/redis.conf redis/conf/redis.conf 默认是不用配置文件启动的,在高级选项,命令里,加上redis-server /usr/local/etc/redis/redis.conf 高级选项 网络 选用主机网络 firewall-cmd --zone=public --add-port=6379/tcp --permanent firewall-cmd --reload 启动 8.4远程连接redis redis-cli.exe -h 192.168.232.141 -p 6379 ----------------------------------------------------------------------- # 8.5rancher部署redis集群 https://cloud.tencent.com/developer/article/1432088 https://my.oschina.net/ruoli/blog/2252393 配置文件还是用140上共享的目录 mkdir -p /water/runfile/docker_volume/redis_cluster mkdir -p /water/runfile/docker_volume/redis_cluster/7001/data mkdir -p /water/runfile/docker_volume/redis_cluster/7002/data mkdir -p /water/runfile/docker_volume/redis_cluster/7003/data cd /water/runfile/docker_volume/redis_cluster ---------------- rpc.nfsd 8 rpc.mountd exportfs -r #使配置生效 exportfs #可以查看到已经ok ---------------- vi /water/runfile/docker_volume/redis_cluster/7001/redis.conf vi /water/runfile/docker_volume/redis_cluster/7002/redis.conf vi /water/runfile/docker_volume/redis_cluster/7003/redis.conf 将原版的redis配置写入,并主要修改如下配置: #bind 127.0.0.1 port 7001 #端口 cluster-enabled yes #启用集群模式 cluster-config-file /data/nodes.conf cluster-node-timeout 5000 #超时时间 logfile "/data/redis.log" #输出日志 appendonly yes daemonize no #是否后台运行,这里不能改成yes,不然docker运行就关闭了 protected-mode no #非保护模式 pidfile /var/run/redis.pid ## 8.6配置文件完成后开始在rancher里创建redis服务 在rancher里springcloud里添加一个新的命名空间 redis-cluster 保存 8.7先加一个rediscluster命名空间的pv和pvc用来共享存储,开始建的命名空间在Default,所以用不了 填写添加持久卷参数-名称-卷插件-容量-路径-服务器-访问模式 nfs-redisclutser-pv NFS-Share 10 /water/runfile/docker_volume 192.168.232.140 是否只读:否 多主机读写 点击完成 持久卷PV添加完成后的可用状态-Available 工作负载-负载均衡-服务发现-PVC(勾)-流水线 选择添加pvc nfs-redisclutser-pvc 命名空间:选择刚创建的redis-cluster 持久卷(PV) 选择:nfs-redisclutser-pv 自定义: 多主机读写 数据卷的卷声明和持久卷已经绑定完毕 # 8.8部署redis master服务(部署工作负载) redisClusterM 192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空间:选择刚创建的redis-cluster 7001 7001 17001 17001 主机调度:redis=redisM 数据卷:挂载到远程主机存储路径,选择"使用现有PVC" redisclusterm-data 选择pvc:nfs-redisclutser-pvc /data redis_cluster/7001/data /usr/local/etc/redis/redis.conf redis_cluster/7001/redis.conf 数据卷:将时区文件挂载一下,选择"映射主机目录" localtime /etc/localtime /etc/localtime 数据卷:将/usr/bin挂载一下,选择"映射主机目录",不然启动redis集群有问题 usr-bin /usr/bin /usr/bin 如果这个目录映射不行,就用docker logs命令查看镜像调用的docker-entrypoint.sh文件在哪里,在主机上找出 find / -name docker-entrypoint.sh cp .....到某个主机目录,映射到容器启动的路径上,如下: /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh 默认是不用配置文件启动的,在高级选项,命令里,加上redis-server /usr/local/etc/redis/redis.conf 高级选项 网络 选用主机网络 firewall-cmd --zone=public --add-port=7001/tcp --permanent firewall-cmd --zone=public --add-port=17001/tcp --permanent firewall-cmd --reload 启动 8.9部署redis slaves(部署工作负载) redisClusterS1 192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空间:选择刚创建的redis-cluster 7002 7002 17002 17002 主机调度:redis=redisS 数据卷:挂载到远程主机存储路径,选择"使用现有PVC" redisclusters-data 选择pvc:nfs-redisclutser-pvc /data redis_cluster/7002/data /usr/local/etc/redis/redis.conf redis_cluster/7002/redis.conf 数据卷:将时区文件挂载一下,选择"映射主机目录" localtime /etc/localtime /etc/localtime 数据卷:将/usr/bin挂载一下,选择"映射主机目录",不然启动redis集群有问题 usr-bin /usr/bin /usr/bin 如果这个目录映射不行,就用docker logs命令查看镜像调用的docker-entrypoint.sh文件在哪里,在主机上找出 find / -name docker-entrypoint.sh cp .....到某个主机目录,映射到容器启动的路径上,如下: /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh 默认是不用配置文件启动的,在高级选项,命令里,加上redis-server /usr/local/etc/redis/redis.conf 高级选项 网络 选用主机网络 firewall-cmd --zone=public --add-port=7002/tcp --permanent firewall-cmd --zone=public --add-port=17002/tcp --permanent firewall-cmd --reload ----------------------------- redisClusterS2 192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空间:选择刚创建的redis-cluster 7003 7003 17003 17003 主机调度:redis=redisS 数据卷:挂载到远程主机存储路径,选择"使用现有PVC" redisclusters-data 选择pvc:nfs-redisclutser-pvc /data redis_cluster/7003/data /usr/local/etc/redis/redis.conf redis_cluster/7003/redis.conf 数据卷:将时区文件挂载一下,选择"映射主机目录" localtime /etc/localtime /etc/localtime 数据卷:将/usr/bin挂载一下,选择"映射主机目录",不然启动redis集群有问题 usr-bin /usr/bin /usr/bin 如果这个目录映射不行,就用docker logs命令查看镜像调用的docker-entrypoint.sh文件在哪里,在主机上找出 find / -name docker-entrypoint.sh cp .....到某个主机目录,映射到容器启动的路径上,如下: /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh 默认是不用配置文件启动的,在高级选项,命令里,加上redis-server /usr/local/etc/redis/redis.conf 高级选项 网络 选用主机网络 firewall-cmd --zone=public --add-port=7003/tcp --permanent firewall-cmd --zone=public --add-port=17003/tcp --permanent firewall-cmd --reload 8.10将三个redis串联起来变成集群 下载redis-cli客户端镜像,在140上执行: docker pull goodsmileduck/redis-cli:v5.0.3 docker tag goodsmileduck/redis-cli:v5.0.3 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3 docker push 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3 docker rmi 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3 docker rmi goodsmileduck/redis-cli:v5.0.3 8.11在rancher里部署redis-cli服务 redis-cli 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3 网络:是否用主机网络:是 启动 8.12在rancher里执行命令,将三个redis串联起来 cd bin redis-cli --cluster create 192.168.232.141:7001 192.168.232.142:7002 192.168.232.142:7003 --cluster-replicas 0 输入:yes #redis集群至少要3个主节点,这里只有3个节点,所以没有从节点,所以cluster-replicas为0 #如果是六个节点的话就执行如下 redis-cli --cluster create 192.168.232.141:7001 192.168.232.142:7002 192.168.232.142:7003 192.168.232.142:7004 192.168.232.142:7005 192.168.232.142:7006 --cluster-replicas 1 create 表示创建一个redis集群。 --cluster-replicas 1 表示为集群中的每一个主节点指定一个从节点,即一比一的复制 8.13查看redis集群 在windows启动redis client时,要使用集群模式启动,不然操作key因为哈希槽操作而报错不方便 redis-cli.exe -c -h 192.168.232.142 -p 7003 查看集群中的节点 cluster nodes