Hyperf项目Docker Swarm集群部署实战指南

Hyperf项目Docker Swarm集群部署实战指南

hyperf 🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease. hyperf 项目地址: https://gitcode.com/gh_mirrors/hy/hyperf

前言

在现代微服务架构中,容器化部署已成为主流方案。本文将详细介绍如何基于Hyperf框架和Docker Swarm构建高可用的微服务集群环境。通过本教程,您将掌握从基础环境搭建到服务部署的全流程实践。

基础环境准备

Docker安装与配置

在所有集群节点上执行以下步骤:

# 安装Docker
curl -sSL https://get.docker.com/ | sh

# 配置Docker远程访问
vim /lib/systemd/system/docker.service
# 修改ExecStart行,添加 -H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

# 非root用户免sudo执行docker
usermod -aG docker $USER

# 配置镜像源(以阿里云为例)
echo '{"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json
systemctl restart docker

SSH端口调整(可选)

如果计划使用Gitlab服务,建议修改默认SSH端口:

vim /etc/ssh/sshd_config
# 将Port改为2222
Port 2222

systemctl restart sshd.service

Gitlab服务部署

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

初始密码获取:

docker exec gitlab cat /etc/gitlab/initial_root_password

Gitlab Runner安装与配置

# 安装
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
yum install gitlab-runner

# 注册Runner
gitlab-runner register \
  --non-interactive \
  --url "http://gitlab.example.com/" \
  --registration-token "YOUR_TOKEN" \
  --executor "shell" \
  --description "builder-runner" \
  --tag-list "builder" \
  --run-untagged="true" \
  --locked="false"

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 <manager-token> <ip>:2377

# 工作节点加入 
docker swarm join --token <worker-token> <ip>:2377

Hyperf项目部署实践

项目配置示例

.gitlab-ci.yml关键配置:

variables:
  PROJECT_NAME: demo
  REGISTRY_URL: registry.cn-shanghai.aliyuncs.com/test_namespace

deploy.test.yml服务定义:

version: '3.7'
services:
  demo:
    image: $REGISTRY_URL/$PROJECT_NAME:test
    environment:
      - "APP_PROJECT=demo"
      - "APP_ENV=test"
    ports:
      - 9501:9501
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      update_config:
        parallelism: 2
    networks:
      - default-network
    configs:
      - source: demo_v1.0
        target: /opt/www/.env

环境变量配置

在Portainer中创建Config demo_v1.0,内容示例:

APP_NAME=demo

DB_DRIVER=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=hyperf
DB_USERNAME=root
DB_PASSWORD=your_password

服务部署与更新

# 首次部署
docker stack deploy -c deploy.yml --with-registry-auth hyperf_demo

# 更新服务
docker service update --with-registry-auth hyperf_demo_demo

集群增强组件

Portainer管理界面

docker service create \
    --name portainer \
    --publish 9000:9000 \
    --constraint 'node.role == manager' \
    --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
    portainer/portainer

Kong API网关

# 数据库
docker run -d --name kong-database \
  --network=default-network \
  -e "POSTGRES_USER=kong" \
  -e "POSTGRES_DB=kong" \
  postgres:9.6

# 网关服务
docker run -d --name kong \
  --network=default-network \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  -p 8000:8000 \
  -p 8443:8443 \
  kong:latest

性能优化建议

内核参数调优

# 网络连接复用优化
sysctls:
  - net.ipv4.vs.conn_reuse_mode=0
  - net.ipv4.vs.expire_nodest_conn=1

容器调度策略

deploy:
  placement:
    constraints:
      - node.role == worker
      - engine.labels.arch == x86_64
  resources:
    limits:
      cpus: '0.50'
      memory: 512M

常见问题解决

  1. IP不足导致服务异常

    • 解决方案:扩展网络IP范围或创建新的Overlay网络
  2. Git版本兼容性问题

    curl https://setup.ius.io | sh
    yum -y install git2u
    
  3. 服务更新失败

    docker service update --with-registry-auth service_name
    

结语

通过本文的实践指南,您已经掌握了基于Hyperf框架和Docker Swarm构建生产级微服务集群的核心技术。在实际应用中,建议根据业务需求调整副本数量、资源限制等参数,并建立完善的监控告警系统,确保服务稳定运行。

hyperf 🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease. hyperf 项目地址: https://gitcode.com/gh_mirrors/hy/hyperf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凯润

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值