Skip to content

实施部署规范

CloudOS 部署流程

部署前检查

bash
#!/bin/bash
# pre-deploy-check.sh:部署前环境检查脚本

echo "=== CloudOS 部署前检查 ==="

# 1. 检查 CPU 虚拟化支持
echo -n "CPU 虚拟化支持: "
if grep -E 'vmx|svm' /proc/cpuinfo > /dev/null; then
    echo "✅ 支持"
else
    echo "❌ 不支持,请在 BIOS 中开启 VT-x/AMD-V"
fi

# 2. 检查内存大小
TOTAL_MEM=$(free -g | awk '/^Mem:/{print $2}')
echo -n "内存大小: ${TOTAL_MEM}GB "
if [ $TOTAL_MEM -ge 64 ]; then
    echo "✅"
else
    echo "❌ 建议至少 64GB"
fi

# 3. 检查磁盘空间
echo -n "系统盘空间: "
ROOT_FREE=$(df -BG / | awk 'NR==2{print $4}' | tr -d 'G')
if [ $ROOT_FREE -ge 100 ]; then
    echo "✅ ${ROOT_FREE}GB 可用"
else
    echo "❌ 可用空间不足,建议至少 100GB"
fi

# 4. 检查网络连通性
echo -n "管理网络连通性: "
if ping -c 1 -W 2 10.0.0.1 > /dev/null 2>&1; then
    echo "✅"
else
    echo "❌ 无法连接管理网关"
fi

# 5. 检查 NTP 同步
echo -n "NTP 时间同步: "
if chronyc tracking | grep -q "Leap status.*Normal"; then
    echo "✅"
else
    echo "⚠️  NTP 未同步,请检查 chrony 配置"
fi

# 6. 检查 SELinux 状态
echo -n "SELinux 状态: "
SELINUX_STATUS=$(getenforce)
if [ "$SELINUX_STATUS" = "Disabled" ]; then
    echo "✅ 已关闭"
else
    echo "⚠️  当前状态: $SELINUX_STATUS,建议关闭"
fi

echo "=== 检查完成 ==="

管理节点部署

bash
# 1. 安装 CloudOS 部署工具
rpm -ivh cloudos-installer-7.x.rpm

# 2. 配置部署参数
cat > /etc/cloudos/deploy.conf << 'EOF'
# 管理节点 VIP
MANAGEMENT_VIP=10.0.0.100

# 管理节点列表
MANAGEMENT_NODES=(
    "10.0.0.11"
    "10.0.0.12"
    "10.0.0.13"
)

# 数据库密码
DB_PASSWORD="CloudOS@2024"

# RabbitMQ 密码
MQ_PASSWORD="CloudOS@2024"

# 管理员密码
ADMIN_PASSWORD="Admin@2024"

# 网络配置
MANAGEMENT_INTERFACE="eth0"
BUSINESS_INTERFACE="eth1"
STORAGE_INTERFACE="eth2"
EOF

# 3. 执行部署
cloudos-installer deploy --config /etc/cloudos/deploy.conf

# 4. 验证部署
cloudos-installer verify

# 5. 访问管理界面
echo "CloudOS 管理界面: https://10.0.0.100:8080"
echo "用户名: admin"
echo "密码: Admin@2024"

计算节点添加

bash
# 在管理节点上执行
# 添加计算节点
cloudos-node add \
    --host 10.0.1.11 \
    --username root \
    --password "Node@2024" \
    --role compute

# 批量添加计算节点
for ip in 10.0.1.{11..30}; do
    cloudos-node add \
        --host $ip \
        --username root \
        --password "Node@2024" \
        --role compute
    echo "添加节点 $ip 完成"
done

# 验证节点状态
openstack compute service list

Ceph 存储部署

Ceph 集群初始化

bash
# 使用 cephadm 部署 Ceph(推荐方式)

# 1. 安装 cephadm
curl --silent --remote-name --location \
    https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm
./cephadm install

# 2. 初始化集群(在第一个 MON 节点执行)
cephadm bootstrap \
    --mon-ip 10.0.2.11 \
    --cluster-network 10.0.2.0/24 \
    --initial-dashboard-user admin \
    --initial-dashboard-password Admin@2024

