helm部署redis集群
Redis 集群部署流程
前提:K8s+helm安装完成
1. 安装 NFS 服务器
1.1 安装 NFS 工具包
在 NFS 服务器上安装 nfs-utils 包:
1.2 创建共享目录
创建一个目录作为 NFS 共享目录,并设置权限:
1.3 配置 NFS 导出
编辑 /etc/exports 文件,定义共享目录和访问权限:
添加以下内容:
/nfs_share:共享目录。*:允许所有客户端访问。可以替换为特定 IP 或网段(如192.168.1.0/24)。rw:允许读写。sync:同步写入,确保数据一致性。no_root_squash:允许客户端 root 用户拥有服务器 root 权限。no_all_squash:不压缩所有用户的权限。
保存并退出后,启动 NFS 服务:
2. 部署 NFS Provisioner
NFS Provisioner 是一个动态存储提供程序,可以为 Kubernetes 集群提供 NFS 存储。
2.1 添加 Helm 仓库
添加 NFS Provisioner 的 Helm 仓库:
2.2 安装 NFS Provisioner
使用 Helm 安装 NFS Provisioner。假设 NFS 服务器地址是 192.168.1.100,共享目录是 /nfs_share:
参数说明:
nfs.server:NFS 服务器的 IP 地址。nfs.path:NFS 共享目录。storageClass.name:创建的 StorageClass 名称(nfs-client)。storageClass.defaultClass:设置为默认的 StorageClass。image.repository和image.tag:指定 NFS Provisioner 镜像(国内镜像地址)。
3. 部署 Redis 集群
使用 Helm 部署 Redis 集群,并将其存储配置为使用 NFS Provisioner。
3.1 添加 Helm 仓库
添加 Bitnami 的 Helm 仓库:
3.2 安装 Redis 集群
使用 Helm 安装 Redis 集群,并配置使用 NFS Provisioner 提供的存储:
参数说明:
cluster.enabled=true:启用 Redis 集群模式。persistence.storageClass=nfs-client:使用 NFS Provisioner 提供的 StorageClass。persistence.size=1Gi:每个 Redis 节点的存储大小。password=password:设置 Redis 密码。image.repository和image.tag:指定 Redis 镜像。
4. 部署 Redis-cluster-proxy
Redis-cluster-proxy 用于解决 Redis 集群的 MOVED 和 ASK 问题,并提供统一的访问入口。
4.1 下载源码
克隆 Redis-cluster-proxy 源码:
4.2 创建 Dockerfile
创建 Dockerfile,内容如下:
# 使用官方的 Ubuntu 作为基础镜像
FROM ubuntu:22.04
# 安装编译依赖
RUN apt-get update && apt-get install -y \
build-essential \
gcc-11 \
g++-11 \
libssl-dev \
libhiredis-dev \
git \
&& rm -rf /var/lib/apt/lists/*
# 设置 GCC 11 为默认编译器
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 \
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
# 复制本地 redis-cluster-proxy 源码到镜像中
COPY . /redis-cluster-proxy
# 设置工作目录
WORKDIR /redis-cluster-proxy
# 构建 redis-cluster-proxy
RUN make CFLAGS="-fPIC -std=c11"
# 将可执行文件复制到 /usr/local/bin
RUN cp ./src/redis-cluster-proxy /usr/local/bin/
# 设置环境变量默认值
ENV PROXY_PORT="7777" \
PROXY_BIND="0.0.0.0" \
CLUSTER_NODES="redis-cluster.default.svc.cluster.local:6379" \ # Redis 集群地址
CLUSTER_PASSWORD="zsfund" \ # Redis 集群密码
THREADS="8" \
MAX_CLIENTS="10000"
# 暴露代理端口
EXPOSE 7777
# 设置默认启动命令
CMD exec redis-cluster-proxy \
--port ${PROXY_PORT} \
--bind ${PROXY_BIND} \
--threads ${THREADS} \
--maxclients ${MAX_CLIENTS} \
--auth ${CLUSTER_PASSWORD} \
${CLUSTER_NODES} \
"$@"
4.3 生成镜像
构建 Docker 镜像:
4.4 修改源码
根据需求修改源码(如支持认证等),参考:PR #98。
4.5 创建 YAML 文件
创建 redis-cluster-proxy.yaml,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-cluster-proxy
spec:
replicas: 1
selector:
matchLabels:
app: redis-cluster-proxy
template:
metadata:
labels:
app: redis-cluster-proxy
spec:
containers:
- name: redis-cluster-proxy
image: redis-cluster-proxy:latest
imagePullPolicy: IfNotPresent
env:
- name: CLUSTER_NODES
value: "redis-cluster.default.svc.cluster.local:6379" # Redis 集群地址
- name: CLUSTER_PASSWORD
value: "zsfund" # Redis 集群密码
ports:
- containerPort: 7777
---
apiVersion: v1
kind: Service
metadata:
name: redis-cluster-proxy
spec:
type: NodePort
selector:
app: redis-cluster-proxy
ports:
- protocol: TCP
port: 7777
targetPort: 7777
nodePort: 31777 # 外部访问端口
运行 YAML 文件:
5. 验证部署
5.1 检查服务状态
确保所有服务正常运行:
5.2 外部访问
通过 NodePort 访问 Redis-cluster-proxy:
5.3 使用客户端工具
使用 Redis 客户端工具(如 redis-cli)连接 Redis-cluster-proxy:
helm部署redis集群的更多相关文章
- window下使用Redis Cluster部署Redis集群
日常的项目很多时候都需要用到缓存.redis算是一个比较好的选择.一般情况下做一个主从就可以满足一些比较小的项目需要.在一些并发量比较大的项目可能就需要用到集群了,redis在Windows下做集群可 ...
- laravel项目利用twemproxy部署redis集群的完整步骤
Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数.下面这篇文章主要给大家介绍了关于laravel项目利用twemproxy部署redis集群的相关资 ...
- Redis笔记 -- 在 Centos7.4单机中部署Redis集群(二)
0x00--背景和目的 在单台PC服务器上部署Redis集群,通过不同的TCP端口启动多实例,模拟多台独立PC组成集群. 0x01--环境描述: Centos版本:CentOS Linux relea ...
- Centos6.6部署Redis集群
Centos6.6部署Redis集群 1环境准备 1环境安装redis 1安装ruby 2配置redis主从环境 3部署redis sentinel服务器 5集群使用 13当前集群环境说明 13测试功 ...
- Centos7部署Redis集群
Redis简介 Redis(Remote Dictionary Server)是完全开源的.遵守BSD协议的.高性能的Key-Value数据库. Redis与其他Key-Value缓存产品有一下三个特 ...
- 在 Kubernetes 中部署 Redis 集群
在 Kubernetes 中部署 Redis 集群 在Kubernetes中部署Redis集群面临挑战,因为每个 Redis 实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此,我们需 ...
- CentOS下部署Redis集群
一.部署环境 服务器三台: 10.10.15.41(配置运行两个实例,端口:6379,6380) 10.10.15.42(配置运行两个实例,端口:6381,6382) 10.10.15.43(配置运行 ...
- 利用docker部署redis集群
目录 一.首先配置redis.conf文件,... 1 1.获取配置文件... 1 2.修改各配置文件的参数... 2 二.下载redis镜像.启动容器... 2 1.创建网络... 2 2.拉取镜像 ...
- 单个机器部署redis集群模式(一键部署脚本)
一.检查机器是否安装gcc.unzip.wget 二.部署模式 #模式1: 将所有主从节点以及sentinel节点部署在同一台机器上 #模式2: 将一个数据节点和一个sentinel节点部署在一台机器 ...
- 部署redis集群
1.redis部署 redis单实例部署参考:https://www.cnblogs.com/silgen/p/16537299.html 版本:6.2.7 集群:6个节点(redis集群至少3个节点 ...
随机推荐
- Smalltalk 和 VB
在水木看到一个帖为什么 Smalltalk 没落了?,提到两篇好文: http://www.wirfs-brock.com/allen/posts/914 https://gbracha.blogsp ...
- postgresql序列重复问题处理
问题 在执行数据插入时,postgresql 提示more than one owned sequence found错误.这个和之前文章中写的序列编号错乱不同,是由数据表的一个列生成了多个序列导致的 ...
- TypeNameExtractor could not be found
TypeNameExtractor could not be foundException 一.注意: 如果项目中使用了 knif4j或swagger (knif4j内核中就使用了swagger) 项 ...
- CentOS中升级openssl与卸载重装以及提示:error while loading shared libraries: libssl.so.1.1: cannot open shared obje
场景 在CentOS6中安装sqlserver时提示: Requires:openssl >=1:1.0.1g 所以需要对openssl进行升级 可以通过 openssl version -a ...
- 加入security+jwt安全策略
Pom中引入 <!-- security --> <dependency> <groupId>org.springframework.boot</groupI ...
- IPV6禁用导致 RabbitMQ 无法启动的问题
问题现象 在开发的过程中遇到了 RabbitMQ 怎么也启动不起来的现象.查看 RabbitMQ 自身的启动日志,并没有发现有什么有用的报错信息,只是从某天开始就一直在打印重启的日志,尝试多次重启也不 ...
- [转]基于 Node.js 实现前后端分离
为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了"前后端"的定义,引入前端同学都熟悉的No ...
- 在Win7 x64环境中将World Wind Java SDK 2.1.0嵌入到Eclipse中的方法
1.解压worldwind-2.1.0.zip. 2.打开Eclipse,依次点击New–>Java project ,输入project的名称WorldWind,一路直到finish.然后就可 ...
- 跟着源码学IM(十):基于Netty,搭建高性能IM集群(含技术思路+源码)
本文原题"搭建高性能的IM系统",作者"刘莅",内容有修订和改动.为了尊重原创,如需转载,请联系作者获得授权. 1.引言 相信很多朋友对微信.QQ等聊天软件的实 ...
- 2024新版本如何配置CLion与cubeMX开发STM32
2024新版本如何配置CLion与cubeMX开发STM32 1. 为什么我要在网上有很多教程的情况下再做一个新版 各种大佬们给出的配置教程原本很详细,但是在时间过了这么久之后已经不完全符合现在的环境 ...