混合云架构搭建统一管理方案,零基础从选型到落地全流程
为什么要搞混合云统一管理?
混合云指同时使用公有云(如阿里云、腾讯云、AWS)和私有云(如OpenStack、VMware)的环境。
很多公司业务初期只用公有云,后来为了合规或成本,又上了私有云。
结果两个云独立管理:账号不同、监控分开、部署流程断裂,运维效率极低。
统一管理就是解决“两套班子、两套系统”的痛点。
本文从零开始,帮你搭出一套能同时控制两个云的控制平面。
第一步:环境准备与网络打通
你需要的东西:
- 一台能访问互联网的Linux机器(做跳板机或管理节点)。
- 公有云账号(阿里云国际或国内版)和私有云管理节点IP。
- 已创建至少一个VPC(公有云)和一个虚拟网络(私有云)。
网络互通是基础。 推荐用IPSec VPN。
以阿里云和本地OpenStack为例:
- 在阿里云控制台创建VPN网关和用户网关(填入本地公网IP)。
- 本地OpenStack节点安装strongSwan:
sudo apt update && sudo apt install strongswan strongswan-pki -y
- 配置
/etc/ipsec.conf,示例:
conn aliyun-to-local
left=本地私网IP
leftsubnet=192.168.0.0/16
right=VPN网关公网IP
rightsubnet=10.0.0.0/8
authby=secret
auto=start
- 在
/etc/ipsec.secrets写入预共享密钥,重启服务后路由表加入对应条目。
测试:在本地机器ping一下阿里云内网IP,通就代表隧道建好了。
第二步:统一身份认证——一个账户登录两个云
用LDAP做中央身份源。
推荐FreeIPA或OpenLDAP。
- 部署LDAP服务器(可用Docker快速搭建):
docker run --name openldap -p 389:389 -p 636:636 \
-e LDAP_ORGANISATION=MyCompany \
-e LDAP_DOMAIN=example.com \
-e LDAP_ADMIN_PASSWORD=admin123 \
-d osixia/openldap
- 公有云(如阿里云RAM)配置LDAP对接:在RAM控制台选择“身份提供商”->“LDAP”填入服务器地址和绑定DN。
- 私有云(如OpenStack Keystone)也配置LDAP后端:修改
/etc/keystone/keystone.conf,指定driver = ldap,填好连接参数。 - 创建测试用户:通过LDAP管理工具(如phpLDAPadmin)添加一个用户,登录两个云的控制台都能成功。
避坑: LDAP超时问题——把连接超时设为5秒以上,否则大规模用户同步会出错。
第三步:资源统一编排——一个脚本管两个云
用Terraform,编写一份配置同时操作公有云(阿里云)和私有云(OpenStack)。
- 安装Terraform(v1.6+):
wget https://releases.hashicorp.com/terraform/1.6.6/terraform_1.6.6_linux_amd64.zip
unzip terraform_1.6.6_linux_amd64.zip && sudo mv terraform /usr/local/bin/
- 创建目录
hybrid-cloud,写main.tf:
# 阿里云
provider "alicloud" {
region = "cn-hangzhou"
}
# OpenStack
provider "openstack" {
auth_url = "http://192.168.1.10:5000/v3"
tenant_name = "admin"
user_name = "admin"
password = "pass"
}
resource "alicloud_instance" "web" {
instance_type = "ecs.g6.large"
image_id = "centos_7_9_x64_20G_alibase_20231024.vhd"
count = 1
}
resource "openstack_compute_instance_v2" "web" {
name = "web-server"
image_name = "CentOS-7-x86_64-GenericCloud"
flavor_name = "m1.small"
count = 2
}
- 执行
terraform init && terraform apply,自动在两个云创建虚拟机。
避坑: 不同云的同类型资源命名冲突?
在Terraform里用模块和变量隔离环境。
第四步:统一监控告警——一个面板看两个云
Prometheus + Grafana是最常用的开源组合。
- 在管理节点搭建Prometheus:
docker run -d --name prometheus -p 9090:9090 prom/prometheus
- 在每个云内安装node_exporter暴露指标。阿里云ECS上:
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-linux-amd64.tar.gz
tar xzf node_exporter*.tar.gz && cd node_exporter*/ && ./node_exporter &
- 修改Prometheus配置
/etc/prometheus/prometheus.yml,添加两个云的目标IP:
scrape_configs:
- job_name: 'aliyun'
static_configs:
- targets: ['10.0.1.10:9100'] # 阿里云内网IP
- job_name: 'openstack'
static_configs:
- targets: ['192.168.1.20:9100'] # 私有云IP
- 重启Prometheus。在Grafana中添加Prometheus数据源,导入Linux系统监控模板,就能在同一个看板上看到两个云的CPU、内存趋势。
效果验证与高频问题
验证方法:
- 网络:从管理节点同时连接两个云的SSH,用时正常。
- 身份:用LDAP用户登录两个云控制台,权限一致。
- 编排:
terraform destroy能同时删除两个云的资源。 - 监控:Grafana面板显示两个云的实例都在线。
高频问题:
- Q:VPN断连怎么办? A:在两边配置健康检查和自动重连,把
dpdaction=restart加到ipsec.conf。 - Q:Terraform报错“provider not found”? A:运行
terraform providers mirror下载插件。 - Q:LDAP用户登录OpenStack失败? A:检查Keystone域映射,确保用户属于同一个域。
最后几件事
如果你正在处理混合云架构搭建统一管理方案,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
混合云统一管理不是一次性工程,后续可以通过Ansible做配置管理、通过日志中心(ELK)做日志聚合,逐步搭建完整的运维中台。