Hyperf项目基于Docker Swarm的集群部署实战指南
前言
在现代PHP开发中,Hyperf作为高性能的协程框架越来越受到开发者青睐。而Docker Swarm作为轻量级的容器编排工具,非常适合中小型团队快速搭建集群环境。本文将详细介绍如何为Hyperf项目搭建完整的Docker Swarm集群环境。
基础环境准备
Docker安装与配置
在所有节点上安装Docker是第一步:
curl -sSL https://get.docker.com/ | sh
修改Docker服务配置,允许TCP连接:
vim /lib/systemd/system/docker.service
# 在ExecStart行末尾添加 -H tcp://0.0.0.0:2375
配置国内镜像加速(以阿里云为例):
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
非root用户权限配置
为普通用户添加Docker权限:
usermod -aG docker $USER
GitLab环境搭建
调整SSH端口
为GitLab预留22端口:
vim /etc/ssh/sshd_config
# 修改Port为2222
systemctl restart sshd
启动GitLab容器
docker run -d --hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab --restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
GitLab Runner安装与配置
yum install gitlab-runner
gitlab-runner register
# 按提示输入GitLab地址、token等信息
Docker Swarm集群搭建
初始化Swarm
在管理节点执行:
docker swarm init
网络配置
创建自定义Overlay网络:
docker network create \
--driver overlay \
--subnet 10.0.0.1/8 \
--opt encrypted \
--attachable \
default-network
节点加入集群
在其他节点执行管理节点提供的加入命令:
docker swarm join --token <token> <manager-ip>:2377
Hyperf项目部署实践
项目配置示例
.gitlab-ci.yml
关键配置:
variables:
PROJECT_NAME: hyperf-demo
REGISTRY_URL: registry.cn-shanghai.aliyuncs.com/your-namespace
deploy.yml
部署配置:
version: '3.7'
services:
hyperf-demo:
image: $REGISTRY_URL/$PROJECT_NAME:latest
ports:
- "9501:9501"
deploy:
replicas: 3
restart_policy:
condition: on-failure
networks:
- default-network
部署流程
- 构建并推送镜像
- 在Swarm管理节点执行部署
- 验证服务可用性
高级配置与优化
Kong API网关部署
# 数据库
docker run -d --name kong-database \
--network=default-network \
-e "POSTGRES_USER=kong" \
postgres:9.6
# Kong服务
docker run -d --name kong \
--network=default-network \
-e "KONG_DATABASE=postgres" \
-p 8000:8000 \
kong:latest
内核参数优化
sysctls:
- net.ipv4.vs.conn_reuse_mode=0
- net.ipv4.vs.expire_nodest_conn=1
常见问题解决
- Git版本问题:更新Git到最新版解决
expected shallow list
错误 - IP不足问题:调整网络子网配置增加可用IP
- 服务更新失败:使用
--with-registry-auth
参数更新服务
总结
通过本文的指导,您应该能够:
- 搭建完整的GitLab CI/CD环境
- 配置Docker Swarm集群
- 部署Hyperf应用到集群环境
- 实现基本的服务编排和负载均衡
- 处理常见的部署问题
这种架构特别适合中小型团队快速搭建高可用的Hyperf微服务环境,结合Docker Swarm的轻量级特性和Hyperf的高性能,能够为业务提供稳定可靠的技术支撑。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考