# 3. 添加其他 MON 节点
ceph orch host add storage02 10.0.2.12
ceph orch host add storage03 10.0.2.13

# 4. 部署 MON 到所有存储节点
ceph orch apply mon --placement="storage01,storage02,storage03"

# 5. 添加 OSD(自动发现所有可用磁盘)
ceph orch apply osd --all-available-devices

# 6. 验证集群状态
ceph status
ceph osd tree

创建存储池

bash
# 为 CloudOS 创建存储池
# 计算 PG 数量:每个 OSD 约 100 个 PG
# 18 个 OSD → 每个池 256 PG(取 2 的幂次)

# VM 系统盘池
ceph osd pool create vms 256 256
rbd pool init vms

# 数据卷池
ceph osd pool create volumes 256 256
rbd pool init volumes

# 镜像池
ceph osd pool create images 128 128
rbd pool init images

# 设置副本数
for pool in vms volumes images; do
    ceph osd pool set $pool size 3
    ceph osd pool set $pool min_size 2
done

# 创建 CloudOS 访问账号
ceph auth get-or-create client.cloudos \
    mon 'profile rbd' \
    osd 'profile rbd pool=vms, profile rbd pool=volumes, profile rbd pool=images' \
    mgr 'profile rbd' \
    > /etc/ceph/ceph.client.cloudos.keyring

# 验证
ceph df
rados bench -p vms 30 write --no-cleanup

网络配置

OVS 网络配置

bash
# 安装 OVS
yum install -y openvswitch
systemctl enable openvswitch
systemctl start openvswitch

# 创建网桥
ovs-vsctl add-br br-int    # 内部网桥(VM 流量)
ovs-vsctl add-br br-ex     # 外部网桥(浮动 IP)

# 将物理网卡加入外部网桥
ovs-vsctl add-port br-ex eth1

# 配置 VxLAN 隧道(自动由 Neutron 管理)
# 手动测试 VxLAN 连通性
ovs-vsctl add-port br-int vxlan-test \
    -- set interface vxlan-test \
    type=vxlan \
    options:remote_ip=10.0.1.12 \
    options:key=1001

# 验证
ovs-vsctl show
ovs-ofctl dump-flows br-int

部署验证

端到端功能验证

bash
#!/bin/bash
# e2e-verify.sh:端到端功能验证

echo "=== CloudOS 端到端验证 ==="

# 1. 创建测试网络
openstack network create test-net
openstack subnet create test-subnet \
    --network test-net \
    --subnet-range 192.168.100.0/24 \
    --dns-nameserver 8.8.8.8

# 2. 创建安全组
openstack security group create test-sg
openstack security group rule create test-sg \
    --protocol icmp --remote-ip 0.0.0.0/0
openstack security group rule create test-sg \
    --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0

# 3. 创建 VM
openstack server create \
    --flavor c1.medium \
    --image CentOS-7.9 \
    --network test-net \
    --security-group test-sg \
    --key-name test-key \
    test-vm-01

# 4. 等待 VM 启动
echo "等待 VM 启动..."
openstack server wait test-vm-01 --wait

# 5. 分配浮动 IP
FLOATING_IP=$(openstack floating ip create external-net -f value -c floating_ip_address)
openstack server add floating ip test-vm-01 $FLOATING_IP

# 6. 测试连通性
echo -n "测试 VM 连通性: "
if ping -c 3 -W 5 $FLOATING_IP > /dev/null 2>&1; then
    echo "✅ 可达"
else
    echo "❌ 不可达"
fi

# 7. 测试 SSH
echo -n "测试 SSH 连接: "
if ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no \
    -i test-key.pem centos@$FLOATING_IP "echo ok" > /dev/null 2>&1; then
    echo "✅ 成功"
else
    echo "❌ 失败"
fi

# 8. 清理测试资源
openstack server delete test-vm-01
openstack floating ip delete $FLOATING_IP
openstack network delete test-net

echo "=== 验证完成 ==="

褚成志的云与计算笔记