rancher2+docker+SpringCloud+jenkins+redis集群+mysql主从搭建:五、安装redis集群、nfs服务 (通过rancher部署服务)
部署redis集群:
在138上部署redis1,在139部署redis2、redis3
在137上执行,也可以在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.109.137:5000/redis:5.0.5-alpine3.10
docker push 192.168.109.137:5000/redis:5.0.5-alpine3.10
docker rmi 192.168.109.137:5000/redis:5.0.5-alpine3.10
docker rmi redis:5.0.5-alpine3.10
redis通过RDB和AOF俩种方式来进行数据的持久化,先创建一个主机目录作为持久化目录进行
rancher部署安装redis服务之前,先做好远程挂载卷(nfs)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
137部署nfs服务端: yum install -y 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 nfs除了主程序端口2049和rpcbind端口111是固定以外,还会使用一些随机端口,以下配置将定 vim /etc/sysconfig/nfs MOUNTD_PORT=4001 STATD_PORT=4002 LOCKD_TCPPORT=4003 LOCKD_UDPPORT=4003 RQUOTAD_PORT=4004 vim /etc/exports /water/runfile/docker_volume 192.168.109.137/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,root_sqash,no_root_squash) #这里可以配置多个路径,我们需求只配置了/water/runfile/docker_volume 执行如下命令生效: rpc.nfsd 8 rpc.mountd exportfs -r 查看命令:exportfs 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 在138 和 139 机器上: yum install -y nfs-utils systemctl status rpcbind systemctl stop rpcbind systemctl stop nfs-utils systemctl start rpcbind systemctl start nfs-utils systemctl enable rpcbind systemctl enable nfs-utils
给138机器添加标签redis=redisM,给139机器添加标签redis=redisS
部署redis集群:
137创建共享目录:
mkdir -pv /water/runfile/docker_volume/redis_cluster
mkdir -pv /water/runfile/docker_volume/redis_cluster/7001/data
mkdir -pv /water/runfile/docker_volume/redis_cluster/7002/data
mkdir -pv /water/runfile/docker_volume/redis_cluster/7003/data
cd /water/runfile/docker_volume/redis_cluster
redis 镜像启动默认是不带配置文件启动的,所以我们要去官网下载修改对应版本的配置文件,上传
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
主要修改: 注释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
配置修改完之后,开始在rancher里创建redis服务:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
配置修改完之后,开始在rancher里创建redis服务: 在rancher里添加一个新的名称空间:redis-cluster springcloud--存储--持久卷--添加PV 名字:nfs-redis-cluster-pv 卷插件:NFS Share 路径:/water/runfile/docker_volume 服务器:192.168.109.137 是否只读:否 多主机读写 保存 springcloud--命名空间--添加命名空间 名称:redis-cluster 创建 springcloud--default--添加pvc 名称:nfs-rediscluster-pvc 名称空间选刚创建的:redis-cluster 持久卷选刚创建的: nfs-redis-cluster-pv 自定义:多主机读写 创建
部署redis master:(rancher)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
名称:redisclusterm 镜像:192.168.109.137:5000/redis:5.0.5-alpine3.10 命令空间选择刚创建的:redis-cluster 端口映射 7001 tcp HostPort 7001 17001 tcp HostPort 17001 主机调度:为每一个Pod自动选择符合调度规则的主机:添加标签redis=redisM 1.数据卷:使用现有的PVC --名称:redisclusterm-data--pvc选择一下(nfs-rediscluster-pvc)--容器路径:/data -- 子路径(pvc下的子路径):redis_cluster/7001/data (即:/water/runfile/docker_volume/redis_cluster/7001/data)-- (在添加一个配置文件的)/usr/local/etc/redis/redis.conf -- redis_cluster/7001/redis.conf 2.(映射时区解决差8小时)添加卷 -- 映射主机目录 -- 卷名:localtime --主机路径:/etc/localtime -- 容器路径:/etc/localtime 3.数据卷:将/usr/bin 挂载一下,选择“映射主机目录”,不然启动redis集群有问题 (解决redis集群启动找文件)添加卷 -- 映射主机目录 -- 卷名:usr-bin --主机路径:/usr/bin -- 容器路径:/usr/bin 如果这个目录映射不行,就用docker logs命令查看镜像调用的docker-entrypoint.sh文件在哪里 find / -name docker-entrypoint.sh 如:/usr/local/bin/docker-entrypoint.sh 主机路径改为:/usr/local/bin/docker-entrypoint.sh 容器路径改为:/usr/local/bin/docker-entrypoint.sh 默认是不用配置文件启动的,在高级选项,命令里,加上 redis-server /usr/local/etc/redis/redis.conf 高级选项,网络,选用主机网络 防火墙放行 启动 查看容器日志,查看落地日志/water/runfile/docker_volume/redis_cluster/7001/data/redis.log
部署redis slaves:(rancher)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
名称:redisCluster
如上;或者我们直接克隆一个redisClusterm然后稍微修改;完毕再克隆一台redisClusters2
将三个redis串联起来变成集群:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
137机器上,下载redis-cli客户端镜像, docker pull goodsmileduck/redis-cli:v5.0.3 docker tag goodsmileduck/redis-cli:v5.0.3 192.168.109.137:5000/goodsmileduck/redis-cli:v5.0.3 docker push 192.168.109.137:5000/goodsmileduck/redis-cli:v5.0.3 curl -XGET http://192.168.109.137:5000/v2/goodsmileduck/redis-cli/tags/list docker rmi 192.168.109.137:5000/goodsmileduck/redis-cli:v5.0.3 docker rmi goodsmileduck/redis-cli:v5.0.3 在rancher上部署redis-cli服务: redis-cli 192.168.109.137:5000/goodsmileduck/redis-cli:v5.0.3 网络,选用主机网络:是 启动 在rancher里执行命令,将三个redis串联起来 执行命令行 cd bin redis-cli --cluster create 192.168.109.138:7001 192.168.109.139:7002 192.168.109.139:7003 --cluster-replicas 0 输入yes #redis集群至少是三个主节点,这只有3个节点,所以没有从节点,所以cluster-replicas为0 #如果是6个节点就三主三从,执行如下 redis-cli --cluster create 192.168.109.138:7001 192.168.109.139:7002 192.168.109.139:7003 ip:7004 ip:7005 ip:7006 --cluster-replicas 1 create 表示创建一个redis集群 --cluster-replicas 表示为集群中的每一个主节点指定一个从节点,即1:1复制 查看redis集群: 在windows启动redis client时,要使用集群模式启动,不然操作key因为哈希槽操作而报错不方便 redis-cli.exe -c -h 192.168.109.138 -p 7001 查看集群中的节点 cluster nodes