Manba项目环境搭建与组件部署指南
manba HTTP API Gateway 项目地址: https://gitcode.com/gh_mirrors/ma/manba
前言
Manba是一个高性能的API网关系统,提供API管理、流量控制、服务发现等核心功能。本文将详细介绍如何从零开始搭建Manba的运行环境,包括依赖组件准备、源码编译方法以及核心组件的部署配置。
环境准备
存储组件:Etcd
Manba使用Etcd作为元数据存储中心,因此在部署前需要搭建Etcd集群环境。建议使用Etcd 3.x版本,并配置3节点或5节点集群以保证高可用性。
Etcd集群部署注意事项:
- 节点间网络延迟应控制在合理范围内
- 配置适当的存储配额和自动压缩策略
- 设置合理的客户端连接数和请求超时时间
开发环境:Golang
如需从源码编译Manba,需要准备Golang开发环境:
- 必须使用Go 1.11或更高版本
- 配置正确的GOPATH环境变量
- 建议安装最新稳定版本的Go工具链
源码编译指南
Manba提供了完善的Makefile构建脚本,支持多种编译场景:
基础编译命令
# 编译当前系统架构的二进制文件
make release_version='1.0.0'
跨平台编译
# Linux平台
make release release_version='1.0.0'
# MacOS平台
make release_darwin release_version='1.0.0'
Docker镜像构建
Manba支持构建完整的Docker镜像,也支持按需构建特定组件:
# 完整镜像(包含所有组件)
make docker release_version='1.0.0'
# 仅构建Proxy组件
make docker release_version='1.0.0' with=proxy
# 构建API Server和UI
make docker release_version='1.0.0' with=apiserver
Manba核心组件详解
ApiServer组件
ApiServer是Manba的管理中枢,提供GRPC接口用于元数据管理。
关键启动参数说明:
addr
: 服务监听地址,默认127.0.0.1:9091addr-store
: Etcd连接地址,支持多节点配置namespace
: 环境隔离命名空间discovery
: 是否启用服务发现
典型启动命令:
./manba-apiserver \
--addr=192.168.1.203:9091 \
--addr-store="etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379" \
--discovery \
--namespace=prod
Proxy组件
Proxy是API流量入口,负责请求转发和负载均衡。
重要配置参数:
addr
: HTTP服务监听地址addr-rpc
: 管理接口地址addr-store
: Etcd连接地址namespace
: 必须与ApiServer保持一致limit-*
系列参数:各种资源限制配置
性能优化建议:
- 根据实际流量调整
limit-conn
连接数限制 - 合理设置
limit-timeout-read/write
超时时间 - 配置适当的缓冲区大小(
limit-buf-*
)
生产环境部署示例
集群规划
| 角色 | IP地址 | 说明 | |-------------|--------------------|---------------------| | Etcd节点1 | 192.168.1.100 | 存储集群成员 | | Etcd节点2 | 192.168.1.101 | 存储集群成员 | | Etcd节点3 | 192.168.1.102 | 存储集群成员 | | Proxy节点1 | 192.168.1.200 | API流量入口 | | Proxy节点2 | 192.168.1.201 | API流量入口 | | Proxy节点3 | 192.168.1.202 | API流量入口 | | ApiServer | 192.168.1.203 | 管理节点 |
Proxy节点部署
三节点配置示例(注意保持namespace一致):
# 节点1
./manba-proxy \
--addr=192.168.1.200:80 \
--addr-rpc=192.168.1.200:9091 \
--addr-store="etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379" \
--namespace=prod \
--limit-conn=128 \
--limit-timeout-read=60
# 节点2
./manba-proxy \
--addr=192.168.1.201:80 \
--addr-rpc=192.168.1.201:9091 \
--addr-store="etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379" \
--namespace=prod
# 节点3
./manba-proxy \
--addr=192.168.1.202:80 \
--addr-rpc=192.168.1.202:9091 \
--addr-store="etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379" \
--namespace=prod
ApiServer部署
./manba-apiserver \
--addr=192.168.1.203:9091 \
--addr-store="etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379" \
--discovery \
--namespace=prod \
--log-level=debug
运维建议
- 监控配置:建议对Proxy节点的连接数、请求延迟等关键指标进行监控
- 日志收集:配置统一的日志收集系统,特别是crash日志
- 灰度发布:修改重要配置时,建议逐个节点重启验证
- 容量规划:根据业务量预估合理配置Proxy节点数量
通过以上步骤,您已经完成了Manba系统的完整部署。后续可以通过ApiServer提供的接口进行API路由配置和管理。
manba HTTP API Gateway 项目地址: https://gitcode.com/gh_mirrors/ma/manba
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考