### Codis 3.0.3 环境搭建详细指南
#### 一、基础知识与环境准备
**1.1 环境架构**
- **服务器列表:**
- 三台服务器:`192.168.33.6`、`192.168.33.19`、`192.168.33.7`
- ZooKeeper 节点:`zk1`、`zk2`、`zk3`
- Codis 组件:
- `codis-dashboard`
- `codis-fe`
- `codis-ha`
- 代理服务:`codis-proxy1`、`codis-proxy2`、`codis-proxy3`
- 主从复制组:`codis_group1_M(6379)`、`codis_group2_M(6379)`、`codis_group3_M(6379)`
- 备份服务:`codis_group3_S(6380)`、`codis_group1_S(6380)`、`codis_group2_S(6380)`
- **软件版本:**
- Codis 版本:3.0.3
- Go 版本:1.6
- JDK 版本:1.7.0_71
- ZooKeeper 版本:3.4.8
**1.2 Codis 组件概述**
- **Codis Server:** 基于 Redis 2.8.21 分支开发,增加了额外的数据结构以支持 slot 操作和数据迁移。
- **Codis Proxy:** 客户端连接的 Redis 代理服务,实现 Redis 协议,可以部署多个实例以提高性能和容错能力。
- **Codis Dashboard:** 集群管理工具,支持组件的添加、删除及数据迁移等操作,确保集群状态一致性。
- **Codis Admin:** 命令行工具,用于控制 Codis Proxy 和 Codis Dashboard 的状态以及访问外部存储。
- **Codis FE:** 集群管理界面,支持多个集群实例共享同一前端展示页面。
- **Codis HA:** 提供高可用性支持,依赖 Codis Dashboard 实例,根据集群状态自动生成主从切换策略。
#### 二、相关组件安装配置
**2.1 内核参数调整**
- 编辑 `/etc/sysctl.conf` 文件,添加以下内容:
```bash
vm.overcommit_memory=1
```
- 执行命令使更改立即生效:
```bash
sysctl vm.overcommit_memory=1
```
**2.2 配置 Transparent Huge Pages**
- 手动禁用 Transparent Huge Pages (THP),避免 Redis 在进行 background save 时出现内存不足的情况:
```bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
```
- 将禁用 THP 的命令添加到 `/etc/rc.local` 文件中,确保每次重启后都能自动禁用 THP。
**2.3 Codis 3.0.3 安装**
- 下载 Codis 3.0.3 版本:
```bash
wget https://github.com/CodisLabs/codis/archive/3.0.3.zip
```
- 解压文件并进入目录:
```bash
unzip 3.0.3.zip
cd codis-3.0.3
```
- 安装 Go 1.6:
```bash
wget http://www.golangtc.com/download/go1.6.linux-amd64.tar.gz
tar -xvf go1.6.linux-amd64.tar.gz
```
- 设置环境变量:
```bash
export PATH=$PATH:/path/to/go/bin
```
- 构建 Codis:
```bash
make
```
**2.4 ZooKeeper 安装**
- 下载 ZooKeeper 3.4.8:
```bash
wget http://mirror.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
```
- 解压并配置:
```bash
tar -xvf zookeeper-3.4.8.tar.gz
cd zookeeper-3.4.8
cp conf/zoo_sample.cfg conf/zoo.cfg
# 在 zoo.cfg 文件中配置服务器列表
```
**2.5 Codis 组件部署**
- **Codis Dashboard:**
- 配置文件设置,如 zk 地址等。
- 启动服务。
- **Codis Proxy:**
- 配置文件设置,包括 zk 地址和 dashboard 地址。
- 启动服务。
- **Codis Server:**
- 部署到各服务器上。
- 配置文件设置,如 port 和 bind 等。
- 启动服务。
- **Codis FE:**
- 配置文件设置,指定 dashboard 列表。
- 启动服务。
- **Codis HA:**
- 配置文件设置,指定 zk 地址。
- 启动服务。
**2.6 存储后端配置**
- 使用 ZooKeeper 作为存储后端:
- 在 Codis Dashboard 中配置 ZooKeeper 地址。
- 在 Codis Admin 中使用相应的命令来操作存储。
#### 总结
以上步骤详细介绍了如何在三台服务器上搭建完整的 Codis 3.0.3 环境,包括必要的内核参数调整、组件安装和配置。通过这些步骤,您可以构建一个高可用且可扩展的 Redis 集群系统。在整个过程中,请确保遵循官方文档中的指导,特别是在组件配置和启动方面,以确保系统的稳定性和可靠性。